Удаленное подключение к MySQL

По умолчанию подключиться к MySQL можно только с того же хоста. Чтобы получить доступ к серверу с другого IP-адреса, нужно настроить удалённое подключение.

 

Внимание! После ручной правки конфигураций MySQL - my.cnf требуется перезапустить сервер MySQL. 

ISPmanager5 — СлужбыMySQL/MariaDBРестарт или в консоли сервера:

systemctl restart mysql
systemctl restart mariadb

 

Создание удалённого подключения в ISPmanager 5

В панели ISPmanager — раздел Настройки Серверы баз данных выделите сервер MySQL и нажмите кнопку Изменить.

В открывшемся окне поставьте галочку Удаленный доступ. В поле IP-адрес выберите IP, по которому будет доступно подключение.

В панелях с версией ниже 5.95 опции Удаленный доступ нет. Необходимо выполнить настройки вручную. В конфигурационном файле /etc/my.cnf (/etc/mysql/my.cnf для Debian) должна отсутствовать строка skip-networking, если она присутствует — следует её закомментировать:

#skip-networking

 

Также следует добавить/изменить:

bind-address = IP_сервера

 

Для удалённого подключения к базам данных требуется при создании базы отметить Удалённый доступ.

Если при создании базы вы не выбрали данную опцию, её можно указать в Управлении пользователями баз данных. Для этого перейдите в раздел Инструменты Базы данных — выделите нужную базу — нажмите кнопку Пользователи — затем кнопку Изменить.

Пустое поле списка IP-адресов делает возможным подключение с любого IP.

Создание удалённого подключения в консоли

В конфигурационном файле /etc/my.cnf (/etc/mysql/my.cnf для Debian) должна отсутствовать строка skip-networking, если она присутствует — следует её закомментировать:

#skip-networking

 

Также следует добавить/изменить:

bind-address = IP_сервера

 

Подключитесь к сервер MySQL суперпользователем:

mysql -u root -p

 

Далее создайте пользователя, например, dbuser (если вместо % указать localhost, авторизация будет возможна только с текущего сервера):

create user 'dbuser'@'%' identified by 'password'

 

Можно проверить, что мы создали, командой, выводящей всех пользователей с их хостом и паролем:

select user,host,password from mysql.user;

 

Создайте базу, например, testdb:

create database testdb;

Предоставление прав пользователю

Права, назначенные пользователю, определяют, какие действия он сможет выполнять с базой данных. Можно назначать несколько привилегий одному пользователю.

Наиболее часто назначаемые права:

  • ALL PRIVILEGES — пользователю предоставляется полный доступ к базе данных.
  • CREATE — пользователю разрешено создавать базы данных и таблицы.
  • DROP — пользователю разрешено удалять базы данных и таблицы.
  • DELETE — пользователю разрешено удалять строки из определенной таблицы.
  • INSERT — пользователю разрешено вставлять строки в определенную таблицы.
  • SELECT — пользователю разрешено читать базу данных.
  • UPDATE — пользователю разрешено обновлять строки таблицы.
  • GRANT OPTION — пользователю разрешено изменять права других пользователей.


Назначить привилегии пользователю можно, используя синтаксис:

GRAND permission ON database.table TO  'username'@'%';

где permission — вид предоставляемой привилегии.

 

Например, установите полные права на базу testdb пользователю dbuser:

GRAND ALL PRIVILEGES ON testdb.* TO 'dbuser'@'%';

 

Предоставить права на вставку:

GRANT INSERT ON *.* TO 'dbuser'@'%';

 

Предоставить несколько привилегий пользователю:

GRANT SELECT, INSERT, DELETE ON testdb.* TO 'dbuser'@'%';

 

Можно ограничить права пользователя на добавление данных в определенной базе, указав её перед точкой. Для ограничения прав на доступ к определенной таблице укажите нужную таблицу после точки:

GRANT INSERT *database_name.table_name* TO 'dbuser'@'%';

 

Отозвать все привилегии пользователя:

REVOKE ALL PRIVILEGES ON testdb.* FROM 'dbuser'@'%';

 

Посмотреть текущие привилегии пользователя:

SHOW GRANTS FOR 'dbuser'@'%';

 

Удалить пользователя:

DROP USER 'dbuser'@'%';

 

После завершения настройки прав необходимо перезагрузить привилегии:

FLUSH PRIVILEGES;