Php 连接到远程服务器MySQL问题

Php 连接到远程服务器MySQL问题,php,mysql,sql-server,remote-access,Php,Mysql,Sql Server,Remote Access,我正在尝试连接到远程服务器,我将其称为机器a。我已按照说明创建了一个用户 在机器A上,我可以运行命令 mysql -u monty -h website.com -p 这可以毫无问题地连接到sql。但是,当尝试从某台机器B执行此操作时,我收到错误: 在/etc/mysql/my.cnf文件中。仍然无法从远程连接进行连接。有什么我可能遗漏的明显的东西吗?非常感谢您一如既往的反馈。我认为需要修改的是您的补助金 GRANT ALL PRIVILEGES ON *.* TO 'monty'@'loca

我正在尝试连接到远程服务器,我将其称为机器a。我已按照说明创建了一个用户

在机器A上,我可以运行命令

mysql -u monty -h website.com -p
这可以毫无问题地连接到sql。但是,当尝试从某台机器B执行此操作时,我收到错误:


在/etc/mysql/my.cnf文件中。仍然无法从远程连接进行连接。有什么我可能遗漏的明显的东西吗?非常感谢您一如既往的反馈。

我认为需要修改的是您的补助金

GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
可能需要

GRANT ALL PRIVILEGES ON *.* TO 'monty'@'website.com'
不过,你要确保事情是安全的。
通常,最佳做法是尽量不允许非本地主机的外部mysql连接。

看起来无法从机器B解析“website.com”地址。请尝试使用机器A的IP地址连接mysql服务器,即:

mysql -u monty -h x.x.x.x -p

如果它可以工作,请确保将计算机A的IP地址正确映射到名称“website.com”。

我的问题是防火墙阻止了连接

我在使用CentOS 7时遇到以下错误:

mysql -usomeuser -h192.168.194.4 -p somedb
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.194.4' (113)
因此,我安装了telnet以尝试获得以下结果:

[root@vm3 config]# telnet 192.168.194.4 3306
Trying 192.168.194.4...
telnet: connect to address 192.168.194.4: No route to host
正如其他人所指出的,错误113是“没有到主机的路由”,这不是MySQL配置问题

我本来可以向世界开放3306,或者只开放我连接的一个IP,但我决定创建一个新的区域,因为它是为我的ESX主机的内部“仅主机”网络创建的

在运行MySQL(MariaDB)的主机上,我运行了以下防火墙命令:

firewall-cmd --new-zone=esxlocalhost --permanent
firewall-cmd --reload
firewall-cmd --zone=esxlocalhost --permanent --add-source=192.168.194.0/24
firewall-cmd --zone=esxlocalhost --permanent --add-port=3306/tcp
firewall-cmd --reload
完成后,我可以在客户端上连接: mysql-usomeuser-h192.168.194.4-psomedb 输入密码:


生活是美好的

根据教程,你必须同时做到:“monty必须拥有两个帐户,才能像monty一样从任何地方连接。如果没有localhost帐户,当monty从本地主机连接时,mysql\u install\u db创建的localhost的匿名用户帐户将优先。因此,蒙蒂将被视为匿名用户。原因是匿名用户帐户的主机列值比“monty”@“%”帐户更为具体,因此在用户表排序顺序中出现得更早。“至于安全方面,我有一个任何人都可以下载的程序。通过这个程序,我想让用户上传内容到数据库。有没有其他更安全的方法可以使用?再次感谢。啊,好的,所以如果你使用的是共享主机服务,他们可能会锁定一些东西。一种确保安全的方法是创建一个应用程序可以连接的API,然后该API将在本地连接到数据库。这不会把你从所有事情中拯救出来,但它允许你更好地控制它。我有主机的root访问权限,所以我应该能够进行任何修改。有没有什么好的网络资源可以推荐给你来创建API?此外,我当然希望在继续构建API并遇到相同问题之前,确保首先解决此问题。有什么见解吗?在紧急情况下:
将**上的所有特权授予“%”上的“monty”
将允许从端口3306上侦听的服务器的任何位置进行连接?您可以通过执行
netstat-ln
进行检查。看看3306是否被列出来了。如果是,请检查它正在侦听的IP。如果不是,那么您知道问题是它根本没有在侦听,或者没有在其他端口上侦听。在运行netstat-ln之后,端口3306被列为:tcp 0.0.0.0:3306 0.0.0:*侦听任何关于这意味着什么的反馈?这意味着它正在侦听所有网络接口。假设
website.com
指向与该服务器相对应的IP,则不会出现任何问题。请确保您刷新了权限,并尝试检查mysql错误日志以了解可能出错的任何其他提示。这里也没有运气。显然,在机器A上:mysql-u-monty-hx.x.x-p可以工作,但在机器B上我仍然遇到同样的问题。有什么建议吗?你能检查一下机器A是否可以从机器B进入吗?例如,尝试ping x.x.x.x,其中x.x.x.x是A的IP地址。另外,您是否在更改my.cnf文件后重新启动了MySQL?我确实确保在修改my.cnf文件后重新启动了MySQL,但在从远程计算机ping我的服务器时没有收到任何响应。我是否可以对我的机器A进行一些修改以响应这些ping?顺便问一下,您是否在my.cnf中评论了“跳过网络”设置?通常,如果机器A不能从B获得,很可能是网络问题,但显然不是MySQL配置问题。不幸的是,我没有关于您的网络配置的信息,我也不是网络专家,所以我建议只检查一件一般的事情:如果a上有防火墙,这可能会阻止B的网络连接?好的,我得到了它,这样我可以ping服务器(这可能排除了网络问题?),但它仍然无法连接,因为它给出了与以前相同的错误。我也会看看防火墙
mysql -usomeuser -h192.168.194.4 -p somedb
ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.194.4' (113)
[root@vm3 config]# telnet 192.168.194.4 3306
Trying 192.168.194.4...
telnet: connect to address 192.168.194.4: No route to host
firewall-cmd --new-zone=esxlocalhost --permanent
firewall-cmd --reload
firewall-cmd --zone=esxlocalhost --permanent --add-source=192.168.194.0/24
firewall-cmd --zone=esxlocalhost --permanent --add-port=3306/tcp
firewall-cmd --reload