6.2.4 Подключение к серверу MySQL с помощью командных опций
В этом разделе описывается использование командных опций для указания параметров подключения к серверу MySQL, например, для клиентов, таких как mysql или mysqldump. Сведения о подключении с помощью строк подключения в формате URI или пар «ключ-значение» для клиентов, таких как MySQL Shell, см. в разделе 6.2.5 «Подключение к серверу с помощью строк URI или пар „ключ-значение“». Дополнительная информация о проблемах подключения приведена в разделе 8.2.22 «Устранение неполадок при подключении к 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. См. раздел 8.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 не имеет никаких ограничений на длину пароля. Чтобы обойти это ограничение на системах, на которых оно действует, укажите свой пароль в файле параметров (см. раздел 6.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.
Используются или проверяются только те параметры подключения, которые относятся к выбранному протоколу передачи данных. Другие параметры подключения игнорируются. Например, в Unix с --host=localhost клиент пытается подключиться к локальному серверу с помощью файла 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. См. раздел 7.1.13 «Поддержка 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
Дополнительную информацию об опциях, которые контролируют, как клиентские программы устанавливают соединения с сервером, см. в разделе 6.2.3, «Параметры командной строки для подключения к серверу».
Возможна настройка параметров соединения без их ввода в командную строку при каждом запуске клиентской программы:
-
Укажите параметры соединения в разделе
[client]файла опций. Соответствующий раздел файла может выглядеть так:[client] host=
host_nameuser=user_namepassword=passwordДополнительную информацию см. в разделе 6.2.2.2, «Использование файлов опций».
-
Некоторые параметры соединения можно указать с помощью переменных среды. Примеры:
Для указания хоста для mysql, используйте
MYSQL_HOST.В Windows для указания имени пользователя MySQL используйте
USER.
Список поддерживаемых переменных среды см. в разделе 6.9, «Переменные среды».
© 2025 Oracle
Licensed under the GPLv2 License.