【问题标题】:MySQL: ERROR 1142 (42000) and ERROR 1064 (42000)MySQL:错误 1142 (42000) 和错误 1064 (42000)
【发布时间】:2011-12-06 07:15:07
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    mysql命令行错误信息:

    ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user'
    

    表示您使用默认的 null 用户登录 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 中定义的权限中授予的所有操作。

    【讨论】:

      【解决方案2】:

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

      mysql>
      

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

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

      mysql -u root -p
      

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

      【讨论】:

        【解决方案3】:

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

            mysql -u root
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-11-25
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多