如何在PostgreSQL中建只读账号

转:

如何在PostgreSQL中建只读账号

Posted on 2014-01-21 22:00:15 by osdba

在PostgreSQL中并没有CREATE TABLE权限名称,这是与其它数据库不同的一个地方,PostgreSQL是通过控制是否在模式schema中上有CREATE控制用户的能否创建表的权限的,默认安装下,任何用户都有在模式public中CREATE的权限,所以要创建只读账号的第一步,我们要先去除在模式public中的CREATE权限:

REVOKE  CREATE  ON SCHEMA public from public;

下面的SQL创建了一个名为“readonly”的用户:

CREATE USER readonly with password ‘query‘;

然后把现有的所有在public这个schema下的表的SELECT权限赋给用户readonly,执行下面的SQL命令:

GRANT SELECT ON  ALL TABLES IN SCHEMA public TO readonly;

上面的SQL命令只把现有的表的权限给了用户readonly,但如果这之后创建的表,readonly用户还是不能读,需要使用下面的SQL把以后创建的表的SELECT权限也给用户readonly:

ALTER DEFAULT PRIVILEGES IN SCHEMA public grant select on tables to readonly;

注意:上面的过程只是把名称为public的schema下的表赋了只读权限,如果想让这个用户能访问其它schema下的表,需要重复执行:

GRANT SELECT ON  ALL TABLES IN SCHEMA other_schema TO readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA other_schema grant select on tables to readonly;
时间: 2025-01-06 17:17:36

如何在PostgreSQL中建只读账号的相关文章

postgresql创建只读账号

postgresql创建只读账号: # su - postgres $ psql # \c icinga2; # create user aa with password 'xxx'; # grant select on all tables in schema public to aa;  (对现有表生效) # alter default privileges in schema public grant select on tables to icuser_ro; (对未来的新加表生效) #

PostgreSQL实现只读表

PostgreSQL中只读表的实现可以分为两部分:命令操作前数据库中已有的表.命令操作后数据库新建的表.在本文中会就这两部分分别加以实现从而实现完整的只读查询. 一.初始环境 数据库:PostgreSQL 9.3 用户:user1.user2 模式:shema1(所有者为user1) 表:shema1.t1(id int) 二.已有的表 ? 对此时已有的表shema1.t1实现user2的只读访问,分别需要经过:对shema1模式的访问权限.对t1表的select访问权限.操作如下: 以user

只读账号设置-db_datareader

为防止正式环境数据库被篡改,但又要保证可以正常查询处理问题,可以将账号的数据库访问权限设置为db_datareader数据库权限:单独设置的优先,如给了一账号只读权限,若别开一张表给于此账号写权限,那么单独设置的写权限优先级最高.注:db_datareader没有存储过程访问权限,若想全开,如下: GRANT EXEC TO datareader GRANT ALTER TO datareader 固定数据库角色db_owner 数据库所有者 db_accessadmin 数据库访问管理员 db

PostgreSQL创建只读用户

创建用户及指定密码: CREATE USER readonly WITH ENCRYPTED PASSWORD 'ropass'; 设置用户默认事务只读: alter user readonly set default_transaction_read_only=on; 赋予用户权限,查看public模式下所有表: GRANT USAGE ON SCHEMA public to readonly; ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT S

如何在Oracle中建表空间、建用户并导入dmp文件详解

假设oracle有个全新的数据库orcl,现在要把数据库文件(.dmp)导入这个全新的数据库orcl中.详细步骤如下: 1. 创建表空间 例如: create tablespace test(表空间名称) datafile 'F:\oracle\oradata\orcl\test.dmp'(表空间的存储位置) size 50M (表空间大小,单位兆) autoextend on next 50M maxsize unlimited extent management local autoallo

如何在postgresql中模拟oracle的dual表,来测试数据库最基本的连接功能?

还好,网上弄到的,,没有dual的数据库,可以试图用select函数不带from数据表的方式来实现返回值. 一段测试代码: try: conn = psycopg2.connect(database=db.service_name, user=db.username, password=password, host=db.ip, port=db.port) cursor = conn.cursor() except Exception, e: context_dict = {'msg': e,

访问Tableau自带的PostgreSQL数据库

突然发现公司Tableau服务器的数据库大小急剧增加,因此决定直接连上数据库排查.过程记录如下:最后发现有个http_requests 表体积巨大(7G),本来以为是数据缓存什么的.结果是日志问题o(╯□╰)o. 因为公司用的Tableau版本比较低无法直接查看该表,暂时没动它,不知道会不会影响性能. 一.开启Tableau Server数据库访问权限 1. 打开命令行提示窗口(管理员)进入Tableau程序所在目录 cd "C:\Program Files\Tableau\Tableau Se

PostgreSQL即学即用(第2版)pdf

下载地址: 网盘下载 内容简介 · · · · · · 本书将帮助你理解和使用PostgreSQL 这一开源数据库系统.你不仅会学到版本9.2.9.3 和9.4中的企业级特性,还会发现PostgreSQL 不只是个数据库系统,也是一个出色的应用平台.本书通过示例展示了如何实现在其他数据库中难以或无法完成的任务.这一版内容覆盖了LATERAL 查询.增强的JSON 支持.物化视图和其他关键话题. 作者简介  · · · · · · Regina Obe 是数据库咨询公司Paragon的负责人之一,

mysql创建账号

1.创建账号1)只读账号GRANT USAGE ON *.* TO 'testgao_r'@'192.168.1.1' IDENTIFIED BY 'password' WITH MAX_QUERIES_PER_HOUR 14400000 MAX_UPDATES_PER_HOUR 7200000 MAX_CONNECTIONS_PER_HOUR 14400000 MAX_USER_CONNECTIONS 2000;GRANT SELECT, EXECUTE, SHOW VIEW ON `test