2016-09-18 82 views
0

我想創建一個數據庫的角色,可以連接到和查看該數據庫只。Postgres列表數據庫的權限

如何我去一下吧:

_, err = db.Exec("CREATE DATABASE " + database.Name + " ENCODING 'utf8' LC_COLLATE 'en_US.UTF-8'") 
_, err = db.Exec("CREATE ROLE " + database.User + " WITH LOGIN PASSWORD '" + database.Password + "'") 
_, err = db.Exec("REVOKE ALL PRIVILEGES ON DATABASE " + database.Name + " FROM PUBLIC") 
_, err = db.Exec("GRANT ALL PRIVILEGES ON DATABASE " + database.Name + " TO " + database.User) 

的問題是,我的角色可以通過連接到Postgres的:

psql -U haruki -W -h localhost 

它是沒問題的,但它可以列出所有數據庫及其相應的權限即使它無法連接到它們。

有什麼辦法可以防止用戶列出所有數據庫?或者也許只允許使用-d標誌登錄?

回答

0

有沒有辦法限制這在pgsql中。 pg_catalog保存數據庫的名稱。

要麼你必須添加一個自定義圖層來在你使用的任何語言之間執行此操作,要麼通過編輯postgresql配置並使用DDL語句來關注this