DevBug blog

О Linux, Java, разработке ПО и не только

Mysql: разрешаем пользователю root удаленное подключение

2014-11-10 Aliaksei Bahdanau

Имеем сервер (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 к удаленному хосту описано тут

comments powered by Disqus