4.2.4 Подключение к серверу MySQL с помощью командных опций
В этом разделе описывается использование командных опций для указания способов установления подключений к серверу MySQL для таких клиентов, как mysql или mysqldump. Дополнительную информацию в случае проблем с подключением см. в разделе 6.2.17, «Устранение неполадок при подключении к MySQL».
Для подключения программы-клиента к серверу MySQL необходимы корректные параметры подключения, такие как имя хоста, на котором работает сервер, имя пользователя и пароль вашей учетной записи MySQL. Каждый параметр подключения имеет значение по умолчанию, но вы можете переопределить значения по умолчанию, если необходимо, используя параметры программы, указанные либо в командной строке, либо в файле параметров.
В примерах здесь используется программа-клиент mysql, но принципы применимы и к другим клиентам, таким как mysqldump, mysqladmin или mysqlshow.
Эта команда вызывает mysql без указания каких-либо явных параметров подключения:
mysql
Поскольку нет параметров, применяются значения по умолчанию:
Имя хоста по умолчанию —
localhost. В Unix это имеет специальное значение, как описано позже.Имя пользователя по умолчанию —
ODBCв Windows или ваше имя пользователя в Unix.Пароль не отправляется, так как не указаны ни
--password, ни-p.Для mysql, первый аргумент, не являющийся опцией, используется как имя базы данных по умолчанию. Так как такого аргумента нет, mysql не выбирает базу данных по умолчанию.
Чтобы явно указать имя хоста, имя пользователя и пароль, используйте соответствующие опции в командной строке. Для выбора базы данных по умолчанию добавьте аргумент с именем базы данных. Примеры:
mysql --host=localhost --user=myname --password=password mydb
mysql -h localhost -u myname -ppassword mydb
Для параметров пароля значение пароля является необязательным:
Если вы используете опцию
--passwordили-pи указываете значение пароля, между опцией--password=или-pи последующим паролем не должно быть пробелов.Если вы используете опции
--passwordили-p, но не указываете значение пароля, программа-клиент запросит ввод пароля. Пароль не будет отображаться при вводе. Это более безопасно, чем ввод пароля в командной строке, так как это может позволить другим пользователям на вашей системе увидеть строку пароля, выполнив команду, такую как ps. См. раздел 6.1.2.1, «Рекомендации для конечных пользователей по безопасности паролей».Чтобы явно указать, что пароля нет и что программа-клиент не должна запрашивать его, используйте опцию
--skip-password.
Как уже упоминалось, включение значения пароля в командной строке представляет собой угрозу безопасности. Чтобы избежать этой угрозы, укажите опцию --password или -p без последующего значения пароля:
mysql --host=localhost --user=myname --password mydb
mysql -h localhost -u myname -p mydb
Когда опция --password или -p используется без значения пароля, программа-клиент выводит запрос и ожидает ввода пароля. (В этих примерах mydb не интерпретируется как пароль, потому что он отделен от предыдущей опции пароля пробелом.)
На некоторых системах библиотечная функция, используемая MySQL для запроса пароля, автоматически ограничивает его восемью символами. Это ограничение является свойством системной библиотеки, а не MySQL. Внутренне MySQL не имеет ограничений на длину пароля. Чтобы обойти это ограничение на системах, подверженных ему, укажите свой пароль в файле параметров (см. раздел 4.2.2.2, «Использование файлов параметров»). Другим вариантом решения является изменение вашего пароля MySQL на значение, состоящее из восьми или менее символов, но у этого подхода есть недостаток, заключающийся в том, что короткие пароли менее безопасны.
Программы-клиенты определяют тип подключения следующим образом:
-
Если хост не указан или равен
localhost, происходит подключение к локальному хосту:В Windows клиент подключается с помощью общей памяти, если сервер был запущен с включенной системной переменной
shared_memoryдля поддержки подключений с общей памятью.-
В Unix программы MySQL обрабатывают имя хоста
localhostособым образом, скорее всего, отличающимся от того, что вы ожидаете от других сетевых программ: клиент подключается к файлу сокета Unix. Опцию--socketили переменную окруженияMYSQL_UNIX_PORTможно использовать для указания имени сокета.
В Windows, если
hostравно.(точка), или TCP/IP не включен и--socketне указан или хост пуст, клиент подключается с помощью именованной трубы, если сервер был запущен с включенной системной переменнойnamed_pipeдля поддержки подключений с именованными трубами. Если подключения с именованными трубами не поддерживаются или пользователь, производящий подключение, не является членом группы Windows, указанной системной переменнойnamed_pipe_full_access_group, возникает ошибка.В противном случае подключение использует TCP/IP.
Опция --protocol позволяет использовать определённый протокол передачи данных даже когда другие опции обычно приводят к использованию другого протокола. То есть, --protocol явно задаёт протокол передачи и переопределяет предыдущие правила, даже для localhost.
Используются или проверяются только параметры подключения, которые относятся к выбранному протоколу передачи данных. Другие параметры подключения игнорируются. Например, с опцией --host=localhost в Unix клиент пытается подключиться к локальному серверу с помощью файла сокета Unix, даже если опция --port или -P используется для указания номера порта TCP/IP.
Чтобы убедиться, что клиент устанавливает TCP/IP-соединение с локальным сервером, используйте опцию --host или -h для указания значения хоста 127.0.0.1 (вместо localhost) или IP-адреса или имени локального сервера. Вы также можете явно указать протокол передачи, даже для localhost, используя опцию --protocol=TCP. Примеры:
mysql --host=127.0.0.1
mysql --protocol=TCP
Если сервер настроен для приема подключений IPv6, клиенты могут подключаться к локальному серверу по IPv6, используя --host=::1. См. раздел 5.1.12, «Поддержка IPv6».
В Windows для принудительного использования клиентом MySQL соединения с именованной трубой укажите опцию --pipe или --protocol=PIPE, или укажите . (точку) как имя хоста. Если сервер не был запущен с включенной системной переменной named_pipe для поддержки подключений с именованными трубами или пользователь, производящий подключение, не является членом группы Windows, указанной системной переменной named_pipe_full_access_group, возникает ошибка. Используйте опцию --socket для указания имени трубы, если вы не хотите использовать имя трубы по умолчанию.
Подключения к удалённым серверам используют TCP/IP. Эта команда подключается к серверу, работающему на remote.example.com, используя номер порта по умолчанию (3306):
mysql --host=remote.example.com
Чтобы явно указать номер порта, используйте опцию --port или -P:
mysql --host=remote.example.com --port=13306
Вы также можете указать номер порта для подключений к локальному серверу. Однако, как уже отмечалось, подключения к localhost в Unix по умолчанию используют файл сокета, поэтому, если вы не принудительно устанавливаете TCP/IP-соединение, как описано ранее, любые параметры, указывающие номер порта, игнорируются.
Для этой команды программа использует файл сокета в Unix, и параметр --port игнорируется:
mysql --port=13306 --host=localhost
Чтобы использовать номер порта, необходимо принудительно установить TCP/IP-соединение. Например, запустите программу одним из следующих способов:
mysql --port=13306 --host=127.0.0.1
mysql --port=13306 --protocol=TCP
Дополнительную информацию об параметрах, которые управляют тем, как клиентские программы устанавливают соединения с сервером, см. в разделе 4.2.3 «Параметры командной строки для подключения к серверу».
Можно указать параметры подключения, не вводя их каждый раз в командной строке при запуске клиентской программы:
-
Укажите параметры подключения в разделе
[client]файла параметров. Соответствующий раздел файла может выглядеть так:[client] host=
host_nameuser=user_namepassword=passwordДля получения дополнительной информации см. раздел 4.2.2.2 «Использование файлов параметров».
-
Некоторые параметры подключения можно указать с помощью переменных среды. Примеры:
Для указания хоста для mysql используйте
MYSQL_HOST.В Windows для указания имени пользователя MySQL используйте
USER.Для указания пароля используйте
MYSQL_PWD. Однако это небезопасно; см. раздел 6.1.2.1 «Руководство для конечных пользователей по безопасности паролей».
Список поддерживаемых переменных среды см. в разделе 4.9 «Переменные окружения».
© 2025 Oracle
Licensed under the GPLv2 License.