MySQL: ОШИБКА 1142 (42000) и ОШИБКА 1064 (42000) - PullRequest
0 голосов
/ 12 октября 2011

Я использую 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 ]

9 голосов
/ 12 августа 2013

Сообщение об ошибке командной строки 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.

1 голос
/ 12 октября 2011

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

mysql>

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

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

mysql -u root -p

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

0 голосов
/ 17 июля 2015

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

    mysql -u root
...