Как узнать пароль root для MySQL


167

Я не могу понять мой пароль root для MySQL; как я могу это выяснить? Есть ли файл, где хранится этот пароль?

Я перехожу по этой ссылке, но у меня нет директории directadmin в локальной сети.


Найден простым поиском в Google: dev.mysql.com/doc/refman/5.0/ru/resetting-permissions.html
Арран

11
пароль root по умолчанию - ждать его - «root» (без кавычек) или пароль вообще отсутствует (и действительно ли этот сервер MySQL является вашим)
Nikola Bogdanović

да, это мой локальный сервер MySQL на моем ноутбуке
Om3ga

так кто-то просто проходил через этот вопрос и бросал понижательную оценку на каждый правильный и соответствующий ответ?
Lanzz

Ответы:


142

благодаря @thusharaK я смог сбросить пароль root, не зная старого пароля.

На Ubuntu я сделал следующее:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

Затем запустите mysql в новом терминале:

mysql -u root

И выполните следующие запросы, чтобы изменить пароль:

UPDATE mysql.user SET authentication_string=PASSWORD('password') WHERE User='root';
FLUSH PRIVILEGES;

В MySQL 5.7 поле пароля в поле таблицы mysql.user было удалено, теперь имя поля - «authentication_string».

Выйдите из безопасного режима mysql и запустите службу mysql:

mysqladmin shutdown
sudo service mysql start

24
Я должен был использовать mysqladmin -u root -p shutdown, с новым паролем.
SL Barth - Восстановить Монику

2
Хороший поток инструкций, особенно: затем запустите mysql в новом терминале
Мохаммед Субхи Шейх Куруш

8
я не могу это сделать mysql -u root. Это показывает ошибкуAccess denied
Avinash Raj

4
@AvinashRaj: Попробуйте это: sudo mysql -u root
Аллен Гингрич

Потрясающие. Я понимаю, что работало в RHEL 7: Терминал 1: служба sudo остановка mysql sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-network Терминал 2: mysql -u root ОБНОВЛЕНИЕ mysql.user SET Password = PASSWORD («новый пароль») WHERE User = «root»; ПРИВИЛЕГИИ ПРОМЫВКИ; mysqladmin -u root -p shutdown Примечание. После завершения работы mysqladmin в Терминале 1 вы увидите выход из безопасного режима. sudo service mysql start Вот и все, и он работает как чудо с новым паролем!
Пользователь StackOverFlow

65

Вы не можете просмотреть хешированный пароль; единственное, что вы можете сделать, это сбросить его!

Остановите MySQL:

sudo service mysql stop

или

$ sudo /usr/local/mysql/support-files/mysql.server stop

Запустите его в безопасном режиме:

$ sudo mysqld_safe --skip-grant-tables

(над строкой целая команда)

Это будет постоянная команда до завершения процесса, поэтому откройте другое окно оболочки / терминала и войдите без пароля:

$ mysql -u root

mysql> UPDATE mysql.user SET Password=PASSWORD('password') WHERE User='root';

MySQL 5.7 и выше:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

Запустите MySQL:

sudo mysql start

или

sudo /usr/local/mysql/support-files/mysql.server start

Ваш новый пароль - «пароль».


sudo /usr/local/mysql/support-files/mysql.server stop sudo: /usr/local/mysql/support-files/mysql.server: команда не найдена
Isuru

Что делать в этом случае?
Исуру

Похоже, MySQL не установлен должным образом. Удалите его правильно и переустановите.
17.12.15

Огромное спасибо. Что-то пошло не так с my, mysql_secure_installationи root больше не сотрудничал. Что делает authentication_stringнастройка?
будет

3
Чтобы перезапустить, попробуйте mysqladmin -u root -p shutdownс новым паролем тогдаsudo service mysql start
forumulator

37

MySQL 5.7 и выше сохраняет корень в файле журнала MySQL.

Пожалуйста, попробуйте это:

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

В моем случае пароль не был здесь; Однако, вместо этого, /var/log/mysql/error.logсодержал предупреждение о корневой пароль порожняком - поэтому этот вид сэкономленного мой день :)
Джанаке Бандары

19

одна вещь, которая спровоцировала меня на новой установке mySQL, и удивилась, почему я не могу заставить работать пароль по умолчанию и почему даже методы сброса не работают. хорошо получается, что в Ubuntu 18 самая последняя версия сервера MySQL не использует пароль по умолчанию для пользователя root по умолчанию. Таким образом, это означает, что не имеет значения, что вы установили, оно не позволит вам его использовать. он ожидает, что вы войдете из привилегированного сокета. так

mysql -u root -p

не будет работать вообще, даже если вы используете правильный пароль !!! он будет запрещать доступ независимо от того, что вы вставили.

Вместо этого вам нужно использовать

sudo mysql

это будет работать без любого пароля. затем, когда вам нужно, введите

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

затем выйдите из системы, и теперь кровавая вещь, наконец, примет ваш пароль


17

Вы не можете найти это. Он хранится в базе данных, к которой вам нужен пароль root, и даже если вы каким-то образом получили доступ, он хэшируется с односторонним хешем. Вы можете сбросить его: http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html


14

Выполните следующие действия для сброса пароля в системе Windows.

  1. Остановить службу Mysql из диспетчера задач

  2. Создайте текстовый файл и вставьте приведенную ниже инструкцию

