权限管理rbac(权限管理怎么描述)

lxf2023-05-09 18:29:01

经常遇到网友在QQ群或者论坛上问mysql权限的问题。今天我画空总结一下我这几年使用mysql时关于MYSQL数据库权限管理的经验,希望对使用MYSQL的用户有所帮助!mysql权限简介对mysql权限的简单理解就是MYSQL允许你做权限内的事情,不是。


经常遇到网友在QQ群或者论坛上问mysql权限的问题。今天我画空总结一下我这几年使用mysql时关于MYSQL数据库权限管理的经验,希望对使用MYSQL的用户有所帮助!

一、MYSQL权限介绍

简单理解一下mysql的权限就是mysql允许你做自己权限内的事情,不越界。例如,如果只允许您执行选择操作,则您不能执行更新操作。只允许从一台机器连接mysql,所以除了那台机器,不能从其他机器连接mysql。

那么MYSQL的权限是如何实现的呢?这就要说到mysql的两阶段验证了,下面会详细介绍:第一阶段:服务器会先检查你是否被允许连接。因为在创建用户时会添加主机限制,所以可以限制开销、一个IP、一个IP段和任何地方,并且只允许你从配置的指定地点登录。后面在实战中,我会详细说说对主机的限制。第二阶段:如果可以连接,MYSQL会检查你发送的每一个请求,看你是否有足够的权限实现。例如,如果您想要更新一个表或查询一个表,MYSQL将检查您是否拥有对表或列的权限。再比如,如果你要运行一个存储过程,MYSQL会检查你是否有权限执行这个存储过程。

MYSQL有哪些权限?从官网复制一张表来看:

权限

权限级别

权限描述

创建

数据库、表或索引

创建数据库、表或索引的权限

DROP

数据库或表

删除数据库或表权限

授予期权

数据库、表格或保存的程序

授予权限选项

引用

数据库或表

更改

表格

更改表,比如添加字段和索引。

删除

表格

删除数据权限

索引

表格

索引权限

插入

表格

插入权限

选择

表格

查询权限

更新

表格

更新权限

创建视图

视图

创建查看权限

显示视图

视图

查看权限

更改例程

存储过程

更改存储过程权限

创建例程

存储过程

创建存储过程权限

执行

存储过程

执行存储过程的权限

文件

服务器主机上的文件访问

文件访问权限

创建临时表

服务器管理

创建临时表的权限

锁定表

服务器管理

表锁权限

创建用户

服务器管理

创建用户权限

过程

服务器管理

查看进程权限

重新加载

服务器管理

允许执行诸如刷新主机、刷新日志、刷新权限、刷新状态、刷新表、刷新线程、刷新、重新加载等命令。

复制客户端

服务器管理

复制权限

复制从属服务器

服务器管理

复制权限

显示数据库

服务器管理

查看数据库权限

关闭

服务器管理

关闭数据库权限

超级

服务器管理

执行终止线程权限

MYSQL权限是如何分配的,就是表可以设置什么权限,列可以设置什么权限等等。这可以从官方文件的一个表格中得到说明:

权限分配

可能设置的权限

表权限

'选择','插入','更新','删除','创建','删除','授予','引用','索引','更改'

列权限

'选择','插入','更新','引用'

进程权限

'执行','更改例程','授予'

对于权限部分,最重要的是要知道mysql是如何验证的(两阶段验证),MYSQL权限是用来做什么的,那些权限用在什么地方(表还是列?)。如果掌握了这些,MYSQL权限对你来说就是小菜一碟。看一下后面的权限管理就知道了。

二、MYSQL特权体验原则

访问控制主要是出于安全因素,因此需要遵循几个经验原则:

1.只授予能满足需要的最低权限,防止用户做坏事。哈哈。比如用户只需要查询,就给select权限,不要给用户update,insert,delete权限。

2.创建用户时,限制用户登录主机,通常仅限于指定的IP或intranet IP段。

3.初始化数据库时删除没有密码的用户。数据库安装时,会自动创建一些用户,这些用户默认没有密码。

4.为每个用户设置符合密码复杂性的密码。

5.定期清理不需要的用户。收回权限或删除用户。

三、MYSQL权限实战

1.授权命令的使用说明

让我们看一个例子。创建一个超级用户洪飞,只允许他在本地登录,并允许其他用户被授予权限。密码是test @飞鸿. 111

授予*上的所有权限。*洪飞@由“test@feihong.111”标识的“本地主机”,带有授予权;

GRANT命令描述:

ALL PRIVILEGES是指所有权限,也可以使用select、update等权限所提到的权限。

