暂无图片
请教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
暂无图片
S
shipx

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

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