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

cPr*_*rog 0 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>
Run Code Online (Sandbox Code Playgroud)

如何设置从Windows到mysql表用户所需的权限?

Eri*_*ski 10

mysql命令行错误消息:

ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user'
Run Code Online (Sandbox Code Playgroud)

表示您使用默认的null用户登录到mysql,该用户的权限几乎为零.

  1. 从命令行,像以前一样运行mysql:

    C:\Users\Charity>mysql
    
    Run Code Online (Sandbox Code Playgroud)
  2. 这将带您进入mysql提示符,运行该命令 select user();

    mysql> select user();
    +----------------+
    | user()         |
    +----------------+
    | ODBC@localhost |
    +----------------+
    1 row in set (0.00 sec)
    
    Run Code Online (Sandbox Code Playgroud)

    该输出意味着您不是作为用户连接,而是作为某种非用户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>
    
    Run Code Online (Sandbox Code Playgroud)

    我们没有像任何用户那样连接,所以它告诉我们拒绝访问.

  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>
    
    Run Code Online (Sandbox Code Playgroud)

    所以我们已经以我们定义的另一个非用户身份登录.您是否希望我们从帽子中取出的用户拥有任何特权?没有.

  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>
    
    Run Code Online (Sandbox Code Playgroud)

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

  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)
    
    Run Code Online (Sandbox Code Playgroud)

    您可能希望创建更多用户,以便您可以让人们使用数据库,而无需授予他们对数据库执行任何操作的权限.让野蛮人远离护城河.

  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>
    
    Run Code Online (Sandbox Code Playgroud)

    此用户可以执行您在步骤7中定义的权限中授予的所有内容.