我不理解PHP中的这个错误 EX ERROR=>SQLSTATE[HY000] [1045] Access denied

13 浏览
0 Comments

我不理解PHP中的这个错误 EX ERROR=>SQLSTATE[HY000] [1045] Access denied

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

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("错误:".mysql_error());
mysql_select_db($dbname) or die ("连接数据库错误:".mysql_error());

然后出现了错误:

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

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

0
0 Comments

出现错误的原因是访问权限被拒绝,解决方法是通过使用GRANT语句给予用户相应的权限。具体的解决方法如下:

错误信息已经给出了一些提示。使用以下GRANT语句:

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

或者更好的方法是,如评论中所指出的,将访问范围细化为实际需要的内容。

不要给予该用户对服务器上的每个数据库的全部权限,只需给予其访问所需数据库/表的权限即可。

这样就可以正常工作了 =)只是忘记以相同的方式在@'localhost'上创建用户。

是否可以使用INSERT INTO子句将用户插入到特定数据库中?

我的意思是如果一个用户没有使用CREATE USER命令创建,是否可以这样做?

0