
不是吧!阿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
就是我们要选择的加密方式
本篇文章采用 署名 4.0 国际 (CC BY 4.0) 许可协议进行许可。
arrow_back
上一篇
arrow_forward
下一篇