随笔时间:2022-04-05
随笔内容:MySQL的root账户密码修改问题
服务端环境:Ubuntu18.04,MySQL5.7.3
背景介绍:刚购买的腾讯云服务器,首次安装MySQL,执行mysql_secure_installation后,提示输入root密码,原本以为是空密码,直接回车,提示错误
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO);
使用mysql -u root -p登录mysql,问题依旧,只能选择把密码重置;
实现方法:
1、修改mysql的配置文件,尝试使用安全模式进入
cd /etc/mysql/mysql.conf.d
sudo vi mysqld.cnf(sudo nano mysqld.cnf)
在图中位置追加 skip-grant-tables
保存退出;
2、重启MySQL服务,并用安全模式进入MySQL
sudo service mysql restart
mysql -u root -p
系统会提示输入密码,不管他,直接回车就行
3、修改root账户密码
这里有个小问题,MySQL根据不同版本,命令不一样,我是参考了别的大神的文章,文章链接为MySQL5.7.9版本后废除了Password字段和Password()函数+MySQL登录不了如何修改登录密码?_scl、的博客-CSDN博客_mysql password()
具体原因大神在这篇文章中解释的很清楚,感谢!
我引用下
① MySQL Version <5.7
update mysql.user set authentication_string=password('123456') where host='localhost' and user='root';
② MySQL Version =5.7
update mysql.user set password=password('123456') where host='localhost' and user='root';
③ MySQL Version >5.7
flush privileges;
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
flush privileges;
4、修改配置文件并重启MySQL服务
cd /etc/mysql/mysql.conf.d
sudo vi mysqld.cnf(sudo nano mysqld.cnf)
原来追加的内容注释掉 #skip-grant-tables
重启MySQL,并进入MySQL
sudo service mysql restart
service mysql status 可以查看下系统状态
mysql -u root -p
5、问题解决。