簡體   English   中英

MySQL:錯誤1142(42000)和錯誤1064(42000)

[英]MySQL: ERROR 1142 (42000) and ERROR 1064 (42000)

我正在使用mysql-5.5.16-win32.zip 。我已經下載並安裝了mysql-5.5.16-win32.zip 我成功啟動了MySQL服務器,但出現此錯誤:

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表用戶設置所需的特權?

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() | +----------------+ | ODBC@localhost | +----------------+ 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() | +------------------------------+ | this_is_not_a_user@localhost | +------------------------------+ 1 row in set (0.00 sec) mysql> 

    因此,我們已經以定義的另一個非用戶身份登錄。 您是否希望我們脫穎而出的這個用戶擁有任何特權? 沒有。

  5. 停止鬼混並以root用戶身份登錄:

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

    現在您已經是root用戶,您可以看到所有內容。

  6. 查看mysql.user表:

     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() | +----------------+ | el@localhost | +----------------+ 1 row in set (0.00 sec) mysql> 

    該用戶可以執行您在步驟7中定義的權限中授予的所有操作。

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

mysql>

這意味着您當前正在使用MySQL命令行客戶端(在示例的第一行首次運行mysql時將其打開)。

您需要做的是運行命令quit ,這樣您將返回Windows命令提示符, 然后運行

mysql -u root -p

這將再次啟動MySQL客戶端,但是會提示您輸入密碼,以root用戶身份登錄。

如果您是初學者,則不必鍵入-p,而只需鍵入:

    mysql -u root

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM