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

Docker部署RocketMQ时MySQL权限修复教程
本文讲述了作者在阿里云服务器上部署RocketMQ时遇到MySQL权限问题,通过跳过密码验证、添加和修改root用户权限、调整密码策略等步骤,解决了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.youkuaiyun.com/code_mzh/article/details/108243683
https://blog.youkuaiyun.com/ayychiguoguo/article/details/120370686
https://blog.youkuaiyun.com/u012069313/article/details/123051399

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值