Назад | Перейти на главную страницу

MySQL разрешает вход без пароля, я ничего не могу запустить

Я пытался разрешить удаленный вход в MySQL, поэтому изменил /etc/mysql/my.cnf привязать к 0.0.0.0 вместо того 127.0.0.1 (Я собирался вернуть его обратно, обещаю!), Но это не сработало, поэтому я попытался изменить хост пользователя root на * (который, как я позже понял, должен был быть%). В любом случае, теперь я не могу войти на сервер MySQL даже локально, если я не попытаюсь войти без пароля, и в этом случае он позволяет мне войти, но когда я пытаюсь выполнить какие-либо команды, он сообщает мне, что я не уполномочен делать это и что я пользователь ''@'localhost'. Я выключил сервер и запустил его с --skip-grant-tables, что позволяет мне входить в систему как root, и я действительно могу что-то делать, но я не уверен, как вернуть нормальные локальные входы root с паролем. Я только что проверил, и мое приложение PHP (у которого есть собственный набор учетных данных) работает нормально. И да, я вернул привязку к 127.0.0.1. Если это не очевидно, я новичок в MySQL.

Сервер работает под управлением Ubuntu 12.04 LTS.

РЕДАКТИРОВАТЬ: Чтобы было ясно, я не В настоящее время запустить это с --skip-grant-tables.

Прежде всего избавьтесь от --skip-grant-tables с участием

service mysql restart

Далее, давайте убедимся, что у root-пользователей mysql правильный пароль:

SELECT user,host FROM mysql.user WHERE password=PASSWORD('rootpassword');

Если ничего не вернется, исправьте пароль следующим образом:

UPDATE mysql.user SET password=PASSWORD('rootpassword') WHERE user='root';
FLUSH PRIVILEGES;

Далее убедимся, что у всех пользователей есть пароли:

SELECT user,host FROM mysql.user WHERE password='';

Если что-то вернется, удалите этих пользователей:

DELETE FROM mysql.user WHERE password='';
FLUSH PRIVILEGES;

Когда я увидел сообщение

когда я пытаюсь выполнить какие-либо команды, он сообщает мне, что я не уполномочен делать это и что im user '' @ 'localhost'. Я выключил сервер и запустил его с помощью --skip-grant-tables, что позволяет мне входить в систему как root, и я действительно могу что-то делать, но я не уверен, как вернуть нормальные локальные входы root с паролем

тогда я сказал себе было: OMG у него анонимные логины. Удалите их следующим образом:

mysql -uroot -p -e"DELETE FROM mysql.user WHERE user=''; FLUSH PRIVILEGES;"

Также удалите все ссылки на тестовые базы данных из mysql.db

mysql -uroot -p -e"DELETE FROM mysql.db WHERE LEFT(db,4)='test'; FLUSH PRIVILEGES;"

Это защитит вашу установку mysql

Вы НЕ должны продолжать запускать сервер mysql с --skip-grant-table. В противном случае у вас не будет никакого контроля над пользователями, подключающимися к вашему серверу!

Вы должны отменить изменения, которые вы внесли для своего пользователя root (и любых других пользователей). Когда закончите, просто остановите сервер mysql и запустите его в обычном режиме.

После запуска mysqld с --skip-grant-tables вы должны войти в mysql и выполнить:


use mysql;
UPDATE user SET Host='%' WHERE Host='*' AND User='root';


После этого выйдите из mysql и перезапустите сервер без --skip-grant-tables.

Попробуйте войти в систему как root и убедитесь, что все в порядке. (привилегии и т. д.)

--skip-grant-tables предназначен только для административных целей, вы не должны нормально запускать mysql с этим параметром