RedShift
中只能有一个数据库,是在创建 RedShift
的时候创建的;SCHEMA
是 RedShift
中的模式,可以将 SCHEMA
理解为 MySQL 中的 DATABASES
,授权也是针对 SCHEMA
去授权的。
注意: RedShift
中创建的用户默认是有超级管理员的权限的,生产环境中,一定要控制权限,将授权精确到 SCHEMA
甚至 TABLES
。
对用户授权
RedShift 可以直接管理单个用户的权限
/*
创建用户
user_name:用户名
password:密码
*/
create user user_name password 'password';
/*
查看用户
user_name:用户名
*/
select * from pg_user_info;
/*
删除用户
user_name:用户名
*/
DROP USER user_name;
/*
创建 SCHEMA
schema_user:模式名
*/
CREATE SCHEMA schema_user;
/*
授权用户对 SCHEMA 的所有权限
schema_user:模式名
user_name:用户名
*/
GRANT ALL PRIVILEGES ON SCHEMA schema_user TO user_name;
/*
查看所有模式 SCHEMA
schema_name:此处schema_name为字段名,无需修改
*/
SELECT schema_name
FROM information_schema.schemata;
/*
授权用户对某个 SCHEMA 的只读权限
schema_user:模式名
user_name:用户名
*/
GRANT USAGE ON SCHEMA schema_user TO user_name;
GRANT SELECT ON ALL TABLES IN SCHEMA schema_user TO user_name;
对用户组授权
RedShift 还可以通过用户组来管理用户的权限
/*
创建用户组
group_name:组名
*/
CREATE GROUP group_name
/*
将用户添加到用户组
group_name:组名
user_name:用户名
*/
ALTER GROUP group_name
ADD USER user_name;
/*
创建用户组,并添加用户
group_name:组名
user1, user2:用户1,用户2
*/
CREATE GROUP group_name WITH USER user1, user2;
/*
对 group_name 组的所有用户授予 schema_user 模式的所有权限
schema_user:模式名
group_name:组名
*/
GRANT ALL ON SCHEMA schema_user TO GROUP group_name;
/*
给 group_name 组中的所有用户授予 schema_user 模式中 table_name 表的所有权限
schema_user:模式名
group_name:组名
*/
GRANT ALL ON SCHEMA schema_user.table_name TO GROUP group_name;
更多命令,详见 AWS 官方文档