mysql_connect不适用于某个站点

时间:2011-06-20 16:41:22

标签: php mysql

所以我在本地完成了一个网站,我一直在尝试将其转移到在线服务器上。这可能是一个非常愚蠢的问题,但我花了最后一小时试图找到答案而我却做不到。所以这是在服务器上运行的一行PHP代码(用户名和密码已更改,但主机名相同):

if(!mysql_connect("www.bluestreakaquatic.com","username","password"))
die(mysql_error());

它产生了这个错误:

Can't connect to MySQL server on 'www.bluestreakaquatic.com' (10061)

有人可以给我任何建议吗?

3 个答案:

答案 0 :(得分:7)

出于安全原因,您的托管服务提供商可能不允许外部mySQL连接。

如果mySQL与您的网站在同一台服务器上运行,请尝试使用localhost替换域名。

如果这不起作用,您需要向您的托管服务提供商询问正确的数据库服务器地址。

答案 1 :(得分:1)

我最近遇到过同样的问题。

如果您具有对服务器的完全访问权限(需要root权限):

第1步:编辑my.cnf (通常位于/ etc)

找到以下行:[mysqld]并确保注释行skip-networking(或删除行)并添加以下行:

bind-address=YOUR-SERVER-IP

例如,如果您的MySQL服务器IP是66.166.170.28,则整个块应如下所示:

[mysqld]
user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
language        = /usr/share/mysql/English
bind-address    = 66.166.170.28
# skip-networking
.......

其中

  • bind-address :要绑定的IP地址。
  • 跳过网络:根本不要监听TCP / IP连接。所有与mysqld的交互必须通过Unix套接字完成。对于仅允许本地请求的系统,强烈建议使用此选项。由于您需要允许远程连接,因此应从my.cnf中删除此行或将其置于注释状态。

步骤2:授予对所有主机的访问权限

使用以下命令启动MySQL监视器:mysql/usr/local/mysql/bin/mysql。您的shell提示符现在应如下所示:mysql>。运行此命令:

GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY "PASSWORD";

其中:

  • USERNAME 是您使用php脚本连接时使用的用户名。
  • PASSWORD 是您在连接时使用的密码。

您现在必须刷新MySQL的权限。运行此命令:

FLUSH PRIVILEGES;

运行此命令退出MySQL:

exit;

第3步:重启mysql deamon

/etc/init.d/mysqld restart

/etc/init.d/mysql restart

取决于当前运行的服务器的Linux发行版。

如果您在共享托管环境中:

由于存在安全风险,任何托管服务提供商都不太可能允许远程连接到mysql服务器。但是,如果您的托管服务器使用 DirectAdmin 控制面板或 cPanel ,您可能会很幸运。如果是这样,请按照下列步骤操作:

对于DirectAdmin:

转到MySQL Management。选择您的数据库并单击它。您将找到名为Access Hosts的部分。添加新主机:(%

here you go

对于cPanel:

转到Remote MySQL部分下的Databases并添加%代替myhost.com

here you go

另请参阅参考:http://dev.mysql.com/doc/refman/5.5/en/can-not-connect-to-server.html

答案 2 :(得分:0)

如果您无法从Web服务器连接到远程mysql服务器,但可以从localhost连接到远程mysql服务器,则服务器可能没有为源自该主机的用户名授予权限。

GRANT ALL PRIVILEGES ON database.* TO username@serverhostname IDENTIFIED BY 'password'