Поиск…


Вступление

После MySQL 5.7, когда мы устанавливаем MySQL, иногда нам не нужно создавать учетную запись root или вводить пароль root. По умолчанию при запуске сервера пароль по умолчанию хранится в файле mysqld.log . Нам нужно войти в систему, используя этот пароль, и нам нужно его изменить.

замечания

Восстановление и сброс пароля root по умолчанию с помощью этого метода применимо только для MySQL 5.7+

Что происходит при первом запуске сервера

Учитывая, что каталог данных сервера пуст:

  • Сервер инициализируется.
  • SSL-сертификат и ключевые файлы создаются в каталоге данных.
  • Плагин validate_password установлен и включен.
  • Создается учетная запись суперпользователя «root» @ «localhost». Пароль для суперпользователя устанавливается и сохраняется в файле журнала ошибок.

Как изменить пароль root с помощью пароля по умолчанию

Чтобы определить пароль «root» по умолчанию:

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

Измените пароль root как можно скорее, войдя с созданным временным паролем и установите пользовательский пароль для учетной записи суперпользователя:

shell> mysql -uroot -p 

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass5!'; 

Примечание. Плагин validate_password MySQL установлен по умолчанию. Это потребует, чтобы пароли содержали по крайней мере одну букву верхнего регистра, одну строчную букву, одну цифру и один специальный символ, а общая длина пароля не менее 8 символов.

сбросить пароль root, когда «/ var / run / mysqld» для файла сокета UNIX не существует »

если я забуду пароль, тогда я получу ошибку.

$ mysql -u root -p    

Введите пароль:

ОШИБКА 1045 (28000): Доступ запрещен для пользователя 'root' @ 'localhost' (с использованием пароля: YES)

Я попытался решить проблему, сначала зная статус:

$ systemctl status mysql.service

mysql.service - Сервер сообщества MySQL Загружен: загружен (/lib/systemd/system/mysql.service; включен; предварительный набор поставщика: en Активен: активен (работает) с тех пор 2017-06-08 14:31:33 IST; 38s ago

Затем я использовал код mysqld_safe --skip-grant-tables & но я получил ошибку:

mysqld_safe Directory '/ var / run / mysqld' для файла сокета UNIX не существует.

$ systemctl stop  mysql.service
$ ps -eaf|grep mysql
$ mysqld_safe --skip-grant-tables &

Я решил:

$ mkdir -p /var/run/mysqld
$ chown mysql:mysql /var/run/mysqld

Теперь я использую тот же код mysqld_safe --skip-grant-tables & и получаю

mysqld_safe Запуск mysqld-демона с базами данных из / var / lib / mysql

Если я использую $ mysql -u root я получу:

Версия сервера: 5.7.18-0ubuntu0.16.04.1 (Ubuntu)

Copyright (c) 2000, 2017, Oracle и / или ее аффилированные лица. Все права защищены.

Oracle является зарегистрированным товарным знаком корпорации Oracle и / или ее филиалов. Другие наименования могут быть торговыми марками их владельцев.

Введите «help»; или '\ h' для получения справки. Введите '\ c', чтобы очистить текущую инструкцию ввода.

MySQL>

Теперь время для смены пароля:

mysql> use mysql
mysql> describe user;

Чтение информации о таблице для заполнения имен таблиц и столбцов Вы можете отключить эту функцию, чтобы быстрее запустить с помощью -A

Изменена база данных

mysql> FLUSH PRIVILEGES;
mysql> SET PASSWORD FOR root@'localhost' = PASSWORD('newpwd');

или Если у вас есть учетная запись mysql root, которая может подключаться повсюду, вам также нужно:

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

Альтернативный метод:

   USE mysql
   UPDATE user SET Password = PASSWORD('newpwd')
   WHERE Host = 'localhost' AND User = 'root';

И если у вас есть учетная запись root, доступ к которой можно получить везде:

 USE mysql
 UPDATE user SET Password = PASSWORD('newpwd')
 WHERE Host = '%' AND User = 'root';`enter code here

теперь нужно quit из mysql и остановить / запустить

FLUSH PRIVILEGES;
sudo /etc/init.d/mysql stop
sudo /etc/init.d/mysql start

теперь снова `mysql -u root -p 'и используйте новый пароль для получения

MySQL>



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow