Когда я работаю локально, мне действительно не нужно вводить пароль для доступа к моей базе данных. Я изменил свой пароль 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 потрясающую возможность автоматически входить в систему с использованием предоставленных учетных данных, не оставляя вас широко открытыми для неприятностей в будущем.
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