Как узнать мой пароль root MySQL?

Я только что установил MySQL на Ubuntu, и пользователь root не может войти:)

Как можно восстановить или узнать свой пароль? Используя пустой пароль не работает.

8 ответов


вы можете сбросить пароль root, запустив сервер с --skip-grant-tables и вход в систему без пароля, запустив следующее как root (или с sudo):

# service mysql stop
# mysqld_safe --skip-grant-tables &
$ mysql -u root
mysql> use mysql;
mysql> update user set authentication_string=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';
mysql> flush privileges;
mysql> quit
# service mysql stop
# service mysql start
$ mysql -u root -p

теперь вы должны иметь возможность войти в систему как root с новым паролем.

также можно найти запрос, который сбрасывает пароль в /home/$USER/.mysql_history или /root/.mysql_history пользователя, который сбросил пароль, но выше всегда будет работать.

Примечание: до MySQL 5.7 столбец назывался password вместо authentication_string. Замените строку выше на

mysql> update user set password=PASSWORD("YOUR-NEW-ROOT-PASSWORD") where User='root';

Я понимаю, что это старый поток, но я думал, что обновлю его своими результатами.

Алекс, похоже, вы установили сервер MySQL через мета-пакет "mysql-server". Это устанавливает последний пакет по ссылке (в моем случае mysql-server-5.5). Мне, как и вам, не было предложено ввести пароль MySQL при настройке, как я ожидал. Я полагаю, что есть два ответа:

Решение #1: Установите MySQL по полной имя:

$ sudo apt-get install mysql-server-5.5

или

решение #2: перенастроить пакет...

$ sudo dpkg-reconfigure mysql-server-5.5

необходимо указать полное имя пакета. Использование мета-пакета "mysql-server" не дало мне желаемого результата. Надеюсь, это кому-то поможет :)

ссылка:https://help.ubuntu.com/12.04/serverguide/mysql.html


MySQL 5.5 на Ubuntu 14.04 требуется несколько разные команды, как рекомендуется здесь. В двух словах:

sudo /etc/init.d/mysql stop
sudo /usr/sbin/mysqld --skip-grant-tables --skip-networking &
mysql -u root

а затем из подсказки MySQL

FLUSH PRIVILEGES;
SET PASSWORD FOR root@'localhost' = PASSWORD('password');
UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
FLUSH PRIVILEGES;

и цитируемый источник предлагает альтернативный метод.


для RHEL-mysql 5.5:

/etc/init.d/mysql stop

/etc/init.d/mysql start --skip-grant-tables

 mysql> UPDATE mysql.user SET Password=PASSWORD('newpwd') WHERE User='root';
 mysql> FLUSH PRIVILEGES;
 mysql> exit;

mysql -uroot -pnewpwd

mysql>  

sudo mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'YOUR_PASSWORD_HERE';
FLUSH PRIVILEGES;

mysql -u root -p # and it works


Хм Mysql 5.7.13 сбросить все, что я сделал, было:

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

$ mysqld_safe --skip-grant-tables & запустить mysql

$ mysql -u root

это как правильный ответ. Тогда все, что я сделал, это сделал @eebbesen.

mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('NEW-password-HERE');

надеюсь, что это поможет кому-нибудь там:)


в MYSQL 5.7, если вы используете mysql для целей разработки, просто:

1.убить mysql:

$ sudo service mysql stop

2.запустите mysql в режиме -- skip-grant-tables:

$ sudo mysqld_safe --skip-grant-tables 

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

Итак, это просто обходной путь.