linux环境解决mysql登录不上的问题(如何修改mysql密码)

起因

最近使用docker在阿里云服务器上安装rocketmq,遇到各种各样的问题,重启过很多次服务器,装好后登录mysql发现挂了,重启mysql服务后输入mysql -u root -p命令报错:
ERROR:Access denied for user root@localhost (using password:YES)

解决思路

首先百度搜索报错原因说是登录密码错误,于是使用修改配置文件跳过密码验证登录成功后,发现还是无法修改密码,一通排查发现是数据库user表没有root这个用户了,于是添加root用户,重新修改密码终于登陆成功。于是记录一下修改密码的命令,省的每次都要重新查了。

解决办法

  1. 修改配置文件,跳过登陆验证,linux环境配置文件路径如下,文件中添加skip-grant-tables
vim /etc/my.cnf
# 在[mysqld]下添加一行
skip-grant-tables
  1. 重启并登录mysql服务,密码随便输
service mysqld restart
mysql -u root -p
# 登录后刷新权限,我也不知道具体作用
flush privileges; 
  1. 首先查看root用户是否存在
use mysql;
select user,host from user;
# 查询结果类似这样
+------------------+-----------+
| user             | host      |
+------------------+-----------+
| root             | %         |
| admin            | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
| mysql.sys        | localhost |
| zhangj           | localhost |
+------------------+-----------+
  1. 如果发现不存在root,可以参考这篇文章新建root用户并赋予权限
# 创建用户,这一步可能会报错,因为密码太简单,可以参考第5步修改密码限制或者先改成复杂密码
create user 'root'@'localhost' identified by '123456';
# 赋予所有库所有表操作权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
flush privileges;
# 新增完用户后可以将访问权限设置为%,这样就可以远程登录mysql了
use mysql
update user set host='%' where user='root';
  1. 存在root用户,直接修改密码即可。因为我想设简单密码,而mysql8.0默认长度是8,所以要修改一下密码限制
# 查看密码限制
SHOW VARIABLES LIKE 'validate_password%';
# 修改密码策略
set global validate_password.policy=0;
set global validate_password.length=3; 
set global validate_password.mixed_case_count=0; 
set global validate_password.special_char_count=0;
# 修改密码,需要注意的是'%'要与第3步查到的root对应的host一致,也有可能是'localhost'
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123';

参考文章

https://blog.csdn.net/code_mzh/article/details/108243683
https://blog.csdn.net/ayychiguoguo/article/details/120370686
https://blog.csdn.net/u012069313/article/details/123051399

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值