mysql set password_mysql8 参考手册--SET PASSWORD语句

SET PASSWORD [FOR user] auth_option

[REPLACE 'current_auth_string']

[RETAIN CURRENT PASSWORD]

auth_option: {

= 'auth_string'

| TO RANDOM

}

SET PASSWORD语句为MySQL用户帐户分配密码。密码可以在语句中显式指定,也可以由MySQL随机生成。该语句还可以包括指定要替换的帐户当前密码的密码验证子句和管理帐户是否具有辅助密码的子句auth_string和current_auth_string分别表示明文(未加密)密码。

注意

而不是使用SET PASSWORD 指定的密码,ALTER USER 为帐户改变,包括分配密码优选语句。例如:

ALTER USER user IDENTIFIED BY 'auth_string';

注意

随机密码生成,密码验证和辅助密码的条款仅适用于使用身份验证插件的帐户,该身份验证插件将凭据存储在内部。对于使用插件执行针对MySQL外部凭据系统进行身份验证的插件的帐户,密码管理也必须针对该系统从外部进行处理。有关内部凭据存储的更多信息,请参见 第6.2.15节“密码管理”。

该 REPLACE 'current_auth_string'子句执行密码验证,自MySQL 8.0.13起可用。如果给出:

REPLACE 以明文(未加密)字符串指定要替换的帐户当前密码。

如果需要更改帐户密码以指定当前密码,则必须提供该子句,以验证尝试进行更改的用户实际上知道当前密码。

如果帐户的密码更改可以但不必指定当前密码,则该子句是可选的。

如果给定了该子句但与当前密码不匹配,即使该子句是可选的,该语句也会失败。

REPLACE 仅在更改当前用户的帐户密码时可以指定。

有关通过指定当前密码进行密码验证的更多信息,请参见第6.2.15节“密码管理”。

该RETAIN CURRENT PASSWORD子句实现了双密码功能,自MySQL 8.0.14起可用。如果给出:

RETAIN CURRENT PASSWORD保留帐户当前密码作为其辅助密码,以替换任何现有的辅助密码。新密码成为主密码,但是客户端可以使用主密码或辅助密码使用该帐户连接到服务器。(例外:如果SET PASSWORD 语句指定的新密码为空,则即使提供了辅助密码,二级密码也将变为空RETAIN CURRENT PASSWORD。)

如果您指定RETAIN CURRENT PASSWORD 的主密码为空,则该语句将失败。

如果帐户具有辅助密码,并且您在未指定RETAIN CURRENT PASSWORD的情况下更改了其主密码,则辅助密码将保持不变。

SET PASSWORD允许以下 auth_option语法:

= 'auth_string'

为帐户分配给定的文字密码。

TO RANDOM

为帐户分配一个由MySQL随机生成的密码。该语句还返回结果集中的明文密码,以使其对执行该语句的用户或应用程序可用。

有关结果集和随机生成的密码的特征的详细信息,请参见“ 随机密码生成”。

从MySQL 8.0.18开始,可以生成随机密码。

重要

在某些情况下,SET PASSWORD可能会记录在服务器日志中或客户端的历史记录文件中,例如 ~/.mysql_history,这意味着具有对该信息的读取访问权限的任何人都可以读取明文密码。有关服务器日志发生这种情况的条件以及如何控制它的信息,请参见第6.1.2.3节“密码和日志记录”。有关客户端日志记录的类似信息,请参见 第4.5.1.3节“ mysql客户端日志记录”。

SET PASSWORD可以与带有或不带有FOR明确命名用户帐户的子句一起使用:

该语句 使用子句设置命名帐户的密码,该密码必须存在: FOR user

``

SET PASSWORD FOR 'jeffrey'@'localhost' = 'auth_string';

如果没有no 子句,该语句将为当前用户设置密码: FOR user

SET PASSWORD = 'auth_string';

使用非匿名帐户连接到服务器的任何客户端都可以更改该帐户的密码。(特别是,您可以更改自己的密码。)要查看服务器将您用作身份验证的帐户,请调用以下 CURRENT_USER()功能:

SELECT CURRENT_USER();

如果提供了 子句,则帐户名使用第6.2.4节“指定帐户名”中描述的格式 。例如: FOR user

SET PASSWORD FOR 'bob'@'%.example.org' = 'auth_string';

帐户名的主机名部分(如果省略)默认为 '%'。

SET PASSWORD将该字符串解释为明文字符串,并将其传递给与该帐户关联的身份验证插件,并将该插件返回的结果存储在mysql.user系统表的帐户行中 。(为插件提供了将值散列为所需的加密格式的机会。插件可以使用指定的值,在这种情况下不会发生散列。)

为命名帐户(带有FOR子句)设置密码 需要系统架构的 UPDATE特权 mysql。为自己设置密码(对于没有FOR条款的非匿名帐户 )不需要任何特殊权限。

修改辅助密码的语句需要以下特权:

该 APPLICATION_PASSWORD_ADMIN 权限才能使用RETAIN CURRENT PASSWORD的条款SET PASSWORD适用于您自己的账户报表。由于大多数用户仅需要一个密码,因此需要特权来操作您自己的辅助密码。

如果要允许一个帐户操作所有帐户的辅助密码,则应授予该 CREATE USER特权而不是 APPLICATION_PASSWORD_ADMIN。

当read_only系统变量被启用,SET PASSWORD 要求CONNECTION_ADMIN或 SUPER特权,除了任何其他所需的权限。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值