MySQL OCP888题解062-修改密码

文章目录

  • 1、原题
    • 1.1、英文原题
    • 1.2、中文翻译
    • 1.3、答案
  • 2、题目解析
    • 2.1、题干解析
    • 2.2、选项解析
  • 3、知识点
    • 3.1、知识点1:SET PASSWORD语句
  • 4、总结

1、原题

1.1、英文原题

You are remotely logged in to MySQL as the user “backup”.The account has temporarily been granted full privileges WITH GRANT to perform the actions required. You want to change the password for the locally existing “backup” user.
Select the three command which will perform the required action.
A、ALTER USER USER IDENTIFIED BY ‘password’;
B、CREATE USER ‘backup’@‘localhost’ IDENTIFIED BY ‘password’;
C、ALTER USER ‘backup’@‘localhost’ IDENTIFIED BY ‘password’;
D、SET PASSWORD FOR ‘backup’@‘localhost’ = PASSWORD(‘password’)
E、ALTER USER ‘backup’ IDENTIFIED BY ‘password’;
F、SET PASSWORD= ‘password’;
G、SET PASSWORD FOR ‘backup’@‘localhost’ = ‘password’;

1.2、中文翻译

您以用户“backup”的身份远程登录MySQL。该帐户已被临时授予完整权限WITH GRANT以执行所需操作。您要更改本地现有“backup”用户的密码。选择将执行所需操作的三个命令。
A、ALTER USER USER IDENTIFIED BY ‘password’;
B、CREATE USER ‘backup’@‘localhost’ IDENTIFIED BY ‘password’;
C、ALTER USER ‘backup’@‘localhost’ IDENTIFIED BY ‘password’;
D、SET PASSWORD FOR ‘backup’@‘localhost’ = PASSWORD(‘password’)
E、ALTER USER ‘backup’ IDENTIFIED BY ‘password’;
F、SET PASSWORD= ‘password’;
G、SET PASSWORD FOR ‘backup’@‘localhost’ = ‘password’;

1.3、答案

C、D、G

2、题目解析

2.1、题干解析

本题考察MySQL如何修改用户密码。

2.2、选项解析

  1. 因为是已经存在的用户,所以不能再通过创建新用户方式修改密码,所以选项B错误。
  2. 注意题干里特别提到了" locally existing",所以主机名必须是’localhost’,所以选项A、E都不正确。
  3. 因为是本地用户,所以主机名必须是localhost,所以选项F错误。

3、知识点

3.1、知识点1:SET PASSWORD语句

  • MySQL既可以用ALTER USER语句、也可以用SET PASSWORD语句来修改账户密码,但优先使用ALTER USER,因为SET PASSWORD可能会被记录在服务器日志或客户端的历史文件中,如~/.mysql_history,存在泄密可能。

  • SET PASSWORD语句的功能是为MySQL账户指定密码,语法格式为SET PASSWORD [FOR user] = password_option

    1. password_option,有两种形式:password_option: { 'auth_string' | PASSWORD('auth_string')},如果用auth_string则意味着是一个明文(未加密的)密码。PASSWORD()参数是明文(未加密的)密码。PASSWORD()对密码进行散列,并返回加密的密码字符串,用于存储在mysql.user系统表中的账户行中。
    2. 在没有FOR user子句的情况下,该语句设置当前用户的密码。想要知道当前用户是谁,也就是服务器以哪一个账户认证你,可以调用CURRENT_USER()函数:SELECT CURRENT_USER();
    3. 帐户名的主机名部分,如果省略,默认为’%'。
    4. 任何使用非匿名账户连接到服务器的客户都可以改变该账户的密码。特别是,你可以改变你自己的密码。为一个命名的帐户设置密码(有FOR子句)需要mysql系统数据库的UPDATE权限。但为自己设置密码(对于没有FOR子句的非匿名账户)不需要特殊的权限。

官方参考文档

4、总结

  1. MySQL既可以用ALTER USER语句、也可以用SET PASSWORD语句来修改账户密码,但优先使用ALTER USER,因为SET PASSWORD存在泄密可能。
  2. SET PASSWORD语句的语法格式为SET PASSWORD [FOR user] = password_option,如果省略FOR USER,就是为当前用户自己修改密码,可以通过CURRENT_USER()函数了解当前用户是谁。当前用户只要不是匿名用户,则不需要任何特殊权限,就可以修改自己的密码。

你可能感兴趣的:(MySQL,mysql,数据库,服务器,ocp,sql)