В файле /etc/my.cnf
в секцию [mysqld]
добавляем bind-address
bind-address = *
Строку 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
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;
Открываем доступ к 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