我正在尝试与我的数据库建立PHP PDO连接,但是我收到错误:
SQLSTATE[42000] [1044] Access denied for user 'xxxx'@'%' to database 'xxxx'
我已经尝试了几个mysql用户,他们可以很好地访问所有其他数据库。我也尝试在帐户上启用super_priv使用root。
奇怪的是,如果我尝试连接到不同的数据库但是使用相同的用户,它可以很好地连接,但不能连接到我希望连接的数据库。所以我使用:
检查了数据库权限SELECT * FROM mysql.db WHERE Db = 'xxxx'\G;
这返回了3行,其中第三行是我希望有权访问数据库的用户帐户。
*************************** 3. row ***************************
Host: localhost
Db: xxxx
User: [xxxx]
Select_priv: Y
Insert_priv: Y
Update_priv: Y
Delete_priv: Y
Create_priv: Y
Drop_priv: Y
Grant_priv: Y
References_priv: Y
Index_priv: Y
Alter_priv: Y
Create_tmp_table_priv: Y
Lock_tables_priv: Y
Create_view_priv: Y
Show_view_priv: Y
Create_routine_priv: Y
Alter_routine_priv: Y
Execute_priv: Y
Event_priv: Y
Trigger_priv: Y
我通过以下方式授予用户权限:
GRANT ALL PRIVILEGES ON xxxx.* TO '[xxxx]'@'xxxx' IDENTIFIED BY 'xxxx' WITH GRANT OPTION;
我已经通过谷歌搜索了,并尝试了stackoverflow的每个答案,我似乎无法调试此问题!我总是确保刷新权限。
由于
答案 0 :(得分:1)
'xxxx'@'%'
与'xxxx'@'localhost'
或'xxxx'@'IP'
不同。如果您没有在本地连接,那么您将拥有与localhost用户不同的权限。
答案 1 :(得分:1)
在这里(mysql new user access denied)MySQL中的匿名用户可能会导致此类权限被拒绝。您应该创建具有相同名称和计算机字段localhost
的用户,或者删除本地匿名帐户。