Удаленный доступ к базе MySql

Нам нужно дать доступ к MySQL базе на удаленном сервере. При этом задействовать минимально возможные разрешения.

Разобьем задачу на 2 этапа: откроем доступ к mysql извне только для конкретного IP адреса и создадим пользователя, ограничив ему набор прав до работы с конкретными таблицами в БД.

Откроем доступ к mysql серверу
nano /etc/mysql/my.cnf
комментируем строчку, чтобы  сервер принимал запросы со всех интерфейсов:
#bind-address           = 127.0.0.1
Перезапускаем mysql и проверяем:
service mysql restart
netstat -an | grep 3306
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN
Добавляем правило в файрвол разрешающее подключение к mysq серверу только с определенного IP (например, 88.99.11.22), остальные соединения по этому порту дропаем:
iptables -A INPUT -i eth0 -p tcp --dport 3306 -s 88.99.11.22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 3306 -j DROP
Теперь доступ к серверу у нас есть, но работать с базами мы скорее всего не сможем т.к. еще существует ограничение на уровне mysql сервера по адресу пользователя.
Создадим нового пользователя разрешив ему логиниться только с конкретного IP адреса и дадим ему доступ исключительно до нужной таблицы в базе. Логинимся на сервере к mysql:
mysql -uroot -p
создаем пользователя office@88.99.11.22 и даем ему доступ на выборку, и внесение изменений в таблицу table базы base;
GRANT SELECT,INSERT,UPDATE,DELETE ON base.table TO office@88.99.11.22 IDENTIFIED BY 'password';

Комментариев нет:

Отправить комментарий