1

我使用的是 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 表用户?

4

3 回答 3

12

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

于 2013-08-12T04:43:23.440 回答
1

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

mysql>

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

你需要做的是运行命令quit,这样你就回到了 Windows 命令提示符,然后运行

mysql -u root -p

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

于 2011-10-12T16:38:53.173 回答
0

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

    mysql -u root
于 2015-07-17T15:57:21.983 回答