Вы должны внести изменения в конфигурацию MySQL и разрешить удаленный доступ для пользователя.
1. Откройте файл конфигурации MySQL. Для дистрибутивов на основе RHEL - /etc/my.cnf
, для дистрибутивов на основе Debian - /etc/mysql/my.cnf
.
2. Измените параметр bind-address
на bind-address = 0.0.0.0
и убедитесь, что параметр skip-networking
не определен.
3. Перезапустите демон MySQL:
# service mysql restart
Или:
# service mysqld restart
Или:
# service mariadb restart
Имя службы зависит от установленной версии MySQL. Вы можете сделать все три, если вы не уверены. Это не принесет вреда, если ошибка не была сделана в my.cnf
.
4. Предоставьте доступ к удаленному IP-адресу и войдите в MySQL. Например, если вы хотите разрешить доступ к базе данных с именем database
для пользователя user
с паролем password
и удаленным IP-адресом 203.0.113.2
:
GRANT ALL ON database.* TO user@'203.0.113.2' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
Чтобы создать пользователя, который имеет доступ ко всем базам данных, выполните следующий запрос:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'203.0.113.2' IDENTIFIED BY 'password' REQUIRE NONE WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
FLUSH PRIVILEGES;
5. Вы можете проверить, что сервер MySQL прослушивает правильный IP-адрес, используя netstat
. Вот желаемый вывод - 0.0.0.0
адрес:
# netstat -anp | grep :3306
tcp6 0 0 0.0.0.0:3306 :::* LISTEN 2723/mysqld