01_02_mysql10_用户与权限管理

时间:2024-02-29 18:14:56

用户与权限管理


学习再总结宋红康老师课程内容


1.用户管理


MySQL用户可以分为普通用户root用户。root用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户的密码等管理权限;普通用户只拥有被授予的各种权限。
MySQL提供了许多语句用来管理用户账号,这些语句可以用来管理包括登录和退出MySQL服务器、创建用户、删除用户、密码管理和权限管理等内容。
MySQL数据库的安全性需要通过账户管理来保证

1.1登录MySQL服务器

启动MySQl服务后,可以通过mysql命令来登录MySQL服务器,命令如下:

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

参数解释:

  • -h参数后面接主机名或者主机IP,hostname为主机。hostIP为主机IP。
  • -P参数后面接MySQL服务的端口,通过该参数连接到指定的端口。MySQL服务的默认端口为3306,不适应该参数时自动连接到3306端口,port为连接的端口号。
  • -u参数后面接用户名,username为用户名。
  • -p参数会提示输入密码。
  • DatabaseName参数指明登录到哪一个数据库中。如果没有该参数,就会直接登录到MySQL数据库中,然后可以使用USE命令来选择数据库。
  • -e参数后面可以直接加SQL语句。登录MySQL服务器以后即可执行这个SQL语句,然后退出MySQL服务器。

1.2创建用户…

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

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

1.3修改用户…

修改用户名:

1.4删除用户…

在MySQL数据库中,可以使用DROP USER语句来删除普通用户,也可以直接在mysql.user表中删除用户。
方式1:使用DROP方式删除(推荐)
方式1:使用DELETE方式删除(不推荐)

1.5设置当前用户密码

适用于root用户修改自己的密码,以及普通用户登录后修改自己的密码。
root用户拥有很高的权限,因此必须保证root用户的密码安全。root用户可以通过多种方式来修改密码,使用ALTER USER修改用户密码是MySQL 官方推荐的方式。此外,也可以通过SET语句修改密码。由于MySQL8中已移除了PASSWORD()函数,因此不再使用UPDATE语句直接操作用户表修改密码。
旧的写法如下:

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

这里介绍推荐的写法:
1.使用ALTER USER命令来修改当前用户密码
用户可以使用ALTER命令来修改自身密码,如下语句代表修改当前登录用户的密码。基本语法如下:

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

2.使用SET语句来修改当前密码
使用root用户登录MySQL后,可以使用SET语句来修改密码,具体SQL语句为:

SET PASSWORD='新密码';

该语句会自动将密码加密后再赋给当前用户。

1.6修改其他用户密码

root用户不仅可以修改自己的密码,还可以修改其他普通用户的密码。root用户登录MySQL服务器后,可以通过ALTER语句SET语句来修改普通用户的密码。由于PASSWORD()函数已移除,因此使用UPDATE直接操作用户表的方式已不再使用。
1.使用ALTER语句来修改普通用户的密码
语法基本形式如下:

ALTER USER user [IDENTIFIED BY '新密码'][,user[IDENTIFIED BY '新密码']]...;

其中user参数表示新用户的账户,由用户名和主机名构成;“IDENTIFIED BY”关键字用来设置密码。
2.使用SET命令来修改普通用户密码
使用root用户登录到MySQL服务器后,可以使用SET语句来修改普通用户的密码。SET语句的代码如下:

SET PASSWORD FOR 'username'@'hostname'='new_password';

其中,username参数是普通用户的用户名;hostname参数是普通用户的主机名;new_password是新密码。
3.使用UPDATE语句修改普通用户的密码(不推荐)
使用root用户登录到MySQL服务器后,可以使用UPDATE语句修改MySQL数据库的user表的password字段,从而修改普通用户的密码。使用UPDATE语句修改用户密码的语法如下:

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

1.7MySQL8密码管理(了解)…

MySQL中记录使用过的历史密码,目前包含如下密码管理功能:
(1)密码过期:要求定期修改密码。
(2)密码重用限制:不允许使用旧密码。
(3)密码强度评估:要求使用高强度的密码。

1.密码过期策略
2.密码重用策略

2.权限管理


关于MySQL的权限简单的理解就是MySQL允许你做你权力以内的事情,不可以越界。比如只允许你执行SELECT操作,那么及你就不能执行UPDATE操作。只允许你从某台机器上连接MySQL,那么你就不能从除了那台机器以外的其他机器连接MySQL。

2.1权限列表…

MySQL的权限:

SHOW privilige;

2.2授予权限的原则

权限控制主要是出于安全因素因此需要遵循以下几个经验原则
1、只授予能满足需要的最小权限,防止用户干坏事。
2、创建用户的时候限制用户的登录主机,一般是限制成指定IP或者内网IP段。
3、为每个用户设置满足密码复杂度的密码
4、定期清理不需要的用户,回收权限或者删除用户。

2.3授予权限…

给用户授权的方式有两种,赋不上通过把角色赋予用户给用户授权直接给用户授权

2.4查看权限…

2.5收回权限…

3.权限表


4.访问控制(了解)


5.角色管理


6.配置文件的使用


6.1配置文件格式

与在命令行中指定启动选项不同的是,配置文件中的启动选项

6.2启动命令和选项组

6.3特定MySQL版本的专用选项组

6.4同一个配置文件中多个组的优先级

6.5命令行和配置文件中启动项的区别

7.系统变量