我安裝了PostgreSQL 9數據庫(從Oracle10g遷移),我真的被用戶/角色管理困惑。當我使用SQL命令如CREATE USER
或CREATE ROLE
或Navicat工具創建新用戶時,創建的用戶可以看到所有數據庫!他真的可以連接他們!儘管他不能從表中選擇任何數據,但他可以查看錶格對象和序列等。我試圖撤銷連接特權,但沒有效果。我預計新用戶沒有特權,也看不到任何東西。我真的不知道他爲什麼可以。爲什麼PostgreSQL中的新用戶可以連接到所有數據庫?
回答
您可能還需要修改pg_hba.conf
文件。默認情況下,本地安裝不會執行授權檢查。
從http://www.postgresql.org/docs/9.2/static/sql-grant.html#SQL-GRANT-DESCRIPTION-OBJECTS(重點煤礦):
PostgreSQL的授予缺省權限對某些類型的對象
PUBLIC
。默認情況下,在表,列,模式或表空間中沒有授予PUBLIC
的權限。對於其他類型,授予PUBLIC
的默認權限如下:CONNECT
和CREATE TEMP TABLE
對於數據庫;EXECUTE
功能特權;和USAGE
語言的特權。對象所有者當然可以使用默認的和明確授予的權限REVOKE
。 (爲了獲得最大的安全性,請在創建對象的同一事務中發出REVOKE
;然後不存在其他用戶可以使用該對象的窗口。)另外,可以使用ALTER DEFAULT PRIVILEGES命令更改這些初始默認特權設置。
爲了消除對數據庫上的所有非指定用戶的所有權限(包括CONNECT
),使用方法:
REVOKE ALL PRIVILEGES ON DATABASE <database> FROM public;
參見:
非常感謝,除了「爲了最大限度的安全性,在創建對象的相同事務中發出REVOKE;那麼沒有其他用戶可以使用該對象的窗口「 - 這聽起來像很好的建議,但不適用於數據庫,因爲(引用錯誤消息)」CREATE DATABASE無法在事務塊內運行「。所以沒有辦法關閉窗口讓別人使用新的數據庫? – njlarsson
- 1. 連接到postgresql數據庫
- 2. 有什麼辦法可以連接到xamarin的postgresql?
- 3. 爲什麼我無法連接到新創建的數據庫?
- 4. 爲什麼我的程序沒有連接到數據庫?
- 5. 用ActiveRecord連接到現有的Postgresql數據庫沒有rails
- 6. 有多少數據庫可以連接到Sqlite連接?
- 7. 爲什麼在所有數據庫中
- 8. 爲什麼可以psycopg2連接到我的數據庫,我不能
- 9. rails postgresql數據庫連接
- 10. 用戶可以隨時連接到數據庫[POSTGRES]
- 11. 爲什麼PDO沒有連接到數據庫
- 12. 將R連接到PostgreSQL數據庫
- 13. 連接到Heroku PostgreSQL數據庫
- 14. 如何連接vb6到postgresql數據庫?
- 15. 將PostgreSQL數據庫連接到Sails.js
- 16. 連接到其他數據庫postgresql JDBC
- 17. 連接PGAdmin3到OpenShift PostgreSQL數據庫
- 18. 可以使用什麼版本的PHP連接到SQL Server 2000數據庫?
- 19. 有什麼辦法可以連接postgresql和apache tomcat 7嗎?
- 20. 您可以連接到SQL數據庫並使用該數據庫中的數據更新SQLite3中的表嗎?
- 21. 作爲新用戶重新連接到postgreSQL,登錄後
- 22. 爲什麼所有數據庫在PostgreSQL中都有一個公共模式?
- 23. 爲什麼不直接連接android到數據庫?
- 24. JPA可以使用數據庫連接
- 25. 可以用javascript連接數據庫嗎
- 26. 使用Excel中的電源查詢連接到Postgresql數據庫
- 27. 連接到Android應用程序中的Heroku PostgreSQL數據庫?
- 28. 爲什麼我的Swift應用程序沒有連接到我的數據庫?
- 29. 當我使用soci連接到postgresql時,爲什麼我沒有足夠的數據庫特權?
- 30. PostgreSQL:爲什麼我可以使用設定的密碼連接到用戶而不必輸入密碼?
你是如何撤銷CONNECT權限的? –
如果您使用的是pgAdmin,您可以查看用戶的登錄角色和權限。在您的服務器中,展開登錄角色,右鍵單擊有問題的登錄角色,然後選中角色權限和角色成員身份。然後將這些特權和成員與所討論的數據庫和數據庫對象進行匹配。如果數據庫或對象具有授予的角色,並且您的用戶的登錄名具有該角色,則說明訪問權限。如果用戶在「角色權限」選項卡上單擊了複選框,則說明其他權限。 – atrain
所以我啓動了pgAdmin並觀看了我的數據庫上的角色選項卡(右鍵單擊數據庫,然後使用permissionsI)。我的所有數據庫都加入了「公共」角色。所以我刪除它。而現在它的作品!非常感謝你,因爲我有點害怕:-) – veselej