你好,我在安装了nginx+mysql+php-fpm的Centos VPS上。我正在尝试允许从我的另一个VPS远程访问这台机器上的数据库。
我尝试了以下步骤。
- 修改了
/etc/my.cnf
文件,然后在[mysqld]块中添加了行bind-address = *
- 使用命令
/etc/init.d/mysqld restart
保存并重新启动mysql服务 - 已登录mysql
- 键入
use social
命令并尝试运行命令GRANT ALL PRIVILEGES ON *.* TO root@'1.2.3.4' IDENTIFIED BY 'pass';
,其中1.2.3.4是我想要远程访问社交数据库的VPS的IP
错误为获取
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
在进一步挖掘时,我发现如果我使用命令
GRANT ALL PRIVILEGES ON dbname TO root@'1.2.3.4' IDENTIFIED BY 'pass';
其中dbname是我要操作的数据库的名称,然后它就可以工作了,在刷新权限后,我可以看到新的mysql.user表中有新用户授予的权限。但即使这样,如果我尝试远程连接到它们,我也会得到一个空白页。毫无例外。这是我用来连接这个数据库的php文件的副本。
<?php
$conn = @mysql_connect('1.2.3.4','root','pass');
if (!$conn) {
die('Could not connect: ' . mysql_error());
}
try{
mysql_select_db('dbname', $conn);
}
catch (Exception $e)
{
echo $error = "An error has occured ".$e->getMessage()." (Code: ".$e->getCode()." )";
echo $error;
}
try{
$sql = "SELECT * FROM bla_user";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
echo $count;
}
catch (Exception $e)
{
echo $error = "An error has occured ".$e->getMessage()." (Code: ".$e->getCode()." )";
echo $error;
}
?>
我在这里更改了密码和数据库名称。这些文件目前托管在主VPS和我试图访问的VPS上,可以在http://www.jukpac.com/test.php和http://www.techbreeze.in/test.php
当我可以登录并创建用户时,有人能告诉我为什么会遇到这个错误吗?即使在这个错误之后,我也可以使用相同的用户名、root和密码在数据库上操作!!
运行此命令后
GRANT ALL PRIVILEGES ON dbname TO root@'1.2.3.4' IDENTIFIED BY 'pass';
同时运行此命令
FLUSH PRIVILEGES;
有关更多信息,请参阅mysql文档