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