今天想用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。