Загрузка...
Цель данного руководства разобраться в способах подключения к MySQL-серверу через консоль (CMD) используя утилиту mysql.exe, для данной цели используется следующее оборудование и программное обеспечение:
Железо - Ноутбук Acer Aspire E5-573-58KB:
Программное обеспечение:
В качестве первого эксперимента создадим подключение к 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 систем предложет его вам ввести:
Данных 4-х параметров вполне достаточно для подключения к какому либо серверу. Т.к. в данных примерах я не использовал безопасное соединение(SSL), то данный способ подключения безопасен только внутри защищённой сети.
Пример 1-й
В данном примере рассмотрим простой вариант подключения к MySQL-серверу, который используется в составе OpenServer версии 5.4.0:
соответсвенно порт по умолчанию - 3306 и в данной версии пользователь root - без пароля.
Подключание будет из-под клиента из пакета mysql-5.7.16-winx64, проверяем:
mysql -uroot
обратите внимание, что хост, порт - по умолчанию, а пароль не с используется вообще, т.к. пользователь root в данной версии OpenServer сконфигурирован без пароля. И с помощью команды \s можно посмотреть некотрые параметры MySQL.
Пример 2-й
В данном примере буду подключаться к службам MySQL версий 5.7.16 и 5.7.25, которые установлены из noinstall пакетов на портах 3307, 3308 и сконфигурированные как службы:
mysql -P 3307 -uroot -p
данная версия mysql(5.7.25) уже сконфиругирована с паролем для пользователя root, следовательно параметр -p необходим! И после нажания Enter был введён мой незамысловатый пароль 123
чтобы отключиться от сервера достаточно ввести команду \q и Enter:
теперь подключимся к другой службе MySQL(5.7.16) на порту 3308:
mysql -P 3308 -uroot -p
Пример 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
ip виртуалки 192.168.186.128 и брандмауэр windows отключен, так что есть возможность подключиться к порту 3306
Если сразу попытаться подключиться с Windows10 на WindowsXP с помощью пользователя root, то система выдаст ошибку:
это проиходит потому, что логин в 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';
С помощью пользователя mytestuser можно подключиться с любого хоста, который подключён к сети 192.168.186 класса C.
Также рекомендую подробнее изучить документацию по CREATE USER и Specifying Account Names
Пользователь создан - необходимо подключиться с его помощью:
mysql -h 192.168.186.128 -umytestuser -p
обратите внимание на то, что подключился с клиента версии 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 ещё не создавался.
Приступим к исследованию данной утилиты и созданию шифрованных учётных данных, для этого запустим утилиту mysql_config_editor с параметром --help:
mysql_config_editor --help
в данном случае нас интересует параметр set - смотрим справку по данному параметру командой:
mysql_config_editor set --help
нас интересуют параметры: --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 необходимо будет ввести пароль:
обратите внимание, что появился тот самый файл .mylogin.cnf, если его открыть текстовым редактором, то параметров вы там не увидите.
создам второе подключение к MySQL 5.7.25, который на порту 3307:
mysql_config_editor set --login-path=con5725 --host=localhost --port=3307 --user=root --password
так же необходимо ввести пароль к пользователю указанному в параметре --user, в моём случае к пользователю root:
создам третье подключение к MySQL запущенным OpenServer'ом без указания порта и пароля:
mysql_config_editor set --login-path=conopenserver --host=localhost --user=root
обратите внимание - пароль не был запрошен!!! Т.к. в данной конфигурации MySQL пользователь root без пароля.
создание четвёртого подключения будет к удалённому серверу на виртуалке:
mysql_config_editor set --login-path=remoteconnect --host=192.168.186.128 --user=mytestuser --password
все запланированные подключения созданы, хорош бы как-то увидеть их! Для этого надо запустить mysql_config_editor со следующими параметрами:
mysql_config_editor print --all
хотелось бы обратить особое внимание на то, что утилита mysql_config_editor при создании подключения не проверят валидность учётных данных да и другие параметры тоже, т.е. если будут указаны несуществующий логин и/или неправильный пароль, то данная утилита не выдаст сообщение об ошибке и т.д. Ошибка будет выведена при попытке подключится с некорректными параметрами.
Чтобы подключиться используя созданные параметры, необходимо снабдить утилиту mysql параметром --login-path и передать в качестве значения имя подключения:
mysql --login-path=con5716
обратите внимание на login-path, версию сервера, версию клиента и порт.
mysql --login-path=con5725
mysql --login-path=conopenserver
все предыдущие подключения были плюс минус одинаковые, сейчас будем пробовать подключиться к удалённому серверу:
mysql --login-path=remoteconnect
так же обратите внимание на все параметры: порт, сервер, соединение и т.д.
Настоятельно рекомендую более детально ознакомиться с официальной документацией по утилите mysql_config_editor
Итог: Все запланированные способы вполне работоспособны и каждый способ имеет право на существование, но каждый должен решать сам на свой страх и риск. Минус этого всего - к сожалению не смог понять можно ли использовать последний метод, а именно сохранённые параметры в файле .mylogin.cnf для подключения с помощью MySQL Workbench