-- 授予角色在Schema上创建表和视图的权限
GRANT CREATE TABLE, CREATE VIEW ON SCHEMA schema_name TO ROLE role_name;
2. 授予表级别权限
-- 授予角色对表的查询、修改等权限
GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON TABLE schema_name.table_name TO ROLE role_name;
3. 授予视图权限
-- 授予角色对视图的查询权限
GRANT SELECT VIEW schema_name.view_name TO ROLE role_name;
4. 将角色授予用户
-- 将角色授予给用户
GRANT ROLE role_name TO USER username;
4.4 权限撤销操作
1. 撤销对象权限
-- 撤销表的SELECT权限
REVOKE SELECT ON TABLE schema_name.table_name FROM ROLE role_name;
2. 撤销用户角色
-- 从用户撤销角色
REVOKE ROLE role_name FROM USER username;
5. 权限验证与审计
5.1 查询用户权限
-- 查看用户被授予的角色和权限
SHOW GRANTS TO USER username;
5.2 查询角色权限
-- 查看角色被授予的具体权限
SHOW GRANTS TO ROLE role_name;
5.3 查询对象权限被授出的权限
-- 查看表被授出的具体权限及授出给哪个角色/用户
SHOW GRANTS ON table schema_name.table_name;
5.3 查询当前用户
-- 获取当前登录用户
SELECT CURRENT_USER();
6. 完整实验案例
以下是一个完整的用户授权管理实践案例,从创建用户到清理环境的全流程:
6.1 创建测试用户
-- 创建测试用户(将服务实例用户添加到工作空间)
CREATE USER test01;
CREATE USER test02;
-- 验证用户创建是否成功
SHOW USERS;
6.2 创建测试环境
-- 创建测试Schema和表
CREATE SCHEMA IF NOT EXISTS permission_test_schema;
CREATE TABLE IF NOT EXISTS permission_test_schema.permission_test_sales_data (
id INT,
product_name VARCHAR(100),
sale_date DATE,
amount DECIMAL(10,2)
);
-- 插入测试数据
INSERT INTO permission_test_schema.permission_test_sales_data VALUES
(1, 'Product A', date '2025-01-15', 1500.00),
(2, 'Product B', date '2025-01-20', 2300.50),
(3, 'Product C', date '2025-02-05', 800.75);
6.3 创建和授权角色
-- 创建角色
CREATE ROLE permission_test_developer_role;
CREATE ROLE permission_test_analyst_role;
-- 配置角色权限
-- 授予开发者角色更多权限
GRANT CREATE TABLE, CREATE VIEW ON SCHEMA permission_test_schema TO ROLE permission_test_developer_role;
GRANT SELECT, INSERT, UPDATE, DELETE, ALTER ON TABLE permission_test_schema.permission_test_sales_data TO ROLE permission_test_developer_role;
-- 授予分析师角色只读权限
GRANT SELECT ON TABLE permission_test_schema.permission_test_sales_data TO ROLE permission_test_analyst_role;
-- 将角色授予用户
GRANT ROLE permission_test_developer_role TO USER test01;
GRANT ROLE permission_test_analyst_role TO USER test02;
6.4 验证权限配置
-- 查看用户权限
SHOW GRANTS TO USER test01;
SHOW GRANTS TO USER test02;
-- 查看角色权限
SHOW GRANTS TO ROLE permission_test_developer_role;
SHOW GRANTS TO ROLE permission_test_analyst_role;
6.5 环境清理
-- 撤销角色权限
REVOKE ROLE permission_test_developer_role FROM USER test01;
REVOKE ROLE permission_test_analyst_role FROM USER test02;
-- 删除视图和表
DROP VIEW IF EXISTS permission_test_schema.permission_test_sales_view;
DROP TABLE IF EXISTS permission_test_schema.permission_test_sales_data;
-- 删除角色
DROP ROLE permission_test_developer_role;
DROP ROLE permission_test_analyst_role;
-- 删除Schema
DROP SCHEMA IF EXISTS permission_test_schema;
-- 移除用户
DROP USER test01;
DROP USER test02;
-- 验证用户是否已移除
SHOW USERS;