menu HCG_Sky's Blog
more_vert
chevron_right 首页 » 学习笔记,教程,随笔 » MySQL 8.0 用户密码的修改
MySQL 8.0 用户密码的修改
2022-03-27 | 学习笔记,教程,随笔 | 暂无评论 | 291 次阅读 | 431字

不是吧!阿Sir!跟着学也语法错误????

前言

 今天在了解MySQL的DCL时,跟着视频学习时,老师讲了一条修改用户密码的语法,但是在输入后却报错了,思考了一下可能是版本的问题(我使用的是8.0,视频教学中使用的是5.7),因此我在搜寻、探索一番后得到了解决的方案,在此记录一下

先使用老师讲的语法进行修改密码(我使用的是MySQL8.0)

# 语法
UPDATE USER SET PASSWORD = PASSWORD('新密码') WHERE USER = '用户名';
# 示例
UPDATE USER SET PASSWORD = PASSWORD('666') WHERE USER = 'hcg';    

 可以看到并不能修改用户密码,而且报错:语法有问题



在查询官方文档后发现,在8.0+就已经抛弃了这样的密码修改方法

取而代之的是ALTER......


这里我们使用新的密码修改语法来演示一下

-- 语法
ALTER USER '用户名'@'主机名'
  IDENTIFIED BY '新密码'
  REPLACE '旧密码';
-- 例子
 ALTER USER 'hcg'@'localhost'
  IDENTIFIED BY '66666666';

 可以看到用户密码已更改成功!



哎?你可能回问:“REPLACE 呢?怎么不带上它耍啊?”
好问题!REPLACE是一个子句,官方对于它的解读如下

 总结就是,我们这个语句是用来修改指定用户的密码的,只有当指定用户为当前用户时,才需要REPLACE进行旧密码验证,修改其它用户时不需要REPLACE来验证旧密码的,所以我改密码的SQL里没有REPLACE这个子句


当然了,改当用户的密码我们也可以直接使用官方给出的专属语句进行修改

ALTER USER USER() IDENTIFIED BY '新密码' REPLACE '旧密码';

顺便提一下,在MySQL 8.0中是可以指定密码的加密方式的,如下

ALTER USER '用户名'@'主机名'
  IDENTIFIED WITH caching_sha2_password BY '新密码'
  REPLACE '旧密码';

caching_sha2_password就是我们要选择的加密方式

发表评论
暂无评论
textsms
account_circle
email
link


七牛云 腾讯云 阿里云 百度统计 TrustAsia 安全签章 MySSL 安全签章