MySQL - 用户拒绝访问

时间:2011-05-03 21:18:57

标签: php mysql permissions

所以,我创建了一个新用户

CREATE USER servname_shb IDENTIFIED BY 'password';

授予他所有特权:

GRANT ALL ON *.* TO servname_shb;

到目前为止没有错误。然后我尝试连接数据库:

$dbhost = "localhost";
$dbname = "servname_shbusers";
$dbuser = "servname_shb";
$dbpass = "password";

$c = mysql_connect($dbhost,$dbuser,$dbpass) or die("Error:".mysql_error());
mysql_select_db($dbname) or die ("Error connecting to databse:".mysql_error());

并收到错误:

Access denied for user 'servname_shb'@'localhost' (using password: YES) in <path>

我尝试了FLUSH PRIVILEGES,删除并重新创建用户 - 没有效果。我做错了什么?

2 个答案:

答案 0 :(得分:6)

错误消息已经为您提供了提示。使用此授权声明:

GRANT ALL ON *.* TO 'servname_shb'@'localhost';

或者更好,正如@grantk在评论中指出的那样,将访问范围细化为实际需要的范围。

答案 1 :(得分:3)

您必须使用'servname_shb'@'localhost'作为用户名。您的请求变为:

CREATE USER 'servname_shb'@'localhost' IDENTIFIED BY 'password';
GRANT ALL ON *.* TO 'servname_shb'@'localhost';

注意:'servname_shb'@'localhost'仅允许来自localhost的连接。您可以使用'servname_shb'@'%'来允许从任何地方进行连接。