MySQL数据库学习(8)

MySQL是一个多用户数据库,具有功能强大的访问控制系统,可以为不同用户指定不同权限。之前我使用的是 root用户,该用户是超级管理员,拥有所有权限,包括创建用户、删除用户和修改用户密码等管理权限。为了实际项目的需要,可以创建拥有不同权限的普通用户。
一、MySQL访问控制系统
MySQL实现了一个复杂的访问控制和权限系统,允许您创建全面的访问规则来处理客户端操作并有效防止未经授权的客户端访问数据库系统。
当客户端连接到服务器时,MySQL访问控制有两个阶段:
连接验证:连接到MySQL数据库服务器的客户端需要有一个有效的用户名和密码。此外,客户端连接的主机必须与MySQL授权表中的主机匹配。
请求验证:成功建立连接后,对于客户端发出的每个语句,MySQL会检查客户端是否具有足够的权限来执行特定语句。MySQL能够检查数据库,表和字段级别的权限。
有一个名为MySQL安装程序自动创建的数据库mysql。mysql数据库包含五个主要授权表。您经常通过GRANT 和  REVOKE等语句间接操作这些表  。
1.user:
包含用户帐户和全局权限列。MySQL使用user表来接受或拒绝来自主机的连接。user表中授予的权限 对MySQL服务器上的所有数据库都有效。
user表是 MySQL中最重要的一个权限表,用来记录允许连接到服务器的账号信息。需要注意的是,在 user表里启用的所有权限都是全局级的,适用于所有数据库。
user表中的字段大致可以分为 4类,分别是用户列、权限列、安全列和资源控制列,下面主要介绍这些字段的含义。
(1).用户列:
用户列存储了用户连接 MySQL 数据库时需要输入的信息。
字段名    字段类型            是否为空     默认值    说明
Host    char(60)                      NO         无           主机名
User    char(32)                      NO         无           用户名
authentication_string    text    YES       无           密码
用户登录时,如果这 3 个字段同时匹配,MySQL 数据库系统才会允许其登录。创建新用户时,也是设置这 3 个字段的值。修改用户密码时,实际就是修改 user 表的 authentication_string 字段的值。因此,这 3 个字段决定了用户能否登录。
(2).权限列:
权限列的字段决定了用户的权限,用来描述在全局范围内允许对数据和数据库进行的操作。
权限大致分为两大类:
高级管理权限:主要对数据库进行管理,例如关闭服务的权限、超级权限和加载用户等;
普通权限:主要操作数据库,例如查询权限、修改权限等。
user 表的权限列包括 Select_priv、Insert_ priv 等以 priv结尾的字段,可以自己到数据库mysql中查询
登录数据库找到mysql库  -> user表 -> desc user;即可查看详细信息
(3).安全列:
安全列主要用来判断用户是否能够登录成功。
同样登录数据库找到mysql库  -> user表 -> desc user;即可查看详细信息
(4).资源控制列:
资源控制列的字段用来限制用户使用的资源。
               字段名                字段类型       是否为空    默认值          说明
max_questions                int(11) unsigned    NO      0    规定每小时允许执行查询的操作次数
max_updates                   int(11) unsigned    NO      0    规定每小时允许执行更新的操作次数
max_connections             int(11) unsigned    NO      0    规定每小时允许执行的连接操作次数
max_user_connections    int(11) unsigned    NO      0    规定允许同时建立的连接次数
2.db:
db表比较常用,是 MySQL数据库中非常重要的权限表,表中存储了用户对某个数据库的操作权限,包含数据库级别权限。MySQL使用db表来确定用户可以访问哪个数据库以及从哪个主机访问。在db表中的数据库级别授予的权限适用于数据库,并且所有对象都属于数据库,例如表,触发器,视图,存储过程等。
db表中的字段大致可以分为两类:
(1)用户列
db表用户列有 3个字段,分别是 Host、User、Db,标识从某个主机连接某个用户对某个数据库的操作权限,这 3个字段的组合构成了 db 表的主键。
字段名    字段类型        是否为空    默认值    说明
Host        char(60)             NO          无           主机名
Db           char(64)             NO          无           数据库名
User        char(32)             NO          无           用户名
(2)权限列
db 表中的权限列和 user 表中的权限列大致相同,只是user 表中的权限是针对所有数据库的,而 db 表中的权限只针对指定的数据库。
同样登录数据库找到mysql库  -> db表 -> desc db;即可查看详细信息
3.table_priv和columns_priv:包含表级和列级权限。
tables_priv表用来对单个表进行权限设置,columns_priv表用来对单个数据列进行权限设置。
table_priv表中授予的权限适用于表及其列,而columns_priv表中授予的权限仅适用于表的特定列。
同样登录数据库找到mysql库  -> tables_priv表/columns_priv表 -> desc tables_priv/columns_priv;即可查看详细信息
4.procs_priv:包含存储的函数和存储过程权限
procs_priv表可以对存储过程和存储函数进行权限设置
同样登录数据库找到mysql库  -> procs_priv表 -> desc procs_priv;即可查看详细信息
二、MySQL用户创建
在对 MySQL的日常管理和操作中,为了避免有人恶意使用 root用户控制数据库,我们通常创建一些具有适当权限的用户,尽可能地不用或少用 root用户登录系统,以此来确保数据的安全访问。
MySQL 提供了以下 3种方法创建用户:
1.使用 CREATE USER语句创建用户:
语法格式如下:
CREATE USER user_account IDENTIFIED BY password; 
user_account格式ÿ

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

春风抚微霞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值