Назад | Перейти на главную страницу

Подключение к удаленной базе данных mysql с использованием ее частного IP-адреса

У моего сервера базы данных есть только частный IP-адрес. Я могу подключиться к серверу базы данных по ssh с моего сервера приложений. Я создал пользователя с IP-адресом сервера приложений.

Может ли кто-нибудь сказать мне, как получить доступ к базам данных mysql с сервера приложений, используя частный IP-адрес сервера db в ubuntu 16.04?

Вероятно, что сервер mysql привязан к адресу обратной петли, 127.0.0.1 или эквиваленту ipv6, поэтому вам придется открыть его до сети LAN. Вы можете проверить это с помощью следующей команды на сервере mysql;

# netstat -lntp | grep 3306
tcp        0      0 127.0.0.1:3306     0.0.0.0:*    LISTEN   20080/mysqld

Эта опция для привязки к ip настраивается в my.cnf, или где-либо в вашей системе есть файл конфигурации mysql, и его можно изменить для привязки ко всем IP-адресам;

[mysqld]
bind-address                   = 127.0.0.1

изменить на

[mysqld]
bind-address                   = 0.0.0.0

и перезапустите сервер mysql. Очевидно, что важно убедиться, что разрешения на сервере mysql установлены правильно.

Где находится конфигурационный файл, зависит от того, какую версию mysql вы используете, я вижу это по адресу; /etc/mysql/mysql.conf.d/mysqld.cnf на Ubuntu 16.04.3 работает mysql-server-core-5.7, но он находится в /etc/my.cnf на другом поле CentOS ... так что вам, возможно, придется более конкретно рассказать о среде, в которой вы находитесь ...

Вы можете проверить, работает ли он, подключившись к частному IP-адресу сервера db с сервера приложений с помощью mysql-client.

# echo "show databases;"  | mysql -uroot -psomepass -h localhost

Database
information_schema
wp_is_annoying_db
mysql
performance_schema
sys

если это не работает, вам следует начать с основ

ping частный IP-адрес сервера db;

$ ping 192.168.x.x
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.051 ms

используйте telnet или netcat для проверки порта

$ telnet localhost 3306
Trying 127.0.0.1...
Connected to localhost.

или используйте netcat, если telnet не установлен;

nc -v localhost 3306
Connection to localhost 3306 port [tcp/mysql] succeeded!

Попробуйте выполнить ping / telnet / nc на сервер db с сервера приложений. Если это не подключает вас к серверу db. Отключите брандмауэр (должен быть брандмауэр блокировать и это было для меня!)