Нам нужно дать доступ к MySQL базе на удаленном сервере. При этом задействовать минимально возможные разрешения.
Разобьем задачу на 2 этапа: откроем доступ к mysql извне только для конкретного IP адреса и создадим пользователя, ограничив ему набор прав до работы с конкретными таблицами в БД.
комментируем строчку, чтобы сервер принимал запросы со всех интерфейсов:Разобьем задачу на 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';
Комментариев нет:
Отправить комментарий