如何在PostgreSQL中查看有哪些用戶和用戶權(quán)限
在 PostgreSQL 中查看用戶(在 PostgreSQL 中,用戶和角色是同一個概念,ROLE)主要有以下幾種方法。
方法一:使用 SQL 命令查詢系統(tǒng)目錄(推薦)
這是最常用和最靈活的方法。用戶信息主要存儲在 pg_catalog.pg_roles 系統(tǒng)目錄中。
1. 查看所有用戶/角色(基本信息)
SELECT rolname AS username,
rolsuper AS is_superuser,
rolcanlogin AS can_login,
rolcreatedb AS can_create_db,
rolcreaterole AS can_create_roles,
rolreplication AS can_do_replication
FROM pg_roles
ORDER BY rolname;
字段解釋:
rolname: 用戶名。rolsuper: 是否是超級用戶(t表示是,f表示否)。rolcanlogin: 是否有登錄權(quán)限(即能否作為客戶端連接數(shù)據(jù)庫)。具有登錄權(quán)限的角色才通常被稱為“用戶”。rolcreatedb: 是否有創(chuàng)建數(shù)據(jù)庫的權(quán)限。rolcreaterole: 是否有創(chuàng)建其他角色的權(quán)限。rolreplication: 是否有流復(fù)制的權(quán)限。
2. 僅查看具有登錄權(quán)限的用戶(常用)
我們通常更關(guān)心能登錄數(shù)據(jù)庫的用戶。
SELECT usename AS username,
usesuper AS is_superuser,
usecreatedb AS can_create_db,
usecreaterole AS can_create_roles,
usesysid AS user_id
FROM pg_user
ORDER BY usename;
pg_user 是 pg_roles 的一個便于查看的視圖,它默認(rèn)只顯示具有登錄權(quán)限的角色。
3. 查看更詳細(xì)的信息(包括權(quán)限、屬性等)
SELECT * FROM pg_roles WHERE rolcanlogin = true ORDER BY rolname;
這會列出所有能登錄的角色的所有屬性,包括賬戶有效期、連接限制等。
方法二:使用元命令(在 psql 命令行工具中)
如果你正在使用 PostgreSQL 的交互式命令行工具 psql,可以使用快捷的元命令(以反斜杠 \ 開頭的命令)。
1. 列出所有角色/用戶
\du
或者更詳細(xì)的版本:
\du+
\du 是 \df 用于函數(shù),\dt 用于表一樣,是用于用戶的元命令。
2. 列出所有用戶(等同于SELECT * FROM pg_user;)
\dg
在 PostgreSQL 中,\du 和 \dg 是等價的,都可以用來列出角色。
方法三:查看用戶屬性(如密碼有效期、連接限制)
如果你想查看用戶更具體的屬性配置,可以查詢 pg_shadow 系統(tǒng)目錄。注意:通常只有超級用戶才能查看此視圖,因?yàn)樗艽a哈希(以md5或SCRAM形式加密存儲)。
SELECT usename AS username,
passwd AS password_hash, -- 敏感信息,通常以md5或SCRAM開頭
valuntil AS password_expires_at,
useconfig AS session_defaults
FROM pg_shadow
WHERE usename = 'your_username'; -- 可以指定要查看的用戶名
字段解釋:
passwd: 加密后的密碼。如果是********,則表示密碼已被加密,無法直接查看明文。valuntil: 密碼失效時間(賬戶有效期)。useconfig: 該用戶會話的默認(rèn)運(yùn)行時配置(例如,{search_path=myschema, work_mem=16MB})。
示例輸出解讀
執(zhí)行 \du 后,你可能會看到如下結(jié)果:
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------------------+-----------
admin | Superuser, Create role, Create DB, Replication, Bypass RLS | {}
app_user | Create DB | {readonly_group}
bob | Password valid until 2024-12-31 | {}
readonly | Cannot login | {}
- admin: 這是一個超級用戶,擁有所有最高權(quán)限。
- app_user: 這是一個普通用戶,擁有創(chuàng)建數(shù)據(jù)庫的權(quán)限,并且是
readonly_group角色的成員。 - bob: 這是一個普通用戶,他的密碼將在 2024 年底失效。
- readonly: 這是一個角色(
Cannot login),不能直接登錄,通常被授予其他用戶以實(shí)現(xiàn)權(quán)限分組。
總結(jié)
| 你的需求 | 使用的命令(SQL) | 使用的元命令(psql 中) |
|---|---|---|
| 快速查看所有用戶及其主要權(quán)限 | SELECT * FROM pg_user; | \du 或 \dg |
| 查看所有角色(包括不能登錄的) | SELECT rolname, rolcanlogin FROM pg_roles; | \du |
| 查看更詳細(xì)的角色屬性 | SELECT * FROM pg_roles; | \du+ |
| 查看用戶的密碼和有效期(需超級用戶) | SELECT * FROM pg_shadow; | 無直接元命令 |
對于日常管理,最常用的是 \du 元命令,因?yàn)樗唵慰旖?。在腳本或需要程序化處理時,則使用 SELECT ... FROM pg_roles 或 pg_user 的 SQL 查詢方式。
到此這篇關(guān)于如何在PostgreSQL中查看有哪些用戶和用戶權(quán)限的文章就介紹到這了,更多相關(guān)PostgreSQL查看用戶和用戶權(quán)限內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
postgresql無序uuid性能測試及對數(shù)據(jù)庫的影響
小編最近在做一個超大表的性能測試,在過程中發(fā)現(xiàn)無序uuid做主鍵對表插入性能有些影響,糾結(jié)該怎么處理這一問題呢?接下來小編給大家分享postgresql無序uuid性能測試的相關(guān)知識幫助大家學(xué)習(xí),需要的彭參考下吧2021-06-06
在PostgreSQL中使用ltree處理層次結(jié)構(gòu)數(shù)據(jù)的方法
這篇文章主要介紹了在PostgreSQL中使用ltree處理層次結(jié)構(gòu)數(shù)據(jù),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
Postgresql數(shù)據(jù)庫中的json類型字段使用示例詳解
JSON的主要用于在服務(wù)器與web應(yīng)用之間傳輸數(shù)據(jù),這篇文章主要介紹了Postgresql數(shù)據(jù)庫中的json類型字段使用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-02-02
postgresql 實(shí)現(xiàn)獲取所有表名,字段名,字段類型,注釋
這篇文章主要介紹了postgresql 實(shí)現(xiàn)獲取所有表名,字段名,字段類型,注釋操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
PostgreSQL 向量擴(kuò)展插件pgvector安裝和使用
本文主要介紹了PostgreSQL 向量擴(kuò)展插件pgvector安裝和使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2026-05-05
PostgreSQL pg_archivecleanup與清理archivelog的操作
這篇文章主要介紹了PostgreSQL pg_archivecleanup與清理archivelog的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
PostgreSQL如何查詢表結(jié)構(gòu)和索引信息
文章介紹了在PostgreSQL中查詢表結(jié)構(gòu)和索引信息的幾種方法,包括使用`\d`元命令、系統(tǒng)數(shù)據(jù)字典查詢以及使用可視化工具DBeaver2024-12-12
解決sqoop從postgresql拉數(shù)據(jù),報錯TCP/IP連接的問題
這篇文章主要介紹了解決sqoop從postgresql拉數(shù)據(jù),報錯TCP/IP連接的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12

