今天想用mysql的root用户新建一个数据库,但是输入密码后,提示: Access denied for user 'root'@'localhost' (using password: YES) 。 百度搜索一下,解决方案就是重置root用户密码。
- 按照网上说的,修改mysql配置文件,我的文件路径为:
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf。在文件的模式为添加一句话:skip-grant-tables,使mysql登录跳过密码验证。
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
skip-grant-tables
- 修改完成后,重启mysql服务:
service mysql restart,使配置生效。 - 重新登录mysql :
mysql -u root -p,在弹出输入密码命令行后,直接回车。没问题,成功登录进mysql。输入修改root用户密码:ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootadmin'。此时我又碰到问题了,Access denied for user 'root'@'localhost' (using password: NO)。重新百度,解决方法是把mysql的只读模式去掉:
mysql> set global read_only=0;
mysql>flush privileges;
- 重新修改用户密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootadmin',此时提示成功。 - 再把mysql只读属性开启,退出mysql。```bash
mysql> set global read_only=1;
mysql>flush privileges;
mysql>exit;
- 把mysql密码验证打开,
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf。把文件末尾注释掉。
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
log-error = /var/log/mysql/error.log
#skip-grant-tables
7.重启mysql服务service mysql restart,并用新密码登录root。

本文详述了遇到MySQL root用户密码问题时的解决步骤,包括修改配置文件跳过密码验证,重置密码,解除只读模式及重启服务等关键操作。
2610





