2011-04-19 86 views
17

如何查看已發出的用戶GRANT CONNECT ON DATABASE <database> TO <user>PostgreSQL:查看數據庫連接權限

  • \ DP - 列出表/視圖的權限
  • \ DN + - 列出架構權限
  • \ L +不會列出可以訪問數據庫
+0

哇這個問題是舊的,它似乎我從來沒有選擇一個答案。我想那是因爲當時我正在尋找更多的東西。我有一段時間沒有看到這個,所以我很抱歉,如果這是錯誤的。我在猜測,pg_hba.conf文件允許用戶連接到服務器,而不需要顯式授予。因此,沒有被鎖定的數據庫將能被虛擬允許的任何人訪問,而'\ l'命令可能永遠無法知道。 – vol7ron 2016-05-04 04:04:05

回答

0

我使用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

+0

沒錯,但沒有列出所有的用戶。我認爲這可能是一個限制。或者,也許pg_hba.conf首先要做的事情。 – vol7ron 2011-04-19 22:09:17

18

如果\ 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 
+0

約翰,我會研究這個。我相信我也正在測試8.4版本。我想我可以查詢它,但我希望能有一個快捷命令來做到這一點。無論如何,我將不得不看看我是否記得引起我注意的獨特情況。 – vol7ron 2011-06-26 18:38:28

+0

自從我看到這個問題以來已經有一段時間了。 8.4和否,我知道有一些帳戶可以訪問數據庫,但沒有在列表中顯示......除非......問題:當'= Tc/'中的等號之前沒有用戶列出時,這意味着什麼?這是否意味着任何人都有臨時連接? – vol7ron 2012-04-02 18:54:33

+0

是的。順便問一下,我已經更新瞭解釋權限的答案。 – 2012-10-01 04:50:07