我需要连接到远程MySQL数据库并创建了以下连接代码:
<?php
/* Set Variables */
$host="myipaddress";
$db="mydbname";
$username="dbuser";
$pass="mypass";
/* Attempt to connect */
$mysqli=new mysqli($host,$username,$pass,$db);
if (mysqli_connect_error()){
die('Connect Error (' . mysqli_connect_errno() . ') '
. mysqli_connect_error());
echo 'Success... ' . $mysqli->host_info . "\n";
$mysqli->close();
}
?>
出于安全考虑,我没有提供实际的变量值。当我在我的开发系统上运行时,我会收到
Connect Error (2003) Can't connect to MySQL server on 'myipaddress' (10061)
我的PHP有点生疏,有人可以识别我的代码有错吗?请注意,dbuser对设置为变量的数据库名称具有选择,插入和更新权限。
谢谢, SID
修改 我对my.cnf进行了更改并重新启动了mysql。我现在收到用户'dbuser'@'mycurrenthostname'的拒绝访问权限(使用密码YES)。当我从命令行使用mysql -u dbuser -p时,我可以登录。我授予了插入,更新和选择与主机'%'的dbuser,以便dbuser可以从任何地方连接。
我已阅读有关此错误的MySQL参考指南,但仍然卡住了。我的代码是否有问题,现在我的my.cnf已经修复了?
答案 0 :(得分:14)
检查您的防火墙是否允许通过端口3306进行连接。
检查bind-address
中的MySQL配置参数my.cnf
,确保它允许远程连接。
此处提供了相关信息和问题排查提示:
http://dev.mysql.com/doc/refman/5.1/en/can-not-connect-to-server.html
答案 1 :(得分:3)
根据MySql文档,错误(2003)无法连接到'服务器'(10061)上的MySQL服务器表示网络连接已被拒绝。您应检查是否有MySQL服务器正在运行,是否已启用网络连接,以及您指定的网络端口是服务器上配置的网络端口。
我不熟悉php,但问题可能不在您的代码中。
答案 2 :(得分:2)
如果即使在打开Mysql端口3306开放访问权限后仍然遇到上述错误,
只需更改位于/etc/mysql/my.cnf
的mysql文件my.cnf的绑定地址
更新绑定地址,如下所示
bind-address = 0.0.0.0
这将允许远程访问所有IP 在AWS ec2上,它可以正常工作。