所以我在本地完成了一个网站,我一直在尝试将其转移到在线服务器上。这可能是一个非常愚蠢的问题,但我花了最后一小时试图找到答案而我却做不到。所以这是在服务器上运行的一行PHP代码(用户名和密码已更改,但主机名相同):
if(!mysql_connect("www.bluestreakaquatic.com","username","password"))
die(mysql_error());
它产生了这个错误:
Can't connect to MySQL server on 'www.bluestreakaquatic.com' (10061)
有人可以给我任何建议吗?
答案 0 :(得分:7)
出于安全原因,您的托管服务提供商可能不允许外部mySQL连接。
如果mySQL与您的网站在同一台服务器上运行,请尝试使用localhost
替换域名。
如果这不起作用,您需要向您的托管服务提供商询问正确的数据库服务器地址。
答案 1 :(得分:1)
我最近遇到过同样的问题。
找到以下行:[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
.......
其中
使用以下命令启动MySQL监视器:mysql
或/usr/local/mysql/bin/mysql
。您的shell提示符现在应如下所示:mysql>
。运行此命令:
GRANT ALL PRIVILEGES ON *.* TO 'USERNAME'@'%' IDENTIFIED BY "PASSWORD";
其中:
您现在必须刷新MySQL的权限。运行此命令:
FLUSH PRIVILEGES;
运行此命令退出MySQL:
exit;
/etc/init.d/mysqld restart
或
/etc/init.d/mysql restart
取决于当前运行的服务器的Linux发行版。
由于存在安全风险,任何托管服务提供商都不太可能允许远程连接到mysql服务器。但是,如果您的托管服务器使用 DirectAdmin 控制面板或 cPanel ,您可能会很幸运。如果是这样,请按照下列步骤操作:
转到MySQL Management
。选择您的数据库并单击它。您将找到名为Access Hosts
的部分。添加新主机:(%
)
转到Remote MySQL
部分下的Databases
并添加%
代替myhost.com
:
另请参阅参考: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'