====== MySQL - удаленный доступ ======
===== my.cnf =====
В файле ''/etc/my.cnf'' в секцию ''[mysqld]'' добавляем ''[[http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_bind-address|bind-address]]''
bind-address = *
Строку ''[[http://dev.mysql.com/doc/refman/5.7/en/server-options.html#option_mysqld_skip-networking|skip-networking]]'' удаляем или комментируем.
Перезагружаем MySQL
# service mysqld restart
Удостоверяемся, что MySQL слушает внешний интерфейс
# netstat -tunap | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 8225/mysqld
===== Предоставляем доступ для удаленного IP/хоста =====
mysql> GRANT ALL PRIVILEGES ON *.* TO remote_user@'108.170.13.254' IDENTIFIED BY 'some-password';
mysql> GRANT ALL PRIVILEGES ON *.* TO remote_user@'%' IDENTIFIED BY 'some-password';
mysql> FLUSH PRIVILEGES;
Закрыть доступ
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'remote_user'@'108.170.13.254';
mysql> REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'remote_user'@'%';
mysql> FLUSH PRIVILEGES;
===== Настройки firewall =====
Открываем доступ к 3306 порту извне
# iptables -A INPUT -m tcp -p tcp --dport 3306 -j ACCEPT
Открываем доступ только для определенного IP
# iptables -A INPUT -s 108.170.13.254 -m tcp -p tcp --dport 3306 -j ACCEPT
Открываем доступ для подсети
# iptables -A INPUT -s 108.170.13.0/24 -m tcp -p tcp --dport 3306 -j ACCEPT
Если у вас firewalld
firewall-cmd --add-port=3306/tcp
firewall-cmd --permanent --add-port=3306/tcp
===== Проверка соединения =====
mysql -h HOST -u USERNAME -pPASSWORD