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

MySQL не может установить требование пароля для пользователя root?

Я только что установил новый vps с Ubuntu 18, я сделал новую установку mysql-server:

sudo apt-get update
sudo apt-get install mysql-server
sudo mysql_secure_installation

В этом меню я ввел свой новый пароль root (и подтвердил) Удалить анонимных пользователей? Да Запретить удаленный вход root? Да Удалить тестовые базы данных и получить к ним доступ? Да Обновить таблицу привилегий сейчас? да

И готово! ...или не

Я попытался войти в систему с помощью mysql -u root -p, но он продолжал сообщать, что мой доступ запрещен, на секунду я был смущен, затем я понял, что мне, вероятно, нужно войти в систему с помощью sudo, что я и сделал.

Но теперь, используя «mysql -u root» или «mysql -u root -p» (используя ЛЮБОЙ пароль), я могу войти в систему нормально ?!

Я совершенно ошеломлен ... Я пытался делать много разных вещей, например, использовать запрос для изменения пароля root, но, похоже, ничего не работает. Я всегда могу войти в систему с любым паролем (или без пароля) .. И это совершенно новая установка mysql (я удалил и переустановил ее 3 раза, чтобы посмотреть, не делаю ли я что-то по-другому ..)

Единственное, что я заметил, это выглядело иначе, это то, что в онлайн-уроках по установке mysql-server первый вопрос в «mysql_secure_installation» должен спросить вас, хотите ли вы установить пароль для root, о чем меня не спрашивали, просто предложили ввести новый пароль.

Я пробовал поискать в Google эту проблему, но смог найти "решения" только для обратного (люди либо не могут войти в систему, либо хотят установить всегда правильный пароль)

Я понятия не имею, куда идти дальше ...

После посещения «возможного дубликата» я был дальше от решения, чем раньше, но в конце концов я нашел решение. Но сначала мне пришлось запустить mysqld_safe, чтобы снова получить доступ к mysql без пароля: НО теперь я столкнулся с еще большими проблемами! Мне не удалось подключиться к безопасному сокету Mysqld. Это решение, которое я нашел опубликованным кем-то другим в stackoverflow:

Я обнаружил, что mysql.sock удаляется, когда служба mysql остановлена, и mysqld_safe не может его создать (я не мог найти причину), поэтому мое решение было резервное копирование папки sock и восстановление перед запуском mysqld_safe

Запустить сервер $ sudo service mysql start

Перейдите в папку sock $ cd / var / run

Создайте резервную копию sock $ sudo cp -rp ./mysqld ./mysqld.bak

Остановить сервер $ sudo service mysql stop

Восстановить sock $ sudo mv ./mysqld.bak ./mysqld

Запустите mysqld_safe $ sudo mysqld_safe --skip-grant-tables --skip-network &

Запустить оболочку mysql mysql -u root

После этого я снова попытался сбросить пароль, используя различные приведенные примеры ... никто не справился с этой задачей, но решение было в плагине, «возможный дубликат» предлагал установить плагин на '', но это не сработало.

Однако то, что у меня сработало, - это установить для него собственный пароль mysql, и я выполнил следующие команды:

use mysql;
update user set authentication_string=PASSWORD("") where User='root';
update user set plugin="mysql_native_password" where User='root';  # THIS LINE

flush privileges;
quit;

Теперь MySQL работает так, как ожидалось: я могу войти в mysql root от любого пользователя (не обязательно при использовании sudo), и больше не принимаются все пароли. (Я понятия не имел, что существует какой-то плагин аутентификации, это не первый раз, когда я настраиваю базу данных mysql, но этот плагин для меня совершенно новый)