MySQL:ERROR 1142(42000)和ERROR 1064(42000)

时间:2011-10-12 16:32:55

标签: mysql mysql-error-1064 mysql-error-1142

我正在使用Windows 7.我已经下载了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表用户所需的权限?

3 个答案:

答案 0 :(得分:9)

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>
    

    现在你是根,你可以看到一切。

  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中定义的权限中授予的所有内容。

答案 1 :(得分:1)

命令mysql -u root -p应该在Windows命令行运行。当你看到提示

mysql>

这意味着您当前正在使用MySQL命令行客户端(当您第一次在示例的第一行运行mysql时打开它)。

您需要执行的是运行命令quit,以便您返回Windows命令提示符,然后运行

mysql -u root -p

这将再次启动MySQL客户端,但会提示您输入密码以用户root身份登录。

答案 2 :(得分:0)

如果您是初学者,则可能不必键入-p 只需输入:

    mysql -u root