2011-10-07 21 views
0

我以root用戶身份登錄到MySQL數據庫。我嘗試運行下面的命令:根帳戶不會在MySQL中工作

 


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)

林假設我的根用戶的心不是正確設置。有任何想法嗎?

編輯

 

mysql> show grants for root 
    -> ; 
+-----------------------------------------------------------------------------------------------------+ 
| Grants for [email protected]%                     | 
+-----------------------------------------------------------------------------------------------------+ 
| 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) 

 
+1

是什麼'秀補助金根@%'透露?該帳戶需要'grant'選項才能配置其他用戶。 mysql的默認root帳戶是'root @ localhost',所以如果你通過tcp登錄,你可能會在一個「不同的」根目錄。 –

+0

@Marc B我已添加它,請參閱編輯。我通過SSH登錄。 – user489041

+0

您沒有一般授權選項。你只能在'sometable'和'test'數據庫上授予priv,而不能授予'*。*' –

回答

3

你可能會被記錄到與帳戶名爲root的數據庫,但該帳戶您是因爲沒有正確的權限。

mysql> select user(); 

,並按照了一個:

mysql> select * from mysql.user\G 

查找用戶和主機列精確匹配的輸出。尋找grant_priv它需要說。如果沒有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 
+0

當我輸入'select * from mysql.user \ G'命令,我得到:'錯誤1142(42000):SELECT命令拒絕給用戶'root'@'localhost '表'用戶' 錯誤: 未指定查詢 ' – user489041

0

When I enter the select * from mysql.user\G command, I get : ERROR 1142 (42000): SELECT command denied to user 'root'@'localhost' for table 'user' ERROR: No query specified

這意味着你沒有登錄爲'root'@'%'。您以'root'@'localhost'登錄,這是兩個不同的用戶。如果您運行SELECT USER();如上所述,它可能會顯示您'root'@'localhost'.

如果您登錄爲'root'@'localhost',您通過本地套接字登錄。通過TCP連接登錄會讓您以'root'@'%'的身份訪問,然後您可以根據最初列出的輸出訪問更改授權。要做到這一點,登錄與:

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