暂无图片
请教postgre的数据库权限问题
我来答
分享
yueli34
2024-06-13
请教postgre的数据库权限问题

请问各位老大,postgre数据库创建以后,是否不用授权用户就自动有对改数据库访问和建表的权限?

根据如下步骤,用户erp_etl创建以后就可以对数据库进行登陆和在public模式建表。

如果这样就能在数据库建表和删表等,那么官方给的如下数据库授权语句的作用是什么呢?

https://www.postgresql.org/docs/current/sql-grant.html

GRANT { { CREATE | CONNECT | TEMPORARY | TEMP } [, ...] | ALL [ PRIVILEGES ] }
    ON DATABASE database_name [, ...]
    TO role_specification [, ...] [ WITH GRANT OPTION ]
    [ GRANTED BY role_specification ]
复制

建库

postgres=# create database erp encoding 'UTF8' LC_COLLATE = 'en_US.utf8' LC_CTYPE = 'en_US.utf8' template template0;
CREATE DATABASE
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
erp | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)

建用户

postgres=# drop role erp_etl;
DROP ROLE
postgres=# create role erp_etl password 'Bigdata@123' login;
CREATE ROLE


登陆

[postgres@vm01 ~]$ psql -h 10.10.10.2 -U erp_etl -d erp -p 1921
Password for user erp_etl:
psql (12.18)
Type "help" for help.

erp=> \d
Did not find any relations.
erp=> \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+------------+------------+-----------------------
erp | postgres | UTF8 | en_US.utf8 | en_US.utf8 |
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
(4 rows)

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
lianR

在PostgreSQL中,创建数据库后,只有创建该数据库的用户和超级用户才有权访问该数据库。其他用户必须被明确授权才能访问。

当你创建一个新用户时,该用户没有任何默认的权限,除非你明确授权。例如,如果你创建了一个新用户erp_etl,那么这个用户没有任何默认的权限,包括访问任何数据库的权限。你必须明确授权这个用户才能访问特定的数据库。

授权语句的作用是给用户分配特定的权限。例如,你可以授权一个用户访问特定的数据库,或者在特定的数据库中创建表,或者对特定的表进行读、写、更新和删除操作。

例如,你可以使用以下命令给erp_etl用户授权访问mydb数据库:

```
GRANT  CONNECT  ON  DATABASE  mydb  TO  erp_etl;
```

你还可以使用以下命令给erp_etl用户授权在mydb数据库的public模式中创建表:

```
GRANT  CREATE  ON  SCHEMA  public  TO  erp_etl;
```

总的来说,PostgreSQL的权限系统是非常灵活和强大的,你可以根据你的需求来分配不同的权限给不同的用户。

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
S
shipx

可以自己创建表和操作表的数据。但是不授权的话,是没有权限访问已有表的数据。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
各位大佬,postgresql这个public怎么理解?
回答 2
已采纳
public就是谁都能用。任何用户对public的schema都有all的权限,为了安全可以禁止用户对publicschema
关于内存统计方面--pg
回答 1
PostgreSQL没有类似MySQL的sys.memoryglobaltotal视图,可通过以下几种方式间接了解内存情况:通过pgstatactivity、pgstatbgwriter、pgstat
请问:Postgresql递归查询,使用ARRAY保存path, 出现数组数据类型错误应如何解决?见下图
回答 2
可以上传一下表结构看看
PostgreSQL中,下列哪个锁模式属于行级锁?
回答 5
https://postgrespro.com/blog/pgsql/5967999
pg表继承建议使用吗?
回答 2
表继承是PostgreSQL中特有的。PostgreSQL内部是通过表继承来实现分区表的。PostgreSQL10.X之前的版本只能通过表继承来实现分区表。而PostgreSQL10.X提供了相应的D
postgreSQL 中要查看DML操作记录,是不是要解析wal日志?
回答 1
看你开启的日志级别。  开了全量可以看到。
postgreSQL 有没有数据脱敏插件?
回答 2
可以参考我的这篇文章:PostgreSQL数据脱敏插件介绍
有没有好的工具可以监听postgresql接收到了哪些查询请求?
回答 1
如果这样的需求的话,您需要的是数据库审计。旁路接入,全部记录的那种。
postgreSQL select套一层和with as有没有什么区别?
回答 6
学习了
PostgreSQL登陆时出现提示:“invalid suffix config” “invalid user name when get shadow information”
回答 4
暂无文字回复