Root帐户无法在MySQL中运行

时间:2011-10-07 20:19:14

标签: mysql sql database

我在MySQL数据库中以root用户身份登录。我尝试运行以下命令:



mysql> GRANT ALL ON *.* TO 'root'@'%'
    ->   IDENTIFIED BY '[password]'
    ->   WITH GRANT OPTION;
ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)
mysql>


我收到以下错误:

ERROR 1045 (28000): Access denied for user 'root'@'%' (using password: YES)

我假设我的root用户没有正确设置。有什么想法吗?

修改


mysql> show grants for root
    -> ;
+-----------------------------------------------------------------------------------------------------+
| Grants for root@%                                                                                   |
+-----------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'%' IDENTIFIED BY PASSWORD '*738393F115A47ACE272D98F4719B8491A2B8296F' |
| GRANT ALL PRIVILEGES ON `sometable`.* TO 'root'@'%' WITH GRANT OPTION                               |
| GRANT ALL PRIVILEGES ON `Test`.* TO 'root'@'%' WITH GRANT OPTION                                    |
+-----------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)


2 个答案:

答案 0 :(得分:3)

您可能使用名为root的帐户登录数据库,但您所在的帐户没有正确的权限。

mysql> select user();

然后用:

跟进
mysql> select * from mysql.user\G

查找与输出完全匹配的用户和主机列。寻找 grant_priv ,它需要说 Y 。很可能还有没有grant_priv的其他root帐户。

mysql> select * from mysql.user\G
*************************** 1. row ***************************
                 Host: localhost
                 User: root
             Password: xxxxxxxxxxxxxxx
          Select_priv: Y
          Insert_priv: Y
          Update_priv: Y
          Delete_priv: Y
          Create_priv: Y
            Drop_priv: Y
          Reload_priv: Y
        Shutdown_priv: Y
         Process_priv: Y
            File_priv: Y
           Grant_priv: Y
      References_priv: Y
           Index_priv: Y
           Alter_priv: Y
         Show_db_priv: Y
           Super_priv: Y
Create_tmp_table_priv: Y
     Lock_tables_priv: Y
         Execute_priv: Y
      Repl_slave_priv: Y
     Repl_client_priv: Y
     Create_view_priv: Y
       Show_view_priv: Y
  Create_routine_priv: Y
   Alter_routine_priv: Y
     Create_user_priv: Y
           Event_priv: Y
         Trigger_priv: Y
             ssl_type: 
           ssl_cipher: 
          x509_issuer: 
         x509_subject: 
        max_questions: 0
          max_updates: 0
      max_connections: 0
 max_user_connections: 0

答案 1 :(得分:0)

  

当我从mysql.user \ G命令输入select *时,我得到:ERROR 1142(42000):SELECT命令被拒绝用户'root'@'localhost'用于表'user'错误:没有指定查询

这表示您未以'root'@'%'身份登录。您以“root”@“localhost”身份登录,这是两个不同的用户。如果您按上述方式运行SELECT USER();,则可能会显示'root'@'localhost'.

如果您以'root'@'localhost'身份登录,则表示您是通过本地套接字登录的。通过TCP连接登录将使您以'root'@'%'进行访问,这将使您可以根据最初列出的输出访问更改授权。为此,请使用以下命令登录:

mysql -u $user -p $pass -h 127.0.0.1