在MySQL中,如何给用户被授予权限

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/u012431703/article/details/97802148

MySQL简介:

MySQL是一个小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购。而2009年,SUN又被Oracle收购。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内。这样就增加了速度并提高了灵活性。MySQL的SQL“结构化查询语言”。SQL是用于访问数据库的最常用标准化语言。MySQL软件采用了GPL(GNU通用公共许可证)。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管理系统)应用软件之一。


在数据库中,我们常见的操作有以下:

操作命令 操作说明
INSERT 允许它们将行插入表中
CREATE 允许他们创建新的表或数据库
UPDATE 允许他们更新表行
DELETE 允许他们从表中删除行
DROP 允许他们删除表或数据库
SELECT 允许他们使用该SELECT命令读取数据库
GRANT OPTION 允许他们授予或删除其他用户的权限
ALL 所有特权,正如我们之前看到的,这将允许MySQL用户完全访问指定的数据库(或者如果没有选择数据库,则跨系统进行全局访问)

在MySQL中,一般授予用户的权限有以下五种常见方式:

全局层级权限、数据库层级权限、表层级别权限、列层级别权限、子程序层级权限。

1.全局层级

全局权限适用于一个给定服务器中的所有数据库。这些权限存储在mysql.user表中通常用【grant all on .】来授予全局权限和【revoke all on .】撤销全局权限。   

2.数据库层级

数据库权限适用于一个给定数据库中的所有目标。这些权限存储在mysql.db和mysql.host表中。【grant all on db_name .和【 revoke all on db_name .只授予和撤销数据库权限。   

3.表层级

表权限适用于一个给定表中的所有列。这些权限存储在mysql.tables_priv表中。【grant all on db_name.tbl_name.】和【revoke all on db_name.tbl_name.】只授予和撤销表权限。

4.列层级

列权限适用于一个给定表中的单一列。这些权限存储在mysql.columns_priv表中。当使用revoke时,您必须指定与被授权列相同的列。

5.子程序层级

create routine, alter routine, execute 和 grant权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。而且,除了CREATE ROUTINE外,这些权限可以被授予为子程序层级,并存储在mysql.procs_priv表中。

具体操作:

1.创建用户【create user 'newuser'@'localhost' identifed by 'password';

我们指定新用户【newuser】的主机为localhost而不是服务器的IP地址。localhost只是一个主机名,意思是“这台计算机”,MySQL专门处理这个特定的主机名:当有该主机的用户登录MySQL时,它将尝试使用Unix套接字文件连接到本地服务器。因此,localhost通常在计划通过SSH连接到服务器或运行本地mysql客户端连接到本地MySQL服务器时使用。

此时,刚建好的新用户【newuser】对数据库是没有任何的执行操作权限;因此,首先要做的就是为新用户提供他们所需的访问权限。

2.给用户授权【grant 权限 privileges on *.* to 'newuser'@'localhost';

此命令中的星号指的是新用户【newuser】可以访问的数据库和表(分别)

权限若是写的 all 则表示:允许用户读取,写入,执行 所有数据库和表的权限;此权限相当于root的访问权限,但对于大多数用例来说可能是不切实际的,并且可能会使您的数据库的安全性处于高风险。

PS:一条授权命令可以配置多个权限,权限之间用英文逗号隔开:

grant update, selcet on [数据库名字].[数据表名字] to [用户名]@'localhost';

如果您需要撤消权限,则语法结构几乎与授予权限基本相同:

        只是将grant 修改为  revoke ;将 to 修改为  from

revoke delete on database_name.table_name from 'newuser'@'localhost';

3.每次更新或更改权限时,请务必使用“刷新权限”命令【flush privileges;

4.查看用户的当前权限:【show gaants newuser;


猜你喜欢

转载自blog.csdn.net/u012431703/article/details/97802148