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

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

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

2 ответа

Решение

Вполне вероятно, что сервер 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 находится в вашей системе и может быть изменен для привязки ко всем ips;

[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-адресу сервера базы данных с сервера приложений с помощью mysql-client.

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

Database
information_schema
wp_is_annoying_db
mysql
performance_schema
sys

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

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

$ 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 на сервер базы данных с сервера приложений. Если это не соединяет вас с сервером БД. Отключить брандмауэр (должен быть блок брандмауэра, и это было для меня!)

Другие вопросы по тегам