2011-10-12 118 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