mysql_connect("x.xx.xx.x","username","password") or die(mysql_error());
我遇到的错误是无法连接给定的主机
。该用户拥有所有特权和权限。
大多数MySQL默认安装只监听本地计算机。
在服务器的my.cnf
中查找bind-address
设置,并确保它正在监听目标IP地址。您还需要确保skip-networking
没有被打开!
或者(不太安全!)可以使用以下方式设置它以便在所有地址(本地和远程)上监听:
bind-address = 0.0.0.0
请尝试添加一个允许从IP连接的用户(USER-NAME):
mysql> GRANT ALL PRIVILEGES ON *.* TO USER-NAME@IP IDENTIFIED BY "PASSWORD";
USER-NAME是您想要创建的用户名(例如“widor”)
IP是远程连接的公共IP地址(例如“195.x.y.z”)
当然,限制您想要授予的特权(ALL PRIVILEGES可能不是您的选择)
在尝试使用 PHP 后,请打开您的终端或控制台并输入以下内容:
$ mysql -u username -h x.xx.xx.x -p
然后输入您的密码。
如果您使用的是 Windows,则输入以下内容:
\path\to\mysql.exe -u username -h x.xx.xx.x -p
然后输入您的密码。
这将为您提供更详细的响应,以查明身份验证问题。您可以百分之百地确信您从 IP 地址进行的远程登录可行。如果它能够正常工作,那么问题就出在您的 PHP 代码中,您需要检查是否有遗漏。
1) 检查MySQL监听连接的接口,是本地(localhost、127.0.0.1)还是远程(0.0.0.0或IP地址),在my.cnf文件中。详情请参见http://www.cyberciti.biz/tips/how-do-i-enable-remote-access-to-mysql-database-server.html
2) 检查您的用户是否具有相应的权限。从本地登录的用户可能与远程用户具有不同的权限。例如,'user'@'localhost'和'user'@'%'