小编Gil*_*mas的帖子

PostgreSQL CREATE TABLE 创建的所有者不正确

我正在使用 PostgreSQL 9.2.4。当我在非超级用户拥有的数据库中以非超级用户身份创建表时,它归postgres用户所有,因此除非我明确授予自己权限,否则我无法将任何数据放入其中。

我创建了这样的非超级用户:

admin_user=# create role "test1" NOINHERIT LOGIN ENCRYPTED PASSWORD 'wibble' CONNECTION LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个test1像这样拥有的数据库:

admin_user=# create database "test1$db1" with owner "test1";
Run Code Online (Sandbox Code Playgroud)

然后我以 user 身份启动了一个新的 psql test1,并创建了一个表:

test1$db1=> create table test_table (column_name varchar(50));
Run Code Online (Sandbox Code Playgroud)

但我无法插入其中:

test1$db1=> insert into test_table values ('some data');                                                                                                    
ERROR:  permission denied for relation test_table
Run Code Online (Sandbox Code Playgroud)

检查权限显示该表归postgres用户所有:

test1$db1=> \dt
             List of relations
 Schema |      Name      | Type  |  Owner   
--------+----------------+-------+----------
 public | test_table     | table | postgres
Run Code Online (Sandbox Code Playgroud)

但是,我可以授予自己权限并执行以下操作:

test1$db1=> grant …
Run Code Online (Sandbox Code Playgroud)

postgresql permissions postgresql-9.2

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

permissions ×1

postgresql ×1

postgresql-9.2 ×1