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

65

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

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

Теги:

9 ответов

128
Лучший ответ

Вы можете сбросить пароль 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';
  • 0
    Кстати, я должен использовать sudo с такими командами, как mysqld_safe?
  • 3
    @ Бенджамин Я сделал все шаги в вашем ответе, но я все еще получаю отказ в доступе для пользователя 'root' @ 'localhost' - есть идеи почему?
Показать ещё 19 комментариев
18

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

Алекс, похоже, что вы установили сервер 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

  • 1
    Не работает
  • 0
    Спасибо! Я продолжал пытаться sudo dpkg-reconfigure mysql-server , но это не сработало.
Показать ещё 1 комментарий
7

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;

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

  • 0
    Можете ли вы помочь и предоставить подробную информацию о том, что именно делает? --skip-grant-tables --skip-networking & Мне было очень полезно решать запросы клиентов, но я хотел бы узнать об этом, чтобы я мог оценить риск. Спасибо!
  • 0
    skip-grant-tables безусловно, требует осторожности, поскольку любой, имеющий доступ к серверу, может получить доступ ко всем схемам для экземпляра. Я думаю, что skip-networking - это не проблема, но вы должны оценить это сами. Если я пытаюсь сбросить пароль root без текущего пароля root, я уже считаю себя в безопасности :). Не уверен, что есть более «безопасный» подход.
Показать ещё 1 комментарий
6
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
  • 1
    Это единственное решение, которое работало для меня на Ubuntu 16.04 LTS
3

Для 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>  
  • 2
    Вы можете быть немного более многословным в ответе. Пожалуйста, объясните, что делают команды, которые вы предлагаете.
1

Hmm Mysql 5.7.13 до reset все, что я сделал, было:

$ 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');

Надеюсь, что это поможет кому угодно:)

1
0

Есть простое решение.

MySql 5.7 поставляется с анонимным пользователем, поэтому вам нужно перенастроить сервер MySQL.

Вы можете сделать это с помощью этой команды

попытаться найти временный проход:

grep 'temporary password' /var/log/mysqld.log

затем:

sudo mysql_secure_installation

По этой ссылке больше информации о MySQL 5.7

https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html

  • 0
    Я с тобой согласен.
0

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

1.kill mysql:

$ sudo service mysql stop

2.start mysql в режиме -skip-grant-tables:

$ sudo mysqld_safe --skip-grant-tables 

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

так, это всего лишь обходной путь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню