Mysql 8.0 权限概述与授权(三)

       
MySQL 目录
             1、MySQL 8.0 引擎和索引
             2、MySQL 8.0 查询数据
             3、MySQL 8.0 操作数据库和数据表
             4、Mysql 8.0 权限概述与授权(一)
             5、Mysql 8.0 权限概述与授权(二)
             6、Mysql 8.0 权限概述与授权(三)
             7、持续更新中…
       
       

授权

授权就是为了某个用户授予权限。

在MySQL中,必须是拥有 GRANT 权限的用户才可以执行 GRANT 语句。要使用 GRANT 或 REVOKE 必须拥有 GRANT OPTION 权限。

  • 全局层级

全局权限适用于一个给定服务器中的所有数据库。这些权限存储在 MySQL.user 表中。

GRANT ALL ON *.*REVOKE ALL ON *.* 只授予和撤销全局权限。
  • 数据库层级

数据库权限适用与一个给定数据库中的所有目标。这些权限存储在 MySQL.db 和MySQL.host 表中。

GRANT ALL ON db_name.*REVOKE ALL ON db_name.* 只授权和撤销数据库权限
  • 表层级

表权限适用于一个给定表中的所有列。这些权限存储在MySQL.tables_priv 表中。

GRANT ALL ON db_name.tb1_name 和 REVOKE ALL ON db_name.tb1_name  只授权和撤销表权限
  • 列层级

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

  • 子程序层级

CREATE ROUTINE、ALTER ROUTINE、EXECUTE 和 GRANT 权限适用于已存储的子程序。这些权限可以被授予为全局层级和数据库层级。

下面举个例子:

先创建一个用户名为 test_1 , 密码为123456

mysql> CREATE USER 'test_1'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)

从user 表查看新用户

mysql> SELECT host,user,select_priv,update_priv FROM user WHERE user='test_1';
+-----------+--------+-------------+-------------+
| host      | user   | select_priv | update_priv |
+-----------+--------+-------------+-------------+
| localhost | test_1 | N           | N           |
+-----------+--------+-------------+-------------+
1 row in set (0.00 sec)

查看相应权限

mysql> SHOW GRANTS FOR 'test_1'@'localhost';
+--------------------------------------------+
| Grants for test_1@localhost                |
+--------------------------------------------+
| GRANT USAGE ON *.* TO `test_1`@`localhost` |
+--------------------------------------------+
1 row in set (0.00 sec)

现在我有一个要求:指定用户名为’test_1’ 管理 名为rmysql 的数据库。并赋予 GRANT OPTION 权限

mysql> GRANT ALL PRIVILEGES ON rmysql.* TO 'test_1'@'localhost' WITH GRANT OPTION;
Query OK, 0 rows affected (0.00 sec)

WITH GRANT OPTION: 被授予的用户可以将这些权限赋予别的用户。

在查看权限

mysql> SHOW GRANTS FOR 'test_1'@'localhost';                                    +------------------------------------------------------------------------------+
| Grants for test_1@localhost                                                  |
+------------------------------------------------------------------------------+
| GRANT USAGE ON  TO `test_1`@`localhost`                                   |
| GRANT ALL PRIVILEGES ON `rmysql`.* TO `test_1`@`localhost` WITH GRANT OPTION |
+------------------------------------------------------------------------------+
2 rows in set (0.00 sec)

ALL PRIVILEGES :为所有权限

收回权限

收回权限就是取消已经赋予用户的某些权限。收回用户不必要的权限在一定程度上保证系统的安全性。

REVOKE ALL PRIVILEGES , GRANT OPTION FROM 'user'@'host' [, 'user'@'host' ....]

REVOKE 语句必须和 FROM 语句一起使用, FROM 语句指明需要收回权限的账户。

猜你喜欢

转载自blog.csdn.net/weixin_45215649/article/details/107714573
今日推荐