我的数据库服务器只有一个私有 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 到数据库服务器。如果这不能将您连接到数据库服务器。禁用防火墙(应该是防火墙阻止,对我来说就是这样!)