数据库回顾(七) 数据库权限概述

141 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第14天,点击查看活动详情

大家好! 我是慕歌,一只想教你学习 后端技术的野生coder! 欢迎来到慕歌的数据库系列教程,希望通过这个教程带大家深入学习数据库技术,该教程所有知识点均来源于本人的日常学习与开发中,如有疑问请与我联系!

前言

在上一节的分享中,慕歌向大家分享关于数据库视图的知识,数据库视图是一种特殊的存在,是数据库组成中的一部分,提供特殊的数据存储。视图不是真实存在数据库中的表,是一种虚拟表,它依托于真实存在的表数据,才能生成数据。视图具有一定的权限功能,视图本身的操作不会对数据表造成影响,但是数据的改变也会导致元数据表的数据更改。这是视图的独特之处,通过使用其他表的数据进行呈现,对外看,它同数据表一样,并且数据的显示会受到限制,也是一种权限控制。
那么这一节中,将要学习的是数据库层面的权限控制,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服务器。

就这样一条简单的语句,数据库就能获取到用户的权限,进行权限检查,校验后,获取对应的权限,如果指定操作语句,还可直接执行权限下的语句。

用户管理:

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

#修改用户
UPDATE mysql.user SET USER='li4' WHERE USER='wang5'; 
FLUSH PRIVILEGES;

#删除用户
DROP USER user[,user]…;

#密码修改
ALTER USER USER() IDENTIFIED BY 'new_password';

SET PASSWORD='new_password';

通过以上操作即可进行用户的管理操作,数据库总是先创建用户,再在用户上赋予权限。

权限管理:

权限分类:
  • CREATE,DROP权限,控制数据库表的创建删除
  • CRUD 权限,对某个表的数据允许进行的操作
  • INDEX 权限,对索引的操作,允许创建或删除索引
  • ALTER 权限,改变表结构或者是表名等
  • GRANT 权限,允许进行授权操作,将权限赋予其他用户
  • FILE 权限,允许用户调用文件访问操作,将数据上传到服务器
#查询权限
show privileges;

权限授予:
#分发权限
GRANT 权限1,权限2,…权限n ON 数据库名称.表名称 TO 用户名@用户地址 [IDENTIFIED BY ‘密码口令’];
#如果用户不存在,会直接进行创建

#查询权限
SHOW GRANTS; 
# 或 
SHOW GRANTS FOR CURRENT_USER; 

#全局权限
SHOW GRANTS FOR 'user'@'主机地址';

#回收权限
REVOKE 权限1,权限2,…权限n ON 数据库名称.表名称 FROM 用户名@用户地址;

**注意:**回收权限不会立即生效,需要在下一次登录时进行更新

权限规则:
  • 权限授予满足最小权限原则,对用户的权限需要尽可能的精确,不要超出权限范围
  • 创建时需限制登录的主机,内网限制或是指定IP地址
  • 每个用户的密码进行加密处理,选择复杂密码
  • 定期清理用户或是回收用户权限

结语

这一节的分享到这里就结束了,下一节将带来数据库执行逻辑的分享学习!
如果您觉得本文不错,欢迎点赞支持,您的关注是我坚持的动力!