Возвратите корневой доступ к серверу MySQL на Ubuntu

Я пытаюсь возвратить корневой доступ к базе данных 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 хранится затем, и как я изменяю его? Или как я отключаю тот плагин, о котором я не знаю.

0
задан 31 May 2017 в 00:05

3 ответа

Что необходимо сделать после Вас, таблицы предоставления пропуска являются подключением к Вашей базе данных, и используйте 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
1
ответ дан 3 November 2019 в 04:08
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

... неправильная команда. В 2015 тот столбец был удержан от использования и заменен столбцом "authentication_string".

Это должно быть

UPDATE user SET authentication_string=PASSWORD('MyNewPass') where USER='root'; 
1
ответ дан 3 November 2019 в 04:08

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

0
ответ дан 25 December 2019 в 06:49

Другие вопросы по тегам:

Похожие вопросы: