MySQL: ОШИБКА 1142 (42000) и ОШИБКА 1064 (42000)

Я использую 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 ответа

Сообщение об ошибке командной строки 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, войдите в phpadmin от имени пользователя root. Перейдите на вкладку "пользователи" и создайте нового пользователя. Появится новое диалоговое окно, введите имя пользователя, пароль и права доступа. Затем вы можете войти как этот пользователь:

    C:\Users\Charity>mysql -u el -p
    Enter password: **********
    mysql> select user();
    +----------------+
    | user()         |
    +----------------+
    | el@localhost   |
    +----------------+
    1 row in set (0.00 sec)
    mysql>
    

    Этот пользователь может делать все, что вы предоставили в разрешениях, определенных на шаге 7.

Если вы новичок, вам, возможно, не нужно вводить -p, просто наберите:

    mysql -u root

Команда mysql -u root -p предполагается запустить в командной строке Windows. Когда вы видите подсказку

mysql>

Это означает, что вы в настоящее время используете клиент командной строки MySQL (вы открыли его при первом запуске mysql в первой строке вашего образца).

Что вам нужно сделать, это запустить команду quit, так что вы вернулись в командной строке Windows, а затем запустите

mysql -u root -p

Это снова запустит клиент MySQL, но попросит ввести пароль для входа в систему как пользователь. root,

Другие вопросы по тегам