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