MySQL错误:SQL STATE [4200] [1044]但授予所有权限

时间:2015-09-05 01:02:51

标签: mysql grant

我正在尝试与我的数据库建立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的每个答案,我似乎无法调试此问题!我总是确保刷新权限。

由于

2 个答案:

答案 0 :(得分:1)

'xxxx'@'%''xxxx'@'localhost''xxxx'@'IP'不同。如果您没有在本地连接,那么您将拥有与localhost用户不同的权限。

答案 1 :(得分:1)

在这里(mysql new user access denied)MySQL中的匿名用户可能会导致此类权限被拒绝。您应该创建具有相同名称和计算机字段localhost的用户,或者删除本地匿名帐户。