Как разрешить удаленный доступ к MySQL

Многие веб-сайты и приложения запускаются с веб-сервера и базы данных, размещенных на одном компьютере. Однако со временем такая установка может стать громоздкой и сложной для масштабирования. Распространенным решением является разделение этих функций путем настройки удаленной базы данных, что позволяет серверу и базе данных расти в своем темпе на своих машинах.

Одна из наиболее распространенных проблем, с которыми сталкиваются пользователи при настройке удаленной базы данных MySQL, заключается в том, что их экземпляр MySQL настроен только на прослушивание локальных соединений. Это настройка по умолчанию для MySQL, но она не будет работать для удаленной настройки базы данных, поскольку MySQL должен иметь возможность прослушивать внешний IP-адрес, по которому можно связаться с сервером. Чтобы включить это, откройте ваш mysqld.cnf файл:

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-адрес. Для целей поиска неисправностей, вы можете установить эту директиву подстановочных 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 192.168.0.2 -p

Если вы можете получить доступ к своей базе данных, это подтверждает, что bind-address директива в вашем файле конфигурации была проблемой. Обратите внимание, однако, что установка bind-address на 0.0.0.0 небезопасна, так как позволяет подключаться к вашему серверу с любого IP-адреса. С другой стороны, если вы все еще не можете получить доступ к базе данных удаленно, проблема может быть вызвана чем-то другим. В любом случае, вам может быть полезно следовать нашему руководству « Как настроить удаленную базу данных для оптимизации производительности сайта с MySQL на Ubuntu 18.04», чтобы настроить более безопасную конфигурацию удаленной базы данных.

Добавить комментарий

Автору будет очень приятно узнать обратную связь о своем руководстве.

Комментариев 0