授予mysql远程访问权限

时间:2013-12-30 11:32:18

标签: php mysql database linux nginx

您好我在安装了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和我尝试访问的文件上,可以在http://www.jukpac.com/test.phphttp://www.techbreeze.in/test.php

查看

当我可以登录并创建用户甚至使用相同的用户名,root和相同的密码操作甚至在此错误之后,有人能让我知道为什么我遇到此错误!

1 个答案:

答案 0 :(得分:3)

运行此命令后

GRANT ALL PRIVILEGES ON dbname TO root@'1.2.3.4' IDENTIFIED BY 'pass';

也运行此命令

FLUSH PRIVILEGES;

了解更多refer to the mysql documentation

相关问题