使用私有 IP 地址连接远程 mysql 数据库

使用私有 IP 地址连接远程 mysql 数据库

我的数据库服务器只有一个私有 IP 地址。我可以从我的应用服务器通过 ssh 进入数据库服务器。我已使用应用服务器的 IP 地址创建了一个用户。

有人能告诉我如何在 ubuntu 16.04 上使用数据库服务器的私有 IP 地址从应用服务器访问 mysql 数据库吗?

答案1

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在运行 mysql-server-core-5.7 的 Ubuntu 16.04.3 上,但它在/etc/my.cnf另一个 CentOS 机器上......所以您可能必须更具体地说明您所在的环境......

您可以使用 mysql-client 从应用服务器连接到数据库服务器的私有 IP,以测试它是否正常工作

# 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!

答案2

尝试从应用服务器 ping/telnet/nc 到数据库服务器。如果这不能将您连接到数据库服务器。禁用防火墙(应该是防火墙阻止,对我来说就是这样!)

相关内容