Я пытаюсь возвратить корневой доступ к базе данных MySQL, работающей на экземпляре Ubuntu (LTS 16.04.2). Проблемная ситуация: Я могу запустить и остановить использование MySQL /etc/init.d/mysql
но я не могу войти в систему ни с одним из
mysql -u root
mysql -u root -p
Последний с пустым паролем. У меня есть пустая запись в моем хранилище пароля. Я верю, чтобы помнить, что вход в систему был возможен без пароля, но возможно также я просто забыл сохранять свое хранилище пароля правильно. Возможно, также система поставлена под угрозу. Однако, так как у меня есть корневой доступ, должно быть возможно изменить пароль.
Я решил запустить использование сервера MySQL
sudo -u mysql /usr/sbin/mysqld --skip-grant-tables --skip-networking
управляйте и может теперь соединиться с клиентом. Согласно учебному руководству, я должен дать эти две команды
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
установить пароль. При выдаче второй команды я получаю соблюдающее предупреждение на консоли, где я запустил сервер:
[Warning] 'user' entry 'root@localhost' has both a password and an authentication plugin specified. The password will be ignored.
Я не помню настраивать любой плагин когда-либо. Действительно ли эта Ubuntu является значением по умолчанию? Где мой пароль MySQL хранится затем, и как я изменяю его? Или как я отключаю тот плагин, о котором я не знаю.
Что необходимо сделать после Вас, таблицы предоставления пропуска являются подключением к Вашей базе данных, и используйте mysql базу данных.
Так completly это был бы:
sudo systemctl stop mysql.service
sudo mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
use mysql;
FLUSH PRIVILEGES;
UPDATE user SET authentication_string = PASSWORD('newpass') WHERE User = 'root' AND Host = 'localhost';
\q
sudo killall mysqld
sudo systemctl start mysql.service
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
... неправильная команда. В 2015 тот столбец был удержан от использования и заменен столбцом "authentication_string".
Это должно быть
UPDATE user SET authentication_string=PASSWORD('MyNewPass') where USER='root';
Вам все равно нужно будет использовать sudo mysql -u root -p для входа в систему под новыми учетными данными (если вы не измените тип подключаемого модуля для пользователя root ...)