Mysql: разрешаем пользователю root удаленное подключение
Имеем сервер (Ubuntu Server) в сети с установлленым MySQL сервером. Необходимо разрешить пользователю root
удаленное подключение к базе данных.
В целях безопасности данный способ не рекомендуется использовать на production серверах.
Делаем резервную копию файла настроек:
sudo cp /etc/mysql/my.cnf /etc/mysql/my.cnf.orig
По данному пути файл настроек mysql находится в дистрибутивах linux, основанных на debian. В других дистрибутивах linux (Centos, openSUSE, Fedora, etc) расположение файла настроек базы данных mysql может отличаться.
Кроме того, в некоторых дистрибутивах, например openSUSE, по умолчанию (вместо MySQL) установлена база данных MariaDB
.
В файле настроек /etc/mysql/my.cnf
находим параметр bind-address
и меняем его стандартное значение 127.0.0.1
на 0.0.0.0
:
bind-address = 0.0.0.0
Либо комментируем строку с данным параметром при помощи символа #
:
# bind-address = 0.0.0.0
Перезапускаем mysql сервер:
sudo /etc/init.d/mysql restart
Подключаемся к базе данных пользователем root
через mysql-client
. Для этого в консоли вводим команду:
mysql -u root -p;<
Выбираем схему mysql
по умолчанию:
USE mysql
Выводим список всех хостов и пользователей базы данных:
SELECT host, user
FROM user;
В результате получаем вывод вида:
+-----------+------------------+
| host | user |
+-----------+------------------+
| ubuntu | root |
| 127.0.0.1 | root |
| ::1 | root |
| localhost | debian-sys-maint |
| localhost | root |
+-----------+------------------+
У меня на виртуальной машине Ubuntu Server имеет хост ubuntu
. Изменяем хост ubuntu для MySQL пользователя root
(не путать с root пользователем системы):
UPDATE user SET host='%'
WHERE user='root'
AND host='ubuntu';
Обновляем привелегии:
flush privileges;
Пробуем подключится пользоватлем базы данных root
с другой машины удаленно.
Как подключится пользователем root к удаленному хосту описано тут