ON用于指定权限的目标库和表。

*.*前面的*用于指定数据库名,后面的*用于指定表名。

TO表示授予用户权限。

洪飞@'localhost '表示洪飞用户,@后面是受限主机,可以是IP,IP段,域名和%,%表示任何地方。注意:此处%的版本不包括本地版本。过去,用户被设置为%以允许在任何地方登录,但是他不能在本地登录。这个和版本有关系。如果遇到这个问题,只需添加一个localhost用户。

标识者指定用户的登录密码。

使用GRANT OPTION,该选项意味着用户可以将他拥有的权限授权给其他人。注意:通常,在创建操作用户时,有人没有用Grant指定选项,这使得用户无法使用GRANT命令来创建用户或授权其他用户。

注意:GRANT可以用来给用户重复添加权限,权限是叠加的。例如,如果您先向用户添加选择权限,然后向用户添加插入权限,则用户将同时拥有选择和插入权限。

2.创建超级用户

创建一个超级用户洪飞,只允许他在本地登录,并允许其他用户被授予权限。密码是test @飞鸿. 111

授予*上的所有权限。*洪飞@由“test@feihong.111”标识的“本地主机”,带有授予权;

3。创建网站用户(程序用户)

要创建一个通用程序用户,该用户可能只需要诸如选择、插入、更新、删除、创建临时表等权限。如果有存储过程,还需要EXECUTE权限,一般指定内网段192.168.100。

GRANT USAGE,SELECT,INSERT,UPDATE,DELETE,SHOW VIEW,CREATE TEMPORARY TABLES,EXECUTE ON `test'。*发给网络用户@'192.168.100。“%”由“test @ feihong.111”标识;

4。创建普通用户(仅具有查询权限)

授权使用,选择“测试”。*对公众@'192.168.100。“%”由“public @ feihong.111”标识;

5。刷新权限

使用此命令使权限生效,尤其是当您更新或删除那些权限表user、db、host等时。过去,权限在使用grant后没有更新。只要对权限进行更改,您就可以养成使用FLUSH PRIVILEGES命令刷新权限的习惯。

刷新权限;

6。查看权限

您可以使用以下命令轻松查看用户的权限:

显示“web user”@ ' 192 . 168 . 100的授权。%';

7。回收权限

恢复之前创建的webuser用户的删除权限,并使用以下命令。

撤销对测试的删除。*来自“网络用户”@'192.168.100。%';

8。删除用户

注意不要用DELETE直接删除用户,因为删除后用户的权限并没有被删除,同名的新用户会继承之前的权限。正确的方法是使用DROP USER命令删除用户。例如,删除“web用户”@'192.168.100。' % '用户,使用以下命令:

删除用户' webuser'@'192.168.100。%';

您可以使用percona-toolkit工具中的pt-show-grants工具来帮助管理mysql权限。具体用法见博文http://blog.chinaunix.net/uid-20639775-id-3207926.html。


下面是/d/file/04/qfmugndao518205.html URL = jivv 0 ytsgyfrabvx 6 eilh G5 pggttegy 28 ejn-PRFXZMHCJP-SKHUNMM-otcaujswhkof 9 hkszmvmcrbu 0 f 4 I _用法说明

官方对usage的解释: USAGE “无权限”的同义词 当您想要创建一个没有权限的用户时,可以指定USAGE。 要看自己有哪些权限,执行SQL: SHOW GRANTS 在我的数据库下有一下几行: GRANT ALL PRIVILEGES ON `everalan`.* TO 'everalan'@'%' WITH GRANT OPTION 可以看出,不知USAGE一种权限,所以,你才会正常的执行查删等操作 usage的字面意思就是用法,其实就是让你这个用户可以像个用户似的登录,但是除了能看到有那写数据库外,什么权限也没有

adminjs.cn是一个以CSS、JavaScript、Vue、HTML为核心的前端开发技术网站。我们致力于为广大前端开发者提供专业、全面、实用的前端开发知识和技术支持。 在本网站中,您可以学习到最新的前端开发技术,了解前端开发的最新趋势和最佳实践。我们提供丰富的教程和案例,让您可以快速掌握前端开发的核心技术和流程。 Adminjs.cn还提供一系列实用的工具和插件,帮助您更加高效地进行前端开发工作。我们提供的工具和插件都经过精心设计和优化,可以帮助您节省时间和精力,提升开发效率。 在Adminjs.cn中,您可以找到您需要的一切前端开发资源,让您成为一名更加优秀的前端开发者。欢迎您加入我们的大家庭,一起探索前端开发的无限可能!