Postgres 创建Role并赋予权限的操作

创建Role

CREATE USER <role_name> PASSWORD '<role_password>';

赋予权限

赋予database所有权限

GRANT ALL ON DATABASE <db_name> TO <role_name>;

赋予只读权限 (不能再db level直接赋予SELECT权限)

GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <role_name>;

查看权限

SELECT * FROM information_schema.role_table_grants;

补充:PostgreSql角色、用户创建

1、数据库角色

数据库角色与操作系统用户的观念完全不同,其可以方便的维护数据库,但不是必须的。

创建数据库角色

CREATE ROLE name;

删除存在的角色

DROP ROLE name;

创建和删除用户

CREATE USER name;
dropuser name;

检查存在的数据库角色

SELECT rolname FROM pg_roles;

\du #用这个命令也可以查看

数据库默认用户

数据库在安装完成后会在操作系统以及数据库中都建立一个默认的用户postgres,这个角色是“超级用户”,想使用数据库的更多功能,必须先用这个用户连接数据库。

数据库连接命令

psql -U name;

2、数据库角色属性

数据库角色有大量的属性,这些属性定义了角色的数据库登录以及操作权限。

CREATE ROLE name [ [ WITH ] option [ ... ] ]
where option can be:
SUPERUSER | NOSUPERUSER
| CREATEDB | NOCREATEDB
| CREATEROLE | NOCREATEROLE
| CREATEUSER | NOCREATEUSER
| INHERIT | NOINHERIT
| LOGIN | NOLOGIN
| REPLICATION | NOREPLICATION
| CONNECTION LIMIT connlimit
| [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password'
| VALID UNTIL 'timestamp'
| IN ROLE role_name [, ...]
| IN GROUP role_name [, ...]
| ROLE role_name [, ...]
| ADMIN role_name [, ...]
| USER role_name [, ...]
| SYSID uid

登录权限

LOGIN属性用于赋予角色拥有连接数据库权限,命令二选一

CREATE ROLE name LOGIN;
CREATE USER name;

CREATE USER 和CREATE ROLE几乎相同,除了CREATE USER默认带有登录权限,CREATE ROLE没有。

超级用户

超级用户拥有数据库的所有权限,必须小心超级用户的权限赋予,命令如下

CREATE ROLE name SUPERUSER;

创建数据库权限

CREATE ROLE name CREATEDB;

创建角色权限

CREATE ROLE name CREATEROLE;

初始化复制

CREATE ROLE name REPLICATION LOGIN;

密码

密码是用户登录数据库的客户端认证方式。密码创建后采用md5加密算法加密。

CREATE ROLE name PASSWORD 'string';

更改权限

ALTER ROLE name SET enable_indexscan TO off;

3、角色组

角色组类似于操作系统的组权限,可以非常方便的对组内成员的权限进行管理。

可以用过GRANT和REVOKE操作进行权限的赋予和回收。

GRANT group_role TO role1, ... ;
REVOKE group_role FROM role1, ... ;

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • postgresql 切换 log、xlog日志的实现

    os: centos 7.4 db: postgresql 9.6 切换log: select pg_rotate_logfile(); 切换xlog: select pg_switch_xlog(); 补充:postgresql流复制主从切换+resetxlog 主 192.168.3.46 从 192.168.3.47 现象:由于46主库的xlog日志达到7T以上,磁盘空间不足,需要通过pg_resetxlog命令清日志. 解决: 1.修改postgresql参数 checkpoint_ti

  • 开源数据库postgreSQL13在麒麟v10sp1源码安装过程详解

    一.中标麒麟v10sp1在飞腾2000+系统安装略 二.系统依赖包安装 [root@ft2000db opt]# yum install bzip* [root@ft2000db opt]# nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Tercel) Kernel: 4.19.90-17.ky10.aarch64 Buil

  • postgresql 利用xlog进行热备操作

    一.验证postgresql增量合并的方案 结果:没有有效可行的增量合并方案,暂时放弃 二.梳理postgresql基于wal的增量备份 物理备份与还原适用于跨小版本的恢复但是不能跨平台 逻辑备份与还原备份数据适用于跨版本和跨平台的恢复 postgersql增量备份步骤 1.首先创建归档目录 例如:归档目录为/archive_pg_xlog/xlog 1>mkdir -p /archive_pg_xlog/xlog 2>chown -R postgres:postgres /archive_p

  • postgresql 12版本搭建及主备部署操作

    postgresql 12版本主备部署 环境搭建 centos 7+ postgresql 12.0 # 网络检查 ping -c2 baidu.com #关闭防火墙,selinux systemctl stop firewalld && sudo systemctl disable firewalld sed -ri s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config setenforce 0 ### 配置阿里云yum源

  • Postgresql去重函数distinct的用法说明

    在项目中我们常会对数据进行去重处理,有时候会用in或者EXISTS函数.或者通过group by也是可以实现查重 不过Postgresql还有自带去重函数:distinct 下面是distinct 的实例: 1.创建表:user CREATE TABLE `user` ( `name` varchar(30) DEFAULT NULL, `age` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `us

  • Postgresql中xlog生成和清理逻辑操作

    0 前言 1.2部分是对XLOG生成和清理逻辑的分析,XLOG暴涨的处理直接看第3部分. 1 WAL归档 # 在自动的WAL检查点之间的日志文件段的最大数量 checkpoint_segments = # 在自动WAL检查点之间的最长时间 checkpoint_timeout = # 缓解io压力 checkpoint_completion_target = # 日志文件段的保存最小数量,为了备库保留更多段 wal_keep_segments = # 已完成的WAL段通过archive_comm

  • Postgres 创建Role并赋予权限的操作

    创建Role CREATE USER <role_name> PASSWORD '<role_password>'; 赋予权限 赋予database所有权限 GRANT ALL ON DATABASE <db_name> TO <role_name>; 赋予只读权限 (不能再db level直接赋予SELECT权限) GRANT SELECT ON ALL TABLES IN SCHEMA <schema_name> TO <role_na

  • mysql创建用户并赋予用户权限详细操作教程

    用户管理 新建用户 语法 CREATE USER 'username'@'localhost' IDENTIFIED BY 'password' 示例 mysql> create user 'lisi'@'localhost' identified by '123123'; Query OK, 0 rows affected (0.00 sec) username:将创建的用户名 localhost:指定用户那些主机上可以登录,可登录的IP地址,网段,主机名,如果是本机可以用localhost,

  • Oracle的用户、角色及权限相关操作

    1.创建用户 create user KD identified by 123456; 2.授予连接数据库的权限 grant connect to KD; 3.将Scott用户的emp表授权给KD可以查询 grant select on scott.emp to KD; grant create table to KD; 4.回收权限 revoke select on scott.emp from KD; 5.表的增删改权限授权 grant select,inset,delete,update

  • Laravel框架实现的rbac权限管理操作示例

    本文实例讲述了Laravel框架实现的rbac权限管理操作.分享给大家供大家参考,具体如下: 介绍:根据不同的权限,在菜单栏显示不同的功能,只对菜单进行了限制,若对路由也进行限制,请自行完善 1.建表(用户表.角色表.权限表.用户角色表.角色权限表) CREATE TABLE IF NOT EXISTS mr_role ( id int(11) PRIMARY KEY AUTO_INCREMENT COMMENT '自增id', name varchar(30) NOT NULL COMMENT

  • Java实现创建运行时类的对象操作示例

    本文实例讲述了Java实现创建运行时类的对象操作.分享给大家供大家参考,具体如下: 获取运行时类的方法: public void test() throws ClassNotFoundException { /* * Class类是反射的源头 * 创建一个类,通过编译(javac.exe),生成对应的.class文件,之后使用java.exe加载(JVM的类加载器完成的)此.class文件. * 此.class文件加载到内存后,就是一个运行时类,存放在缓存区. * 那么这个运行时类本身就是一个C

  • Docker创建容器时目录权限踩坑

    昨天写项目时需要用到Mysql的衍生版本percona, 就想用Doker来安装.结果踩了一晚上坑, 今早终于解决. 现记录在此. 这个坑原因是我对linux的目录权限问题不敏感导致的. 我的系统是ubuntu16.04, 运行 docker pull percona 拉取镜像时一切正常. 拉取完后,输入 docker images查看所有镜像, 显示正常: 然后我创建容器,命令为(执行时不要有换行): docker create --name percona -v /data/mysql-da

  • python修改linux中文件(文件夹)的权限属性操作

    今天生成的对流云团路径图片放在linux下,文件的权限都是rw,没有x,后续的别人的程序调用不了,这里附上对三个属性的简单解释,有不够的欢迎大家补充 Linux的权限不是很细致,只有RWX三种 r(Read,读取):对文件而言,具有读取文件内容的权限:对目录来说,具有浏览目录的权限. w(Write,写入):对文件而言,具有新增,修改,删除文件内容的权限:对目录来说,具有新建,删除,修改,移动目录内文件的权限. x(eXecute,执行):对文件而言,具有执行文件的权限:对目录了来说该用户具有进

  • python检查目录文件权限并修改目录文件权限的操作

    我就废话不多说了,还是直接看代码吧! # -*- coding: utf-8 -*- # @author flynetcn import sys, os, pwd, stat, datetime; LOG_FILE = '/var/log/checkDirPermission.log'; nginxWritableDirs = [ '/var/log/nginx', '/usr/local/www/var', ]; otherReadableDirs = [ '/var/log/nginx',

  • Android普通应用升级为系统应用并获取系统权限的操作

    有时候使用某些api需要使用系统权限,如调用PackageInstaller的相关接口,需要android.permission.INSTALL_PACKAGES权限,该权限系统只会授权给系统应用,此时可以考虑将我们的应用升级为系统应用,升级为系统应用有两种方法: 1.将apk放到/system/app目录下,重启手机即可,此方法比较粗暴,而且需要修改/system目录的读写权限,因此需要root,而且随着Android系统版本对权限管理越来越严,root和修改读写权限更繁琐和复杂 2.添加sh

  • 在vue-cli创建的项目中使用sass操作

    安装sass-loader node-sass cnpm install sass-loader node-sass -D -D是--save-dev的缩写 安装之后有的会报错: this.getReslove is not a function.... 这时因为sass-loader的版本太高的原因,在package.json 长修改sass-loader的版本低于8.0,删除node_modules文件加,重新安装就ok了 补充知识:vue-cli的项目 style lang="scss&q

随机推荐