MySQL 5.7.5 и более ранние:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');


MySQL 5.7.6 и позже:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yournewpassword';

  1. Сохранить как mysql-init.txtи поместить его в 'C' drive.

  2. Откройте командную строку и вставьте следующее

C:\> mysqld --init-file=C:\\mysql-init.txt


2
Это было спасение жизни, большой совет!
Николас Крайдберг

работал в Centos7 mysqld --init-file=/root/m.txt. Я добавил вышеупомянутую команду SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');в /root/m.txt
Дамодар Башьял

8

Если менеджер пакетов не просит вас ввести пароль root во время установки, пароль по умолчанию - пустая строка. Чтобы подключиться к только что установленному серверу, введите:

shell> mysql -u root --password=
mysql>

Чтобы изменить пароль, вернитесь к оболочке unix и введите:

shell> mysqladmin -u root --password= password root

Новый пароль - «root». Теперь подключитесь к серверу:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

К сожалению, пароль изменился. Используйте новый root:

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

Бинго! Новые делают что-то интересное

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Maurycy


1
теперь он использует не пароли, а аутентифицированные сокеты. так что просто смена пароля уже недостаточно хороша.
Кит Рамос,

7

В дополнение к другим ответам, при установке cpanel, пароль root для mysql хранится в файле с именем /root/.my.cnf. (и сервис cpanel сбрасывает его обратно при изменении, поэтому другие ответы здесь не помогут)


6

Вы можете просмотреть пароль root для MySQL, ну, я попробовал его на MySQL 5.5, поэтому не знаю, хорошо ли работают другие новые версии или нет

nano ~/.my.cnf

4

Это сработало для меня:

На терминале наберите следующее

$ sudo mysql -u root -p

Введите пароль: // просто нажмите ввод

MySQL>


Похоже, что сервер MySQL больше не использует пароль по умолчанию. Вы должны запустить клиент MySQL как суперпользователь (sudo), чтобы получить доступ, пока вы не измените метод входа в систему.
Кит Рамос,

4

Пароль по умолчанию, который работал для меня после немедленной установки сервера MySQL: mysql


2
возможно, он не ответил на вопрос, но многие люди, приходящие сюда, могут решить, что это их проблема.
Охад Коэн

3

Процедура меняется в зависимости от версии MySql. Следуйте процедуре точно так же, как описано для вашей версии:

  • СОВЕТЫ - Прочтите перед страницей инструкции для вашей версии MySql *

  • На шаге 5: вместо запуска CMD создайте ярлык на рабочем столе с именем CDM.exe. Затем щелкните правой кнопкой мыши по ярлыку и выберите «Выполнить от имени администратора».

  • На шаге 6: пропустите первую предложенную версию команды и выполните вторую, с параметром --defaults-file.

  • После выполнения команды, если все в порядке, окно CMD остается открытым, а команда шага 6 продолжает выполняться. Просто закройте окно (нажмите «x»), а затем принудительно закройте MySQl из диспетчера задач.

  • Удалите файл командами SQL и снова запустите MySQL. Пароль должен быть изменен сейчас.

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

... просто поменяйте версию в ссылке (5.5, 5.6, 5.7)


3

В вашем файле "hostname" .err внутри папки данных, над которой работает MySQL, попробуйте найти строку, которая начинается с:

«Для roor @ localhost создан временный пароль»

ты можешь использовать

less /mysql/data/dir/hostname.err 

затем косая черта, за которой следует строка, которую вы хотите найти

/"A temporary password"

Затем нажмите n, чтобы перейти к следующему результату.



0

система:

  • CentOS Linux 7
  • mysql Ver 14.14 Distrib 5.7.25

Процедура:

  1. Откройте два сеанса оболочки, войдя в один из них как пользователь root, а другой - как пользователь root, имеющий доступ к mysqlкоманде.

  2. В вашей корневой сессии остановите обычный прослушиватель mysqld и запустите прослушиватель, который обходит аутентификацию по паролю ( примечание: это серьезная угроза безопасности, поскольку любой, имеющий доступ к mysql команде, может получить доступ к вашим базам данных без пароля. Возможно, вы захотите закрыть активные сеансы оболочки и / или отключить доступ к оболочке перед этим):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. В сеансе без рута войдите в mysql и установите пароль root для mysql:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. В вашей корневой сессии убейте экземпляр пароля mysqld без пароля и восстановите обычный прослушиватель mysqld для службы:

    # kill %1
    # systemctl start mysqld

  5. В сеансе без рута протестируйте новый пароль root, который вы настроили выше:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>


-2

Я решил это по-другому, это может быть проще для некоторых.

Я сделал это так, потому что попытался запустить в безопасном режиме, но не могу подключиться с ошибкой: ОШИБКА 2002 (HY000): Не удается подключиться к локальному серверу MySQL через сокет '/var/run/mysqld/mysqld.sock' (2)

Что я сделал, чтобы подключиться как root:

$ sudo mysql -u root

Затем я создал нового супер пользователя:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

Тогда войдите как myuser

$ mysql -u myuser -p -h localhost

Попытка изменить пароль не дала мне никаких ошибок, но ничего не сделала для меня, поэтому я удалил и заново создал пользователя root

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

Пользователь root теперь работает с новым паролем


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.