You are using an outdated browser. For a faster, safer browsing experience, upgrade for free today.

Загрузка...

Подключение к MySQL через консоль

Цель данного руководства разобраться в способах подключения к MySQL-серверу через консоль (CMD) используя утилиту mysql.exe, для данной цели используется следующее оборудование и программное обеспечение:

Железо -  Ноутбук Acer Aspire E5-573-58KB:

  • CPU - Intel Core i5 5200U @ 2.20GHz;
  • RAM - 16,0ГБ Dual-Channel DDR3 @ 798MHz.

Программное обеспечение:

  • Windows 10 версия 21H2 (сборка ОС 19044.1566);
  • Windows XP SP3;
  • VMware® Workstation 16 Pro 16.2.3 build-19376536;
  • MySQL версии 5.7 и 5.1.

В качестве первого эксперимента создадим подключение к localhost (на Windows 10) от суперпользователя root. Можно использовать клиент mysql.exe из другой версии дистрибутива для подключения.

-h, --host - указывается IP адрес или доменное имя сервера, к которому будет подключение - по умолчанию localhost. Обратите особое внимание на то, что в сокращённой форме буковка h - строчная(маленькая)! В сокращённой форме ip/имя_сервера пишется либо слитно, либо через пробел: -hlocalhost или -h localhost . В полной форме либо через пробел, либо с использованием знака "=": --host localhost или --host=localhost

-P,--port - указывается порт mysql-сервера, к которому будет подключение - по умолчанию 3306. Обратите особое внимание на то, что в сокращённой форме букавка P - заглавная! Сокращённая форма: -P3306 либо -P 3306, полная форма: --port 3306 либо --port=3306.

-u, --user - имя пользователя, например root. Сокращённая форма: -uroot или -u root, полная форма: --user root или --user=root.

-p,--password - пароль пользователя. Если пользователь создан без пароля, то данный параметр не нужно использовать. Данный параметр лучше не сопровождать паролем, т.к. его можно подсмотреть на экране. Если данный параметр используется и при этом не сопровождается паролем, то после нажатия Enter систем предложет его вам ввести:

Ввод пароля с параметром password

Данных 4-х параметров вполне достаточно для подключения к какому либо серверу. Т.к. в данных примерах я не использовал безопасное соединение(SSL), то данный способ подключения безопасен только внутри защищённой сети.

 


Пример 1-й

В данном примере рассмотрим простой вариант подключения к MySQL-серверу, который используется в составе OpenServer версии 5.4.0:

Версия OpenServer 5.4.0

соответсвенно порт по умолчанию - 3306 и в данной версии пользователь root - без пароля.

Подключание будет из-под клиента из пакета mysql-5.7.16-winx64, проверяем:


mysql -uroot

Подключение к MySQL по умолчанию

обратите внимание, что хост, порт - по умолчанию, а пароль не с используется вообще, т.к. пользователь root в данной версии OpenServer сконфигурирован без пароля. И с помощью команды \s можно посмотреть некотрые параметры MySQL.


Пример 2-й

В данном примере буду подключаться к службам MySQL версий 5.7.16 и 5.7.25, которые установлены из noinstall пакетов на портах 3307, 3308 и сконфигурированные как службы:

Службы MySQL на localhost


mysql -P 3307 -uroot -p

Подключение к службе MySQL 5.7.25

данная версия mysql(5.7.25) уже сконфиругирована с паролем для пользователя root, следовательно параметр -p необходим! И после нажания Enter был введён мой незамысловатый пароль 123

чтобы отключиться от сервера достаточно ввести команду \q и Enter:

Отключение от MySQL

теперь подключимся к другой службе MySQL(5.7.16) на порту 3308:


mysql -P 3308 -uroot -p

Подключение к MySQL 5.7.16


Пример 3-й

В данном примере будет рассмотрено подключение не к localhost, а к другому комьютеру по его IP. На виртуалке была установлена Windows XP sp3 Professional для данных целей и на ней сконфигурирован mysql-5.1.31-win32, но как службу его ставить не было необходимости поэтому запустим данный сервер с помощью параметра --console:


mysqld --defaults-file="C:\\distr\\mysql-5.1.31-win32\\my-huge.ini" --console

Запуск MySQL 5.1.31

ip виртуалки 192.168.186.128 и брандмауэр windows отключен, так что есть возможность подключиться к порту 3306

Если сразу попытаться подключиться с Windows10 на WindowsXP с помощью пользователя root, то система выдаст ошибку:

Неудачное подключение к MySQL 5.1.31

это проиходит потому, что логин в MySQL делится на 2 составляющих: 1 - имя, 2 - хост разделённые символом @, например: `root`@`localhost`.

Вторая часть, в данном случае localhost, означает с какого компьютера можно подключится.

Обратимся к таблице user базы mysql, чтобы посмотреть какие пользователи доступны, для этого можно использовать запрос:


SELECT host
	,user
FROM mysql.user;

Доступные пользователи

 

Чтобы подключиться к удалённому серверу MySQL необходимо создать соответствующего пользователя с помощью запроса:


CREATE USER 'mytestuser'@'192.168.186.%' IDENTIFIED BY '1234';

Создание пользователя MySQL для сети класса C

