1
如果我創建一個表與普通用戶帳戶:需要什麼授予(撤銷)來禁止更新表格?
create table test (a text, b text, c text);
同一用戶可以對錶中的所有動作......
john=# \z test
Access privileges
Schema | Name | Type | Access privileges | Column access privileges
--------+----------+-------+-------------------+--------------------------
public | testtest | table | john=ardDxt/john |
即使我運行此:
revoke update on test from john;
用戶仍然可以更新表中的行。可以修改權限,以便用戶不再擁有允許更新的權限?
我甚至試過這樣:
revoke all privileges on test from john;
而且它清空了約翰= ardDxt,但更新繼續工作(假設這是因爲約翰也是數據庫和/或表的所有者) 。我是從那裏說文檔本身閱讀...
PostgreSQL允許一個對象所有者撤銷自己的普通 特權:比如,一個表所有者可以使表由只讀 自己撤銷他自己的INSERT,UPDATE,DELETE和TRUNCATE 特權。
但我似乎無法做到它所說的,而且這些例子相當稀少。
可以從「CREATE TABLE」開始顯示* full * DDL嗎?還有'\ d +'在桌子上和'\ du + john'。 –
只要您提到\ du +,解決方案就顯而易見了。我使用Postgres.app進行開發,它的默認用戶也是超級用戶。我創建了另一個超級用戶,撤消了john的超級用戶,然後做了正確的授予/撤銷...我可以設置它,以便用戶可以插入/刪除但不更新(或者更具體地說,不能更新某些列)。你解決了它,如果你想把它寫成答案,我會接受它。非常感謝。 –