持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第4天,点击查看活动详情
前言
上篇我们学习了MySQL中的权限管理。有兴趣的小伙伴可以阅读(# MySQL学习-权限管理(二))。
下面我们继续学习MySQL中的权限管理。
权限管理
权限表
USER表
USER表是MySQL中最重要的一个权限表,记录用户账号和权限信息,共有49个字段,下面罗列其中几个:
| 字段名 | 数据类型 | 默认值 |
|---|---|---|
| Host | char(60) | |
| User | char(16) | |
| Select_priv | enum('N', 'Y') | N |
| Insert_priv | enum('N', 'Y') | N |
| Update_priv | enum('N', 'Y') | N |
| Delete_priv | enum('N', 'Y') | N |
这些字段可以分成4类,分别是范围列(用户列)、权限列、安全列和资源控制列。
- 范围列
- host:表示连接类型
- %表示所有远程通过TCP方式连接
- IP连接如127.0.0.1通过制定ip地址进行的TCP方式连接
- 机器名通过制定网络中的机器名进行的TCP方式连接
- ::1IPv6的本地ip地址,等同于IPv4的127.0.0.1
- localhost本地方式通过命令行的方式连接,比如mysql -u xxx -p xxx的方式连接
- user:表示用户名,同一个用户通过不同方式链接的权限是不一样的。
- password:密码
- 所有的密码串通过password明文字符串生成的密文字符串。
- MySQL5.7之后版本的密码保存到authentication_string字段中,不再使用password字段。
- host:表示连接类型
- 权限列
- Grant_priv字段:表示是否拥有GRANT权限。
- Shutdown_priv字段:表示是否拥有停止MySQL服务的权限。
- Super_priv字段:表示是否拥有超级权限。
- Execute_priv字段:表示是否拥有EXECUTE权限。拥有EXECUTE权限。可以执行存储过程和函数。
- Select_priv,Insert_priv等:为该用户所拥有的权限。
- 安全列
- 安全列有6个字段,其中两个与ssl相关(ssl_type,ssl_cipher),用于加密。两个与x509相关(x509_issuer,x509_subject),用于标识用户。另外两个Plugin字段用于验证用户身份的插件,这个字段不能为空。如果该字段为空,服务器就使用内建授权验证机制验证用户身份。
- 资源控制列
- 用来限制用户使用的资源。
- max_questions:用户每小时允许执行的查询操作次数。
- max_updates:用户每小时允许执行的更新操作次数。
- max_connections:用户每小时允许执行的连接操作次数。
- max_user_connections:用户运行同时建立的连接次数。
- 用来限制用户使用的资源。
查看字段语句:
DESC mysql.user;
查询特定的字段:
SELECT host, user, authentication_string, select_priv, insert_priv, drpo_priv
FROM mysql.user;
今天先学习到这里,明天继续。