3

我有两台服务器(虚拟机——我可以远程连接到这些服务器)——服务器 1 和服务器 2。

在服务器 1 上我保留我的网页,在服务器 2 上我保留数据库。

我目前正在尝试从服务器 1 连接到服务器 2 上的数据库。

这是我的php代码:

<?php
            $dbhost = 'xxx.xx.xx.xx:xxxx';
            $dbuser = 'xxxxxx';
            $dbpass = 'xxxxxx';

            $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql' . mysql_error());


            $dbname = 'database';
            mysql_select_db($dbname);
?>

这是我尝试连接时收到的错误消息:

Access denied for user 'xxxxxx'@'server1' (using password: YES)

考虑到我正在尝试连接到服务器 2,我发现它说 @server1 有点令人费解。任何人都可以提供任何见解吗?

谢谢

PS:它们都在Windows 2008上

4

4 回答 4

3

MySQL 在确定是否授予访问权限时会考虑连接客户端的主机名。可以允许给定的用户名从托管数据库的同一台机器(即本地主机)登录,但在从远程系统使用时不允许连接。

在您的情况下,听起来用户“xxxxxx”无权从“server1”连接。您可以从所有主机 ('%') 授予用户 'xxxxxx' 登录权限。但是,将您的帐户的登录权限限制在它需要的特定主机('server1')或主机范围('%.mydomain.com' 或 '144.155.166.0/255.255.255.0')会更安全要使用的。

有关 MySql 身份验证过程这方面的更多信息,请参阅http://dev.mysql.com/doc/refman/5.0/en/connection-access.html

于 2010-09-21T12:23:02.820 回答
2

“Access denied for user 'xxxxxx'@'server1'”表示 server1 无权访问 server2。您需要在 server2 上添加可以从 server1 连接的新用户(主机名:server1);

于 2010-09-21T11:59:08.190 回答
2

您需要授予该机器的权限

在这里检查

于 2010-09-21T12:01:29.470 回答
2

删除此用户并使用 'xxxxxx'@'%' 创建一个新用户。在两台服务器上执行此操作。@'%' 表示用户可以从任何地方连接。

于 2010-09-21T12:04:57.047 回答