PostgreSQL 怎样创建“只读用户”?

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: PostgreSQL其实没有只读用户的语法,那么PostgreSQL提供了用户/角色属性来达到只读用户的效果,步骤如下: 1. 创建一个用户名为<readonlyuser>,密码为<your_own_password>的用户 CREATE USER <readonlyuser> ...
PostgreSQL其实没有只读用户的语法,那么PostgreSQL提供了用户/角色属性来达到只读用户的效果,步骤如下:

1. 创建一个用户名为<readonlyuser>,密码为<your_own_password>的用户
CREATE USER <readonlyuser> WITH ENCRYPTED PASSWORD '<your_own_password>';
2. 修改用户只读事务属性
ALTER USER <readonlyuser> SET default_transaction_read_only=on;
3. 设置USAGE权限给到 <readonlyuser>
GRANT USAGE ON SCHEMA public to <readonlyuser>;      
4. 在对应的数据库中,授予权限,如select。
GRANT SELECT ON ALL TABLES IN SCHEMA public TO <readonlyuser>;

注意:这个语句有可能在使用云数据库RDS PostgreSQL版和HybirdDB for PostgreSQL会遇到ha_health_check(系统表,超级用户权限)授权失败,也可以用下面存储过程进行grant:
CREATE OR REPLACE FUNCTION grant_tables()
RETURNS int AS
$$
DECLARE
  r RECORD;
  count int;
BEGIN
  count := 0;
FOR r IN SELECT tablename FROM pg_tables where tablename not like 'ha_health_check' LOOP
  RAISE NOTICE 'tablename: %', r.tablename;
  EXECUTE 'grant  SELECT on ' || r.tablename || ' to <readonlyuser> ';
  count := count + 1;
END LOOP;

RETURN count;
END;
$$
LANGUAGE 'plpgsql' VOLATILE;

select * from grant_tables()

更多参考  PostgreSQL 批量权限 管理方法


相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
存储 SQL 关系型数据库
PolarDB是PostgreSQL数据库用户的福音
很多PostgreSQL数据库的用户遇到主备库延迟大、单机数据库空间不够的问题,无缝迁移到PolarDB就可以解决这些问题。
223 0
PolarDB是PostgreSQL数据库用户的福音
|
关系型数据库 MySQL Linux
Linux系统之Mysql数据库用户基本管理
Linux系统之Mysql数据库用户基本管理
123 1
Linux系统之Mysql数据库用户基本管理
|
关系型数据库 MySQL Linux
centos 7 mysql 添加远程访问用户
centos 7 mysql 添加远程访问用户
353 0
centos 7 mysql 添加远程访问用户
|
存储 机器学习/深度学习 安全
第十一章《mysql用户与权限》
第十一章《mysql用户与权限》
第十一章《mysql用户与权限》
|
关系型数据库 MySQL Linux
Mysql创建只读用户
在linux服务器上创建用户,该用户对于服务器上的Mysql数据库的某个库只能具有访问权限,不可以进行增删改操作。
257 0
|
关系型数据库 分布式数据库 数据库
测试创建 PolarDB for PostgreSQL 数据库和连接数据库
测试创建 PolarDB for PostgreSQL 数据库和连接数据库
160 0
测试创建 PolarDB for PostgreSQL 数据库和连接数据库
|
安全 关系型数据库 MySQL
因安全要求,需要修改mysql同步用户repl的密码。在主库修改完后,从库最佳修改同步用户密码的方式
因安全要求,需要修改mysql同步用户repl的密码。在主库修改完后,从库最佳修改同步用户密码的方式
571 0
|
SQL 关系型数据库 PostgreSQL
PostgreSQL 创建数据表
PostgreSQL 创建数据表
501 0
|
关系型数据库 PostgreSQL
『PostgreSQL』PGSQL手动创建Sequence序列
📣读完这篇文章里你能收获到 - 在PostgreSQL中对Sequence的管理及使用
691 0
『PostgreSQL』PGSQL手动创建Sequence序列
|
关系型数据库 MySQL 测试技术
软件测试mysql面试题:如何定位使用cpu多的用户session?
软件测试mysql面试题:如何定位使用cpu多的用户session?
172 0