Назад | Перейти на главную страницу

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

Когда я работаю локально, мне действительно не нужно вводить пароль для доступа к моей базе данных. Я изменил свой пароль root при первой установке MySQL, но я не знаю, как изменить свой пароль обратно. Что я должен делать?

Чтобы изменить пароль root на newpassword:

 mysqladmin -u root -p'oldpassword' password 'newpassword'

Чтобы изменить его так, чтобы root не требовал пароля:

 mysqladmin -u root -p'oldpassword' password ''

Примечание. Думаю, важно, чтобы между -p и 'oldpassword' но я могу ошибаться в этом

Вместо того, чтобы удалять пароль (что может иметь неприятные последствия в будущем, если вы случайно откроете этот сервер для дебрейщиков), поместите текущий пароль (и свое имя пользователя) в ~/.my.cnf (или, предположительно, какое-то эквивалентное место в Windows), которое выглядит так:

[client]
user = root
password = s3kr1t

Это дает MySQL потрясающую возможность автоматически входить в систему с использованием предоставленных учетных данных, не оставляя вас широко открытыми для неприятностей в будущем.

  1. Остановите mysqld и перезапустите его с - пропустить столы грантов вариант.
  2. Подключитесь к нему, просто mysql.
  3. Измените пароль root:
UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';

FLUSH PRIVILEGES;

Для справки: официальные документы mysql.

Обратите внимание, что начиная с MySQL 5.7, validate_password плагин активен по умолчанию и не позволяет использовать пустой пароль.

Вам необходимо отключить этот плагин, чтобы разрешить пустой пароль:

UNINSTALL PLUGIN validate_password;
SET PASSWORD FOR root@localhost = PASSWORD('');

Будьте осторожны, если вы не заботитесь о безопасности, вы должны следовать совет @womble и используйте пароль вместе с .my.cnf файл для удобства.

Проверить мою статью Удаление пароля root MySQL по этой теме!

В более новых версиях

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE User='root'

и это удалит пароль

UPDATE mysql.user SET authentication_string=PASSWORD('') WHERE User='root'

Я также создал пароль root при установке и хотел вернуться к использованию аутентификации unix, как только понял, что если я запускаю команды или запускаю приложения с правами root, они могут подключаться к базе данных без какого-либо пароля, что намного проще, чем иметь другой пароль.

Я подключился как root, используя пароль, затем запустил:

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

Чтобы протестировать, откройте новый Терминал и выполните sudo su затем mysql и проверьте, подключается ли он без пароля (это не сработало, когда был установлен пароль).

Я также создал учетную запись MySQL с тем же именем пользователя, что и моя учетная запись unix, опять же без пароля, и, используя учетную запись root, я предоставил ей доступ к нужным мне таблицам, затем я мог также подключаться из приложений из своей учетной записи пользователя без перехода на root .

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

Дополнительная информация и другие способы сделать это в MySQL Docs Как сбросить пароль root

Для последней версии MySQL 5.7.23:

mysqladmin -u root password '' -p