我正在尝试从其他网站远程连接到SQL。我做了一个whois查找,以获取尝试连接并在cPanel中将其列入白名单的域的IP地址。我也做了一个echo $_SERVER['SERVER_ADDR'];
并且出于某种原因获得了不同的IP地址,因此我也将其列入白名单。我也尝试过使用域名列入白名单,但MySQL仍然拒绝连接。
如果我允许从所有(%)访问它将工作,但显然我不会这样做..我怎么能确定,哪个IP地址需要列入白名单,以便SQL允许连接?
答案 0 :(得分:1)
分析问题更容易但需要一些工作。
访问控制台mysql以验证Cpanel接口是否在mysql上放置了正确的凭据。毕竟WHM / Cpanel只是一个控制面板,使管理工作对我们有用,因此很容易出错
mysql > SELECT user, host FROM mysql.user WHERE user LIKE %user%;
+--------------------+----------------+
| user | host |
+--------------------+----------------+
| special_user | % |
| horde | 127.0.0.1 |
| zabbix | 127.0.0.1 |
| mysqlbackup | 163.XXX.XXX.31 |
| root | 176.XX.XXX.39 |
...
如果用户在mysql权限表上,请验证my.cnf是否已配置为远程访问
如果存在必须是0.0.0.0
cat /etc/my.cnf |grep bind-address
bind-address=0.0.0.0
skip-networking
也不能在/etc/my.cnf
检查防火墙以访问3306端口
iptables -L -n |grep 3306
...
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:3306
帮助也很好,表明显示应用程序的错误,因为这确定了发生故障的层。
示例强>
ERROR 1130 (HY000): Host ‘1.2.3.4’ is not allowed to connect to this MySQL server
和mysql的日志
cat /var/lib/mysql/ [hostname] .err 2016-04-06 0:26:19 140080907868928 [警告] IP地址' 23.251.55.75'无法解决:名称或服务未知
所有路径示例均适用于WHM / Cpanel服务器。
[text]替换真实姓名
答案 1 :(得分:0)
您需要将服务器的主IP列入白名单(托管域的位置)。来自服务器的传出连接通过服务器的主IP地址进行。如果它是Linux机器,您可以使用命令hostname -i
找出主IP地址。您还可以使用命令tcpdump -n dst 1.1.1.1 and port 3306
检查哪个IP与MySQL建立连接
更改端口号和根据MySQL服务器的IP地址。
答案 2 :(得分:0)
就我而言,我发现password
表中有一个错误的mysql.user
条目。
我所做的是为正确的主机添加了错误的密码。通过查看password
字段,我能够识别出错误的密码-唯一与我要连接的主机不同的密码。
SELECT * FROM mysql.user WHERE user LIKE '%username%' \G;
我删除了该条目并再次分配了权限,此问题已解决。
在开发环境中,我在MySQL级别进行了更改。