Добавить доступ пользователю к MySQL извне

Ситуация что необходимо доступ ко всем базам данных извне. Пусть даже с определенного IP. Что нужно для этого сделать:

  1. Создать пользователя
  2. Добавить пользователю необходимые права
  3. Дать доступ к определенному порту извне в MySQL и в системе

1. Создать пользователя 2. Добавить пользователю необходимые права

Заходим в mysql из под root и создаем пользователя с полными правами.

GRANT ALL ON fooDatabase.* TO 'fooUser'@'1.2.3.4' IDENTIFIED BY 'my_password';

У созданного fooUser будут ВСЕ права. А доступ будет разрешен только с ip 1.2.3.4 с пароем my_password

Отозвать все права у пользователя можно командой

REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'fooUser'@'1.2.3.4';

Удалить пользователя можно командой:

DROP USER 'bloguser'@'localhost';

3.1. Доступы к MySQL

основная проблема часто бывает в том, что сам MySQL сервис блокирует доступ извне. Правится это в конфигурации сервера

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

ищем фразу bind-address и комментируем эту строку

# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
# bind-address = 127.0.0.1

перезапускаем mysql

sudo service mysql restart

По идее теперь уже должно заработать. Но бывает что ещё необходимо добавить в разрешенные порты в ufw.

3.2. Проверяем firewall UFW

UFW — фаервол для Linux. Он может блокировать доступ к определенным портам. Поэтому неообходмо открыть порт 3306. Сделать это можно по аналогии с добавлением доступа к SSH.

Allow SSH

sudo ufw allow ssh
sudo ufw allow 22

Вход только с определенного IP

sudo ufw allow from 15.15.15.0/24 to any port 22

Источники:

Leave a comment

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.