mysql 用户概念_传输概念 – db对象的用户/组/权限从mysql到postgresql
這似乎比stackoverflow更適合這里,所以這里:
我一直在使用mysql一段時間以來,因為在大多數便宜的虛擬主機上,它是提供的數據庫.但是,現在我開始認真開發Web應用程序,我一直在本地使用postgresql作為我的數據庫,以便在我感到舒服時在客戶端安裝上正確使用它.
我唯一沒有掌握的(當然是基礎知識)是用戶/組/權限的概念.在mysql中,我創建用戶,我可以授予他們對我希望他們有權訪問的各種表的權限.
這個概念在Postgres中如何運作?可以?在我的本地機器上,我一直允許用戶apache訪問我的表,以便我的django應用程序可以工作,通過:
echo "GRANT SELECT,INSERT,UPDATE,DELETE ON TABLE $table TO $2"
echo "GRANT SELECT,INSERT,UPDATE,DELETE ON TABLE $table TO $2" | psql $1
echo "GRANT SELECT,UPDATE ON SEQUENCE ${table}_id_seq TO $2"
echo "GRANT SELECT,UPDATE ON SEQUENCE ${table}_id_seq TO $2" | psql $1
(更大的腳本的一部分)
這樣安全嗎?我非常肯定每個應用程序用戶聽起來像一個更明智的想法,但后來我不知道.
所以,我猜這會引起我的疑問:
>用戶/組/權限如何在postgresql中運行?
>他們如何與mysql相比?
>什么是最佳做法?
解決方法:
postgres中沒有用戶和組(> 8.2?),只有ROLE,角色可能會或可能無法登錄.這并不重要,因為CREATE USER和CREATE GROUP只是CREATE ROLE的別名.
正如@ Peter Eisentraut所說,這段代碼應該可以正常工作.
我在這方面注意到的一些更大的差異,除了Postgres使用Roles而不是用戶之外,Postgres使用ident對用戶進行數據庫身份驗證的方式允許系統用戶通過系統用戶訪問沒有密碼的數據庫 – > posgres用戶映射,為什么默認情況下映射它們是否相同.有關身份驗證的更多信息,請參閱the auth method documentation.
就表權限而言,據我所知,它們非常接近.但是,您可以在postgres中使您的權限更加精細.現在,在postgres中,您甚至可以使用GRANT將用戶限制為特定列,在某些即將推出的版本中,它應該能夠按行限制數據庫用戶.
我絕對建議通過不同的用戶/數據庫限制來限制不同的應用程序,雖然你也可以使用SCHEMA而不是數據庫,但是如果你擁有一個模式,你可以修改其中的任何內容,所以它不是很精細.
任何最佳實踐可能都取決于您的應用程序,實際上您應該閱讀文檔并找出最適合該應用程序的內容.
標簽:mysql,authentication,postgresql,authorization
來源: https://codeday.me/bug/20190807/1606035.html
總結
以上是生活随笔為你收集整理的mysql 用户概念_传输概念 – db对象的用户/组/权限从mysql到postgresql的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山东警方破获国内首例第三方支付公司特大网
- 下一篇: java面向对象使用字符串_java面向