С помощью пользователя mytestuser можно подключиться с любого хоста, который подключён к сети 192.168.186 класса C.

Также рекомендую подробнее изучить документацию по CREATE USER и Specifying Account Names

Пользователь создан - необходимо подключиться с его помощью:


mysql -h 192.168.186.128 -umytestuser -p

Подключение к MySQL 5.1.31 с помощью нового пользователя

обратите внимание на то, что подключился с клиента версии MySQL 5.7.16 к серверу MySQL версии 5.1.31 на удалённом хосте.


Пример 4-й

В данном примере или можно сказать в данном АНТИ примере покажу 2 способа указания пароля, которым не следует пользоваться.

После параметра -p или --password= можно сразу указать пароль:


mysql -h 192.168.186.128 -umytestuser -p1234

открытый пароль не надо использовать

данный способ работает, но так делать не надо.

Ещё один АНТИ способ - это явно прописать пароль в конфигурационном файле, в данном случая я это сделал в новом тестовом файле my-user.ini с таким содержимым:


[mysql]
user=mytestuser
password=1234

Сохранение пароля в конфиге

Такой способ на мой взгляд тоже неприемлем!


Пример 5-й

В данном примере будет очень коротко будет рассмотрена консольная утилита mysql_config_editor.exe, которая позволяет хранить учётные данные для подключения с консоли в зашифрованном виде в файле .mylogin.cnf. Данный файл находится в личном профиле пользователя, который его создал. Его адрес можено узнать запустив команду из консоли:


echo %APPDATA%\MySQL

Проверяем наличие файла mylogin.cnf

результатом данной команды является полный путь к данному файлу, но поскольку программа ещё не запускалась, то и файл .mylogin.cnf ещё не создавался.

Приступим к исследованию данной утилиты и созданию шифрованных учётных данных, для этого запустим утилиту mysql_config_editor  с параметром --help:


mysql_config_editor --help

Смотрим параметр set в mysql_config_editor

в данном случае нас интересует параметр set - смотрим справку по данному параметру командой:


mysql_config_editor set --help

Параметры set

нас интересуют параметры: --login-path, --host, --port, --user, --password - из данного списка неизвестен только параметр login-path, в которое будет записано произвольное имя подключения.

создадим первое подключение к версии MySQL 5.7.16:


mysql_config_editor set --login-path=con5716 --host=localhost --port=3308 --user=root --password

поскольку используется параметр --password, то после нажатия Enter необходимо будет ввести пароль:

Создание подключения mysql config editor на порт 3308

обратите внимание, что появился тот самый файл .mylogin.cnf, если его открыть текстовым редактором, то параметров вы там не увидите.

создам второе подключение к MySQL 5.7.25, который на порту 3307:


mysql_config_editor set --login-path=con5725 --host=localhost --port=3307 --user=root --password

так же необходимо ввести пароль к пользователю указанному в параметре --user, в моём случае к пользователю root:

mysql_config_editor подключение к MySQL 5.7.25

создам третье подключение к MySQL запущенным OpenServer'ом без указания порта и пароля:


mysql_config_editor set --login-path=conopenserver --host=localhost --user=root

Создание подключения через mysql_config_editor к MySQL от OpenServer

обратите внимание - пароль не был запрошен!!! Т.к. в данной конфигурации MySQL пользователь root без пароля.

создание четвёртого подключения будет к удалённому серверу на виртуалке:


mysql_config_editor set --login-path=remoteconnect --host=192.168.186.128 --user=mytestuser --password

Создание подключения с помощью mysql_config_editor к удалённому серверу с MySQL

все запланированные подключения созданы, хорош бы как-то увидеть их! Для этого надо запустить mysql_config_editor со следующими параметрами:


mysql_config_editor print --all

Отображение всех подключения mysql_config_editor

хотелось бы обратить особое внимание на то, что утилита mysql_config_editor при создании подключения не проверят валидность учётных данных да и другие параметры тоже, т.е. если будут указаны несуществующий логин и/или неправильный пароль, то данная утилита не выдаст сообщение об ошибке и т.д. Ошибка будет выведена при попытке подключится с некорректными параметрами.

Чтобы подключиться используя созданные параметры, необходимо снабдить утилиту mysql параметром --login-path и передать в качестве значения имя подключения:


mysql --login-path=con5716

Финальное подключение с параметром login-path к MySQL 5.7.16

обратите внимание на login-path, версию сервера, версию клиента и порт.


mysql --login-path=con5725

Финальное подключение с login-path к MySQL 5.7.25


mysql --login-path=conopenserver

Финальное подключение с параметром login-path к MySQL от OpenServer

все предыдущие подключения были плюс минус одинаковые, сейчас будем пробовать подключиться к удалённому серверу:


mysql --login-path=remoteconnect

Финальное подключение с параметром login-path к удалённому серверу MySQL

так же обратите внимание на все параметры: порт, сервер, соединение  и т.д.

Настоятельно рекомендую более детально ознакомиться с официальной документацией по утилите mysql_config_editor

Итог: Все запланированные способы вполне работоспособны и каждый способ имеет право на существование, но каждый должен решать сам на свой страх и риск. Минус этого всего - к сожалению не смог понять можно ли использовать последний метод, а именно сохранённые параметры в файле .mylogin.cnf для подключения  с помощью MySQL Workbench