2017-10-16 56 views
1

我正在使用PostGres 9.5。我無法將數據插入到剛剛創建的表中。儘管授予數據庫用戶的所有權限,但我仍然收到「權限被拒絕」錯誤。見下面...授予我的PostGres表的所有權限,但仍嘗試插入/選擇時出現「權限被拒絕」錯誤

localhost:myapp davea$ psql -Upostgres 
Password for user postgres: 
psql (9.5.0, server 9.5.1) 
Type "help" for help. 

postgres=# GRANT ALL ON schema public TO myapp; 
GRANT 

localhost:myapp davea$ psql -Upostgres 
Password for user postgres: 
psql (9.5.0, server 9.5.1) 
Type "help" for help. 

postgres=# GRANT USAGE ON schema public TO myapp; 
GRANT 
postgres=# \q 
localhost:myapp davea$ myapp 
psql (9.5.0, server 9.5.1) 
Type "help" for help. 

myapp=> insert into search_codes (id, code, address_id) values (1, 'atlanta', 'GA'); 
ERROR: permission denied for relation search_codes 
myapp=> select * FROM search_codes; 
ERROR: permission denied for relation search_codes 
myapp=> \d search_codes; 
           Table "public.search_codes" 
    Column |  Type  |       Modifiers 
------------+-------------------+----------------------------------------------------------- 
id   | integer   | not null default nextval('search_codes_id_seq'::regclass) 
code  | character varying | 
address_id | character varying | 
Indexes: 
    "search_codes_pkey" PRIMARY KEY, btree (id) 
    "index_search_codes_on_code" UNIQUE, btree (code) 
    "index_search_codes_on_address_id" btree (address_id) 

什麼是授予權限的正確方法,以便我的用戶可以插入和從表中選擇?

+0

你有一個單獨的數據庫,或者所有你的表在postgres默認數據庫? –

回答

0

你的第一個命令,給你以列出表的能力(你可以知道,有存在的)

GRANT USAGE ON SCHEMA public TO myapp 

然後,你必須授予SELECT,INSERT,等等......在所有的表模式公開

GRANT SELECT, UPDATE, INSERT, DELETE ON ALL TABLES IN SCHEMA public TO myapp 

我推薦不給所有特權給特定的應用程序。

如果您有序列:

GRANT SELECT, UPDATE, USAGE ON ALL SEQUENCES IN SCHEMA public to myapp 

如果你有功能:

GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO myapp 

那麼你的例子會工作。

但是你還是有,如果你想未來的危機創建的表才能夠訪問應用一些命令:

ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, UPDATE, INSERT, DELETE, TRIGGER ON TABLES TO myapp 

PostgreSQL擁有非常怪異mecanism我花了一段時間去了解它!

+0

前兩個撥款,它的工作。謝謝 – Dave

0

您正在授予postgres數據庫而不是myapp數據庫的權限。

更改第一PSQL命令

psql -Upostgres myapp 

,然後發出撥款

+0

給了一個旋風,但我仍然得到相同的錯誤。 – Dave

相關問題