您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關create user與create role在pgsql中的區別是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
CREATE USER name [ [ WITH ] option [ ... ] ] where option can be: SUPERUSER | NOSUPERUSER | CREATEDB | NOCREATEDB | CREATEROLE | NOCREATEROLE | CREATEUSER | NOCREATEUSER | INHERIT | NOINHERIT | LOGIN | NOLOGIN | REPLICATION | NOREPLICATION | BYPASSRLS | NOBYPASSRLS | CONNECTION LIMIT connlimit | [ ENCRYPTED | UNENCRYPTED ] PASSWORD 'password' | VALID UNTIL 'timestamp' | IN ROLE role_name [, ...] | IN GROUP role_name [, ...] | ROLE role_name [, ...] | ADMIN role_name [, ...] | USER role_name [, ...] | SYSID uid
例如:
create user test with replication createrole createdb login password 'test123';
with 后面的部分描述的是“系統權限”或者數據庫用戶的屬性。使用\du命令查看,則對應著List of roles Attributes列。如圖:
官網上的描述是:
CREATE USER is now an alias for CREATE ROLE. The only difference is that when the command is spelled CREATE USER, LOGIN is assumed by default, whereas NOLOGIN is assumed when the command is spelled CREATE ROLE.
也就是說create user 默認有login權限,而create role沒有。
補充:關于PostgreSQL數據庫中的表空間,user,role,權限,模式(schema)的概念.
在PG中,表空間是文件系統中位置的一個鏈接,也就是一個目錄.
表空間是一個可以保存所有其他對象的容器,如表,索引等.
在很多情況下,這樣的功能是很有用的.也就是說:在一個指定的位置保存數據,而不是在默認的位置.
存在如下一個場景:當我們用完初始化數據庫集群所使用的分區上的空間時,就可以使用表空間.
另外一個適用的場景是:處于性能考慮,移動具體對象到速度不同的磁盤上.
可以在一個比較快磁盤的表空間上創建一組頻繁訪問的對象.
或者是,在比較快的磁盤上使用OLTP業務,在比較慢的磁盤上運行OLAP業務.
當我們初始化一個集群的時候,可以得到兩個默認表空間,
一個表空間成為pg_default,所有用戶創建的并且未指定一個表空間的對象講在pg_default表空間內被創建.
pg_default表空間的位置PGDATA下的基礎目錄.
另一個表空間是pg_global,它持有集群(cluster)中所有數據庫共享的系統表.
模式(schema):我們在pg數據庫中創建的任何對象(表,索引,視圖等)都會在一個模式下被創建.
當創建對象時,如果未指定模式,這些對象將會在默認的模式下被創建.這個模式叫做public.
一個例外情況是另一個模式首先出現在search_path中.
在pg中,一個角色幾乎與一個用戶相同.因為一個角色可以是用戶,也可以是一個用戶組.
create user命令等同于create role,除了一點:create user有隱含的login權限.而create role不會有該權限.
每個角色是整個cluster所共享的,角色不是某個數據庫特有的.
為了在數據庫實現有效操作,用戶必須獲得相關權限.
在pg中,權限可以針對數據庫級別設定,也可以針對單個對象級別(表,視圖,函數等)進行設定.
權限有select,delete,update,insert,execute
還有創建對象的權限,刪除對象的權限
在pg中,可以把一個特定權限給一個user
也可以把一個特定權限給一個role
role的一個重要特點就是可以被繼承.
舉例:
我們可以創建一個report_user角色,然后在一組table中將select權限授予這個角色.
然后,為從事報告工作的每個人各自創建user,并將report_user 角色授權給這些user.
當其中一個user離開部門時,我們只要刪除該用戶所創建的登錄即可.
看完上述內容,你們對create user與create role在pgsql中的區別是什么有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。