我已经花了整整一个星期的时间来解决这个问题。无论我尝试什么,我都完全无法访问网络中另一台服务器上存在的远程MariaDB。
我的Web服务器和数据库服务器都是完全相同的安装配置:
CENTOS7:centos-release-7-5.1804.el7.centos.2.x86_64
MariaDB:mysql Ver 15.1 Distrib 5.5.56-MariaDB
,用于Linux (x86_64)
,使用读取行5.1
HTTPD:httpd-2.4.6-80.el7.centos.1.x86_64
PHP:PHP 5.4.16
两台服务器都在运行firewalld,并且当前正在运行以下公共服务:
ssh dhcpv6-client mysql http https
(firewall-cmd --zone=public --add-service=mysql --permanent)
我将两台服务器都更新为最新服务器,并重新启动了灯泡和防火墙服务。
我为两个服务器赋予了相同的用户权限:
GRANT ALL PRIVILEGES ON $.* TO 'user'@'web-server-ip' WITH GRANT OPTION;
我将bind-address = 0.0.0.0
添加到位于my.cnf
的{{1}}文件中
这是该文件的代码:
/etc/my.cnf
我已经测试了从Web服务器到数据库服务器的sshing并成功从命令行访问mysql。
我已经从Web服务器成功测试了telnet:[mysqld]
bind-address = 0.0.0.0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
当我的php脚本尝试连接到数据库服务器时,出现以下错误:
SQLSTATE [HY000] [2003]无法连接到“数据库服务器IP”上的MySQL服务器(13“权限被拒绝”)
我不知所措。我不确定这是否是问题,唯一的问题是我将Web服务器放在反向代理后面,以便我的防火墙将外部IP请求路由到Web服务器的内部地址。数据库服务器与Web服务器位于同一子网中,但没有分配任何公共IP规则。
任何方向将不胜感激。