mysql修改密码(linux为例)--多版本

mysql修改密码(linux为例)

摘要:笔者在学习mysql的时候尝试修改mysql密码,发现网上的很多方法用不了,出现如下报错,便多花了一些时间去测试解决,最终发现是由于不同版本的mysql修改密码方式也不尽相同,在网上很多地方都没有说明,这里附上一些方案。

--sql修改密码报错(语法报错)
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '("lm123") where user = "root"' at line 1

1.系统层面修改

# linux命令
# mysqladmin -uroot -p旧密码 password 新密码(引号不是必须)
# 8.0及5.7版本可以(5.6没有linux环境测试,有需要可自行测试)
mysqladmin -uroot -p123456 password lm123

2.改用户表:update语句


-- 密码的密文由mysql的内置函数password产生
--password函数可接收"明文密码"字符串,产生"密文字符串"
--root修改密码也就是先使用内置函数password产生密文,然后使用新密文替换旧密文.密码修改完成
-- 需要使用password函数时会报错:Password hash should be a 41-digit hexadecimal number

-- 1.先使用数据库mysql
use mysql;

-- 2.修改表内容:
-- 5.6版本,密码列字段为password
update user set password = password("lm123") 
where user = "root";

-- 5.7版本,密码列字段为authentication_string
update user set authentication_string = password("lm123")
where user = "root";
 
-- 8.0,不再使用password函数,直接转化为密文,5.7版本也可用
update user set authentication_string = "lm123"
where user = "root";

3.set password语句

-- 8.0,无需password函数,5.7可用
set password for root @localhost='lm1234'

-- 5.6版本,使用password函数转换密文,5.7可用
set password for root @localhost=password('lm=1234');

4.alter语句

--5.7及8.0.x可用,5.6版本无法使用
alter user root@localhost identified by 'lm123';

最后提供忘记密码修改方法

# 跳过密码验证
# MySQL 8.0.x 版本推荐使用命令
mysqld --console --skip-grant-tables --shared-memory

# 低版本,停止mysql服务后,输入
# mysqld --skip-grant-tables

# 新建窗口,找到mysql二进制文件,以无密码方式登录
cd /usr/local/mysql/bin
./mysql <<EOF

--刷新权限
flush privileges;

--重置密码(可选上面提供的修改方法)
set password for root@localhost='lm123';

EOF

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值