jieye の 数字花园

Search

Search IconIcon to open search

2 用户与权限管理

Last updated Nov 14, 2022

# 2 用户与权限管理

# 1 用户管理

# 1.1 登录MySQL服务器

mysql –h hostname|hostIP –P port –u username –p DatabaseName –e "SQL语句"

参数:

举例:mysql -uroot -p -hlocalhost -P3306 mysql -e "select host,user from user"

# 1.2 创建用户

CREATE USER语句的基本语法形式如下:

CREATE USER 用户名 [IDENTIFIED BY '密码'][,用户名 [IDENTIFIED BY '密码']];

1
2
3
4
5
6
7
CREATE USER zhang3 IDENTIFIED BY '123123';  # 默认host是 %
CREATE USER 'kangshifu'@'localhost' IDENTIFIED BY '123456';
### 1.3 修改用户

```bash
UPDATE mysql.user SET USER='li4' WHERE USER='wang5';
FLUSH PRIVILEGES;

# 1.4 删除用户

  1. 使用DROP方式删除(推荐)
    使用DROP USER语句来删除用户时,必须用于DROP USER权限。DROP USER语句的基本语法形式如下:

    DROP USER user[,user]…;

    1
    2
    
    DROP USER li4 ;  # 默认删除host为%的用户
    DROP USER 'kangshifu'@'localhost';
    
  2. 使用DELETE方式删除:

    DELETE FROM mysql.user WHERE Host=’hostname’ AND User=’username’;

    执行完DELETE命令后要使用FLUSH命令来使用户生效FLUSH PRIVILEGES;

    举例:

    1
    2
    
    DELETE FROM mysql.user WHERE Host='localhost' AND User='Emily';
    FLUSH PRIVILEGES;
    

    注意:不推荐通过 DELETE FROM USER u WHERE USER='li4' 进行删除,系统会有残留信息保留。而drop user命令会删除用户以及对应的权限,执行命令后你会发现mysql.user表和mysql.db表的相应记录都消失了。

# 1.5 设置当前用户密码

旧的写法如下 :

1
2
 # 修改当前用户的密码:(MySQL5.7测试有效) 
 SET PASSWORD = PASSWORD('123456');

这里介绍推荐的写法 :

  1. 使用ALTER USER命令来修改当前用户密码 用户可以使用ALTER命令来修改自身密码,如下语句代表修改当前登录用户的密码。基本语法如下:ALTER USER USER() IDENTIFIED BY 'new_password';
  2. 使用SET语句来修改当前用户密码 使用root用户登录MySQL后,可以使用SET语句来修改密码,具体SQL语句如下:
    SET PASSWORD='new_password';该语句会自动将密码加密后再赋给当前用户。

# 1.6 修改其它用户密码

  1. 使用ALTER语句来修改普通用户的密码 可以使用ALTER USER语句来修改普通用户的密码。基本语法形式如下:

    1
    
     ALTER USER user [IDENTIFIED BY '新密码'] [,user[IDENTIFIED BY '新密码']]...;
    
  2. 使用SET命令来修改普通用户的密码 使用root用户登录到MySQL服务器后,可以使用SET语句来修改普 通用户的密码。SET语句的代码如下:SET PASSWORD FOR 'username'@'hostname'='new_password';

  3. 使用UPDATE语句修改普通用户的密码(不推荐)

    1
    
    UPDATE MySQL.user SET authentication_string=PASSWORD("123456") WHERE User = "username" AND Host = "hostname";
    

# 1.7 MySQL8密码管理(了解)

  1. 密码过期策略
    • 在MySQL中,数据库管理员可以手动设置账号密码过期,也可以建立一个自动密码过期策略
    • 过期策略可以是全局的 ,也可以为设置单独的过期策略。
      ALTER USER user PASSWORD EXPIRE;
      练习:ALTER USER 'kangshifu'@'localhost' PASSWORD EXPIRE;
  2. 使用SQL语句更改该变量的值并持久化
    SET PERSIST default_password_lifetime = 180; 建立全局策略,设置密码每隔180天过期
  3. 配置文件my.cnf中进行维护
    [mysqld]default_password_lifetime=180 #建立全局策略,设置密码每隔180天过期
    手动设置指定时间过期方式2:单独设置
    每个账号既可延用全局密码过期策略,也可单独设置策略。在 CREATE USER 和 ALTER USER 语句上加入 PASSWORD EXPIRE 选项可实现单独设置策略。下面是一些语句示例:
1
2
3
4
5
6
#设置kangshifu账号密码每90天过期:
CREATE USER 'kangshifu'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY; ALTER USER 'kangshifu'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
#设置密码永不过期:
CREATE USER 'kangshifu'@'localhost' PASSWORD EXPIRE NEVER; ALTER USER 'kangshifu'@'localhost' PASSWORD EXPIRE NEVER;
#延用全局密码过期策略:
CREATE USER 'kangshifu'@'localhost' PASSWORD EXPIRE DEFAULT; ALTER USER 'kangshifu'@'localhost' PASSWORD EXPIRE DEFAULT;
  1. 密码重用策略
    1 手动设置密码重用方式1:全局
    方式1: 使用SQL

    1
    2
    
    SET PERSIST password_history = 6; #设置不能选择最近使用过的6个密码
     SET PERSIST password_reuse_interval = 365; #设置不能选择最近一年内的密码
    

    方式2:my.cnf**配置文件

    1
    2
    3
    
    [mysqld]
    password_history=6
    password_reuse_interval=365
    

手动设置密码重用方式2:单独设置