连接到不同服务器上的MySQL

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)

我觉得有些困惑,因为它显示@server1,但我想连接的是server2。有人能提供一些见解吗?
谢谢。
附注:它们都在Windows 2008上。

这个问题可能会对你有所帮助:问题 - pollux1er
4个回答

3
MySQL在确定是否授予权限时,考虑连接客户端的主机名。一个特定的用户名可能被允许从托管数据库的同一台机器(即localhost)登录,但如果从远程系统使用,则不被允许连接。
在您的情况下,听起来像是用户“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

谢谢Ben,这是最详细的答案,所以我会选择它。还要感谢其他所有回答的人! - 109221793

2
"

"Access denied for user 'xxxxxx'@'server1'"意味着server1无法访问server2。您需要在server2上添加一个新用户,该用户可以从server1(主机名:server1)连接;

"的意思是服务器1无法访问服务器2,需要在服务器2上创建一个新用户,使其可以从服务器1上连接。

2

您需要为该机器授予权限。

在此处进行查看(点击)


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接