如何查看已發出的用戶GRANT CONNECT ON DATABASE <database> TO <user>
?PostgreSQL:查看數據庫連接權限
- \ DP - 列出表/視圖的權限
- \ DN + - 列出架構權限
- \ L +不會列出可以訪問數據庫
如何查看已發出的用戶GRANT CONNECT ON DATABASE <database> TO <user>
?PostgreSQL:查看數據庫連接權限
我使用psql的所有用戶8.4 Postgres的和Postgres 9.0,並且命令\l
或\l+
給我列Access Privileges
在那裏我有條目:
<user_name>=c/<database_name>
和更早的版本,我給了用戶連接權限,只要你想。
正如頁面http://www.postgresql.org/docs/9.0/static/sql-grant.html所述,這裏的c
字母表示Connect
。
沒錯,但沒有列出所有的用戶。我認爲這可能是一個限制。或者,也許pg_hba.conf首先要做的事情。 – vol7ron 2011-04-19 22:09:17
如果\ l +命令僅顯示一些具有連接到數據庫的權限/用戶權限的用戶,有點奇怪。我無法在PostgreSQL 8.4安裝(Ubuntu 10.04 LTS)上重複這一點。你使用什麼版本?
不管怎麼說,也許你可以檢查表持有ACL對特定數據庫,並能從中推理出用戶是否擁有正確的權限或沒有:
SELECT datname as "Relation", datacl as "Access permissions" FROM pg_database WHERE datname = 'databasename';
如果你只是想檢查一個用戶你可以做這樣的事情:
SELECT * FROM has_database_privilege('username', 'database', 'connect');
如何解釋權限/特權?該權限要這樣寫的:
user = privileges/granted by
忽略用戶意味着PUBLIC被授予特權,即所有角色。例如,如果特權爲=Tc/postgres
,則所有角色都可以在該特定數據庫中連接並創建臨時表,並且該用戶授予該特權。
PostgreSQL站點有一個簡介,解釋PostgreSQL站點http://www.postgresql.org/docs/9.2/static/sql-grant.html的不同特權。
rolename=xxxx -- privileges granted to a role
=xxxx -- privileges granted to PUBLIC
r -- SELECT ("read")
w -- UPDATE ("write")
a -- INSERT ("append")
d -- DELETE
D -- TRUNCATE
x -- REFERENCES
t -- TRIGGER
X -- EXECUTE
U -- USAGE
C -- CREATE
c -- CONNECT
T -- TEMPORARY
arwdDxt -- ALL PRIVILEGES (for tables, varies for other objects)
* -- grant option for preceding privilege
/yyyy -- role that granted this privilege
約翰,我會研究這個。我相信我也正在測試8.4版本。我想我可以查詢它,但我希望能有一個快捷命令來做到這一點。無論如何,我將不得不看看我是否記得引起我注意的獨特情況。 – vol7ron 2011-06-26 18:38:28
自從我看到這個問題以來已經有一段時間了。 8.4和否,我知道有一些帳戶可以訪問數據庫,但沒有在列表中顯示......除非......問題:當'= Tc/
是的。順便問一下,我已經更新瞭解釋權限的答案。 – 2012-10-01 04:50:07
哇這個問題是舊的,它似乎我從來沒有選擇一個答案。我想那是因爲當時我正在尋找更多的東西。我有一段時間沒有看到這個,所以我很抱歉,如果這是錯誤的。我在猜測,pg_hba.conf文件允許用戶連接到服務器,而不需要顯式授予。因此,沒有被鎖定的數據庫將能被虛擬允許的任何人訪問,而'\ l'命令可能永遠無法知道。 – vol7ron 2016-05-04 04:04:05