2011-10-12 149 views
0

我正在使用Windows 7.我已經下載mysql-5.5.16-win32.zip並安裝它。我成功啓動MySQL服務器,但我得到這個錯誤:MySQL:錯誤1142(42000)和錯誤1064(42000)

C:\Program Files\Mysql\bin>mysql 
Welcome to the MySQL monitor. Commands end with ; or \g. 
Your MySQL connection id is 2 
Server version: 5.5.16 MySQL Community Server (GPL) 

mysql> select user, host, password from mysql.user; 
ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user 
' 
mysql> mysql -u root -p 
    -> select user, host, password from mysql.user; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 'mysql 
-u root -p 
select user, host, password from mysql.user' at line 1 
mysql> mysql -u root -p root 
    -> select user, host, password from mysql.user; 
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that 
corresponds to your MySQL server version for the right syntax to use near 'mysql 
-u root -p root 
select user, host, password from mysql.user' at line 1 
mysql> 

如何設置所需的權限,從Windows到mysql表用戶?

回答

1

命令mysql -u root -p應該在Windows命令行運行。當您看到提示

mysql> 

這意味着您目前使用MySQL命令行客戶端(你打開它時,你首先要在樣品的第一線跑mysql)。

你需要做的就是運行命令quit,讓你在Windows命令提示符已經回來了,和然後運行

mysql -u root -p 

這將再次啓動MySQL客戶端,但會提示你爲您的密碼登錄作爲用戶root

8

MySQL的命令行錯誤消息:

ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user' 

意味着你登錄到MySQL與幾乎零權限默認爲空的用戶。

  1. 在命令行中運行MySQL作爲之前一樣:

    C:\Users\Charity>mysql 
    
  2. 這使你的mysql的提示符下運行命令select user();

    mysql> select user(); 
    +----------------+ 
    | user()   | 
    +----------------+ 
    | [email protected] | 
    +----------------+ 
    1 row in set (0.00 sec) 
    

    該輸出意味着你不作爲用戶連接,而是作爲某種非用戶API連接器連接。 ODBC不在mysql.users表中。當您不指定用戶時,它是連接到MySQL的用戶。

  3. 運行另一個命令:

    mysql> select user from mysql.user; 
    ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for 
    table 'user' 
    mysql> 
    

    所以它告訴我們拒絕訪問我們沒有連接任何用戶。

  4. 運行這些命令:

    C:\Users\Charity>mysql -u this_is_not_a_user 
    mysql> select user(); 
    +------------------------------+ 
    | user()      | 
    +------------------------------+ 
    | [email protected] | 
    +------------------------------+ 
    1 row in set (0.00 sec) 
    
    mysql> 
    

    因此,我們的身份登錄我們的定義的另一個非用戶。你會期望這個用戶我們從帽子裏拿出什麼特權嗎?

  5. 號停止鬼混,並以root身份登錄:

    C:\Users\Charity>mysql -u root -p 
    Enter password: ********** 
    mysql> select user(); 
    +----------------+ 
    | user()   | 
    +----------------+ 
    | [email protected] | 
    +----------------+ 
    1 row in set (0.00 sec) 
    mysql> 
    

    現在你的根,你所看到的一切。

  6. 看看mysql。用戶表:

    mysql> select user, host from mysql.user; 
    +------+-----------+ 
    | user | host  | 
    +------+-----------+ 
    |  | linux  | 
    | root | linux  | 
    |  | localhost | 
    | pma | localhost | 
    | root | localhost | 
    +------+-----------+ 
    5 rows in set (0.00 sec) 
    

    您可能需要創建更多的用戶,因此您可以讓人們使用的數據庫,而不給他們做任何事情來你的數據庫的權限。讓野蠻人遠離護城河。

  7. 您不想一直以root身份登錄。因此創建一個新用戶。轉到phpmyadmin,以root身份登錄到phpadmin。點擊「用戶」標籤並創建一個新用戶。一個新的對話框顯示,填寫用戶名,密碼和權限。然後,你可以登錄爲用戶:

    C:\Users\Charity>mysql -u el -p 
    Enter password: ********** 
    mysql> select user(); 
    +----------------+ 
    | user()   | 
    +----------------+ 
    | [email protected] | 
    +----------------+ 
    1 row in set (0.00 sec) 
    mysql> 
    

    此用戶可以做到這一點,你在步驟7

1

定義。如果你是一個初學者的權限授予一切,你可能不必鍵入-p 只是鍵入:

mysql -u root