Управление удаленным доступом к MySQL
MariaDB, mySQL | Комментировать запись
Этот мануал является частью серии статей по устранению неполадок и диагностике настроек MySQL. Здесь мы рассмотрим некоторые общие проблемы, с которыми сталкиваются многие пользователи MySQL, и предоставим рекомендации по устранению конкретных ошибок. Также здесь вы найдете ссылки на другие мануалы и официальную документацию по MySQL, которые могут быть полезны в некоторых случаях.
Читайте также:
Очень часто веб-сервер и база данных приложения сначала находятся на одной машине. Однако со временем такая установка становится неэффективной, к тому же, ее сложно масштабировать. Как правило, в таких случаях базу данных переносят на отдельный сервер, что позволяет веб-серверу и БД расти своими темпами на индивидуальных машинах.
Одна из наиболее распространенных проблем, что возникает при попытке переместить БД MySQL на удаленный сервер, связана с тем, что экземпляр MySQL прослушивает только локальные соединения. Это настройка MySQL по умолчанию, но она, конечно, не подходит для удаленных БД, поскольку MySQL в такой ситуации должен иметь возможность прослушивать внешние IP-адреса. Чтобы изменить это, откройте файл:
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
Найдите строку, которая начинается с bind-address:
. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
. . .
По умолчанию ее значение 127.0.0.1, то есть сервер принимает только локальные соединения. Это значение нужно изменить – сослаться на внешний IP-адрес. В целях устранения неполадок можно указать подстановочный адрес: *, :: или 0.0.0.0:
. . .
lc-messages-dir = /usr/share/mysql
skip-external-locking
#
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 0.0.0.0
. . .
Примечание: В MySQL 8+ директивы bind-address нет в файле mysqld.cnf по умолчанию. В таком случае нужно добавить в конец файла следующую строку:
. . .
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
bind-address = 0.0.0.0
Изменив значение, вы можете сохранить и закрыть файл.
Затем перезапустите сервис MySQL:
sudo systemctl restart mysql
Теперь попробуйте получить удаленный доступ к вашей базе данных с другой машины:
mysql -u user -h database_server_ip -p
Если у вас получается открыть БД, значит проблема была в директиве bind-address и теперь она установлена правильно.
Следует отметить, что настройка bind-address to 0.0.0.0 достаточно опасная, потому что она открывает доступ к вашим данным любому IP-адресу.
Если же вы все еще не можете получить удаленный доступ к БД, значит, проблема в чем-то другом.
В любом случае, возможно, вам пригодится мануал Настройка удаленной базы данных MySQL для оптимизации производительности сайта в Ubuntu 18.04. С его помощью вы сможете создать надежную конфигурацию удаленной базы данных.
Читайте также: Устранение сбоев в MySQL
Tags: MySQL