我不理解PHP中的这个错误 EX ERROR=>SQLSTATE[HY000] [1045] Access denied
我不理解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,删除并重新创建用户-没有效果。我做错了什么?
出现错误的原因是访问权限被拒绝,解决方法是通过使用GRANT语句给予用户相应的权限。具体的解决方法如下:
错误信息已经给出了一些提示。使用以下GRANT语句:
GRANT ALL ON *.* TO 'servname_shb'@'localhost';
或者更好的方法是,如评论中所指出的,将访问范围细化为实际需要的内容。
不要给予该用户对服务器上的每个数据库的全部权限,只需给予其访问所需数据库/表的权限即可。
这样就可以正常工作了 =)只是忘记以相同的方式在@'localhost'上创建用户。
是否可以使用INSERT INTO
子句将用户插入到特定数据库中?
我的意思是如果一个用户没有使用CREATE USER
命令创建,是否可以这样做?