Я пытался разрешить удаленный вход в 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 с этим параметром