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 с нулевым пользователем по умолчанию с почти нулевыми привилегиями.
Из командной строки запустите mysql, как вы делали раньше:
C:\Users\Charity>mysql
Что приводит вас к приглашению mysql, запустите команду
select user();
mysql> select user(); +----------------+ | user() | +----------------+ | ODBC@localhost | +----------------+ 1 row in set (0.00 sec)
Этот вывод означает, что вы подключаетесь не как пользователь, а как не-пользовательский коннектор API. ODBC нет в
mysql.users
Таблица. Это пользователь, который подключается к MySQL, когда вы не указываете пользователя.Запустите другую команду:
mysql> select user from mysql.user; ERROR 1142 (42000): SELECT command denied to user ''@'localhost' for table 'user' mysql>
Мы не подключались как любой пользователь, поэтому он говорит нам, что доступ запрещен.
Запустите эти команды:
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>
Таким образом, мы вошли в систему как еще один не пользователь нашего определения. Вы ожидаете, что у этого пользователя, которого мы вытащили из шляпы, есть какие-либо привилегии вообще? Нет.
Хватит дурачиться и войдите как 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, вы можете видеть все.
Посмотрите на таблицу 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)
Возможно, вы захотите создать больше пользователей, чтобы позволить людям использовать базу данных, не давая им права что-либо делать с вашей базой данных. Держите варваров у рва.
Вы не хотите входить в систему как 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
,