最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL 默認(rèn)權(quán)限查看方式

 更新時(shí)間:2021年01月04日 10:30:29   作者:modestchen  
這篇文章主要介紹了PostgreSQL 默認(rèn)權(quán)限查看方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

如何查看PostgreSQL默認(rèn)權(quán)限

當(dāng)我們對(duì)Postgresql的某個(gè)用戶授予默認(rèn)權(quán)限時(shí), pg_default_acl表存儲(chǔ)要被分配給新創(chuàng)建對(duì)象的初始權(quán)限。你可能通過查詢?cè)摫慝@取默認(rèn)權(quán)限,先了解下官方文檔的解釋:

表 50-17. pg_default_acl的列:

名稱 類型 引用 描述
oid oid 行標(biāo)識(shí)符(隱藏屬性,必須被顯式選擇才會(huì)顯示)
defaclrole oid pg_authid.oid 與此項(xiàng)相關(guān)的角色的OID
defaclnamespace oid pg_namespace.oid 與此項(xiàng)相關(guān)的名字空間的OID,如果沒有則為0
defaclobjtype char 此項(xiàng)適合的對(duì)象類型: r = 關(guān)系(表、視圖), S = 序列, f = 函數(shù), T = 類型
defaclacl aclitem[] 此類對(duì)象在創(chuàng)建時(shí)應(yīng)用有的訪問權(quán)限

一個(gè)pg_default_acl項(xiàng)展示了要分配給屬于一個(gè)指定用戶的對(duì)象的初始權(quán)限。當(dāng)前有兩類項(xiàng):defaclnamespace = 0的"全局"項(xiàng)和引用一個(gè)特殊模式的"每模式"項(xiàng)。如果一個(gè)全局項(xiàng)存在,則它重載該對(duì)象類型的普通hard-wired默認(rèn)權(quán)限。一個(gè)每模式項(xiàng)如果存在,表示權(quán)限將被加入到全局或hard-wired默認(rèn)權(quán)限中。

添加默認(rèn)權(quán)限

演示數(shù)據(jù)庫(kù)版本:PostgreSQL 9.6.8

這里我們測(cè)試給test用戶添加“abc”模式的默認(rèn)權(quán)限,先查看下當(dāng)前schema的所有者:

// 查看當(dāng)前schema的所有者,相當(dāng)于\du元命令
SELECT n.nspname AS "Name",
 pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"
FROM pg_catalog.pg_namespace n
WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'
ORDER BY 1; 

查詢結(jié)果如圖所示,模式“abc”的所有者為postgresql用戶

針對(duì)模式“abc”, 使用超級(jí)管理員postgresql給普通用戶test授權(quán),命令如下:

// 最后一條命令就是授予初始權(quán)限
grant select on all tables in schema abc to test;
grant usage on schema abc to test;
alter default privileges in schema abc grant select on tables to test;

查看默認(rèn)權(quán)限

授權(quán)完成,通過pg_default_acl表查看默認(rèn)權(quán)限

// 查看初始權(quán)限
select * from pg_catalog.pg_default_acl;

這樣看其實(shí)不是很直觀,可以使用下面的SQL來查看:

// 查看初始權(quán)限
SELECT pg_catalog.pg_get_userbyid(d.defaclrole) AS "Granter",
 n.nspname AS "Schema",
 CASE d.defaclobjtype WHEN 'r' THEN 'table' WHEN 'S' THEN 'sequence' WHEN 'f' THEN 'function' WHEN 'T' THEN 'type' END AS "Type",
 pg_catalog.array_to_string(d.defaclacl, E', ') AS "Access privileges"
FROM pg_catalog.pg_default_acl d
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = d.defaclnamespace
ORDER BY 1, 2, 3;

輸出結(jié)果如下: 表示通過Postgresql超級(jí)用戶授予test普通用戶對(duì)模式“abc”有讀的權(quán)限。

在此,我們?cè)侔涯J健癮bc”的擁有者(owner)修改為dbadmin用戶(可以事先創(chuàng)建好),執(zhí)行以下命令:

// 修改模式“abc”擁有者為:dbadmin
ALTER SCHEMA abc OWNER TO "dbadmin";
// 查看模式的擁有者,相當(dāng)于\du元命令
SELECT n.nspname AS "Name",
 pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"
FROM pg_catalog.pg_namespace n
WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'
ORDER BY 1;

現(xiàn)在我們使用dbadmin用戶登錄連接到數(shù)據(jù)庫(kù),給普通用戶test添加默認(rèn)權(quán)限,其實(shí)上面已經(jīng)通過postgresql超級(jí)用戶給test用戶加過默認(rèn)權(quán)限了。 這里演示使用dbadmin用戶再添加一次,目的是演示pg_default_acl表會(huì)出現(xiàn)2條記錄,使用dbadmin用戶執(zhí)行以下命令:

alter default privileges in schema abc grant select on tables to test;

再次查看pg_default_acl表會(huì)出現(xiàn)兩行記錄:

一行是dbadmin擁有者授予的讀權(quán)限。 一行是postgresql超級(jí)用戶授權(quán)的讀權(quán)限。

補(bǔ)充:PostgreSQL基本配置與權(quán)限控制

修改PgSQL基本配置:

重要文件和目錄:

配置文件:  postgresql.conf
登錄權(quán)限控制文件: pg_hba.conf
數(shù) 據(jù) 目 錄 : base
運(yùn)行日志目錄: log
歸檔日志目錄: pg_wal

修改PgSQL偵聽地址:

在單引號(hào)內(nèi)寫入IP地址,如果要偵聽多個(gè)IP地址,以逗號(hào)分隔

[root@postgrssql ~]# vim /var/lib/pgsql/11/data/postgresql.conf
listen_addresses = 'localhost,172.18.1.76'

修改PgSQL偵聽端口:

默認(rèn)端口 5432

[root@postgrssql ~]# vim /var/lib/pgsql/11/data/postgresql.conf
port = 5432

修改PgSQL最大連接數(shù):

修改連接數(shù)需要重啟,對(duì)比MySQL一般設(shè)置 512 ~ 1024

[root@postgrssql ~]# vim /var/lib/pgsql/11/data/postgresql.conf
max_connections = 100

打開PgSQL復(fù)制日志:

類似于MySQL binlog,復(fù)制到從庫(kù)并應(yīng)用一遍日志操作就達(dá)到數(shù)據(jù)同步了

# 是否開啟 archive_log日志功能
archive_mode = on
# 歸檔 archive_log日志要執(zhí)行的命令,當(dāng)前不準(zhǔn)備歸檔就執(zhí)行 cd命令
archive_command = 'cd .' 
[root@postgrssql ~]# ll -sh /var/lib/pgsql/11/data/pg_wal
total 16M
M -rw------- 1 postgres postgres 16M Nov 23 20:47 000000010000000000000001
 0 drwx------ 2 postgres postgres 6 Nov 22 15:21 archive_status

PgSQL用戶權(quán)限控制:

在數(shù)據(jù)庫(kù)中創(chuàng)建對(duì)象時(shí),都會(huì)為其分配所有者。 所有者通常是執(zhí)行創(chuàng)建語句的用戶。 對(duì)于大多數(shù)類型的對(duì)象,初始狀態(tài)是只有所有者(或超級(jí)用戶)可以修改或刪除對(duì)象。 要允許其他角色或用戶使用它,必須授予權(quán)限或權(quán)限。

配置超管用戶安全:

默認(rèn)是 all 所有用戶都擁有peer對(duì)等權(quán)限,只修改為postgrs用戶擁有peer權(quán)限

[root@postgrssql ~]# sed -i '80d' /var/lib/pgsql/11/data/pg_hba.conf
[root@postgrssql ~]# sed -i '79a local all  postgres  peer' /var/lib/pgsql/11/data/pg_hba.conf

創(chuàng)建用戶:

# 創(chuàng)建 olda 用戶
postgres=# create user olda with password '123456';
CREATE ROLE
# 查看所有用戶
postgres=# \du
     List of roles
 Role name |    Attributes    | Member of 
-----------+------------------------------------------------------------+-----------
 olda |        | {}
 postgres | Superuser, Create role, Create DB, Replication, Bypass RLS | {}

用戶授權(quán)權(quán)限:

# 切換到 course 數(shù)據(jù)庫(kù)
postgres=# \c course
You are now connected to database "course" as user "postgres".
# 在 course 數(shù)據(jù)庫(kù)授權(quán)所有表的所有權(quán)限到 olda用戶
course=# grant all on all tables in schema public to olda;
GRANT
# 查看 course 數(shù)據(jù)庫(kù)所有表的權(quán)限表信息
course=# \dp+
     Access privileges
 Schema | Name | Type | Access privileges | Column privileges | Policies 
--------+----------+-------+---------------------------+-------------------+----------
 public | students | table | postgres=arwdDxt/postgres+|   | 
 |  | | olda=arwdDxt/postgres |   | 
(1 row)

配置用戶連接:

在PgSQL內(nèi)創(chuàng)建用戶后也是不可以登錄的,需要在pg_hba.conf文件中配置連接源信息,否則不允許遠(yuǎn)程登錄。

加入 olda用戶,local本地可以登錄所有庫(kù),登錄密碼驗(yàn)證方式為md5

[root@postgrssql ~]# vim /var/lib/pgsql/11/data/pg_hba.conf
# "local" is for Unix domain socket connections only
local all  postgres    peer
local all  olda  0.0.0.0/0  md5
# 重載 PostgreSQL
systemctl reload postgresql-11.service
# 測(cè)試 olda用戶連接 PgSQL的 course庫(kù)
-bash-4.2$ psql -U olda -W course
Password: 
psql (11.6)
Type "help" for help.
course=> \l
     List of databases
 Name | Owner | Encoding | Collate | Ctype | Access privileges 
-----------+----------+----------+-------------+-------------+-----------------------
 course | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | 
 postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | 
 template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres  +
  |  |  |  |  | postgres=CTc/postgres
 template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres  +
  |  |  |  |  | postgres=CTc/postgres
(4 rows)

配置默認(rèn)權(quán)限:

意思為 postgres用戶創(chuàng)建的所有表都默認(rèn)對(duì) olda用戶重新授予權(quán)限

postgres=# alter default privileges for role postgres grant all on tables to olda;
ALTER DEFAULT PRIVILEGES

配置用戶遠(yuǎn)程連接:

默認(rèn)在pg_hba.conf文件中加入密碼驗(yàn)證方式還是不可以遠(yuǎn)程訪問,因?yàn)槭?local方式。
加入 olda用戶,host方式,所有來源IP都可以登錄所有庫(kù),登錄密碼驗(yàn)證方式為md5
-bash-4.2$ psql -U olda -W -h 172.18.1.76 -p 5432 course
Password: 
psql: FATAL: no pg_hba.conf entry for host "172.18.1.76", user "olda", database "course", SSL off
[root@postgrssql ~]# vim /var/lib/pgsql/11/data/pg_hba.conf
# "local" is for Unix domain socket connections only
local all  postgres    peer
local all  olda     md5
host all  olda  0.0.0.0/0  md5
# 重載 PostgreSQL
[root@postgrssql ~]# systemctl reload postgresql-11.service
# 測(cè)試是否可以遠(yuǎn)程連接到 PostgreSQL
-bash-4.2$ psql -U olda -W -h 172.18.1.76 -p 5432 course
Password: 
psql (11.6)
Type "help" for help.
course=>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

相關(guān)文章

  • postgresql使用filter進(jìn)行多維度聚合的解決方法

    postgresql使用filter進(jìn)行多維度聚合的解決方法

    這篇文章給大家介紹postgresql使用filter進(jìn)行多維度聚合的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-07-07
  • 修改postgresql存儲(chǔ)目錄的操作方式

    修改postgresql存儲(chǔ)目錄的操作方式

    這篇文章主要介紹了修改postgresql存儲(chǔ)目錄的操作方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • Postgresql中json和jsonb類型區(qū)別解析

    Postgresql中json和jsonb類型區(qū)別解析

    在我們的業(yè)務(wù)開發(fā)中,可能會(huì)因?yàn)樘厥狻練v史,偷懶,防止表連接】經(jīng)常會(huì)有JSON或者JSONArray類的數(shù)據(jù)存儲(chǔ)到某列中,這個(gè)時(shí)候再PG數(shù)據(jù)庫(kù)中有兩種數(shù)據(jù)格式可以直接一對(duì)多或者一對(duì)一的映射對(duì)象,接下來通過本文介紹Postgresql中json和jsonb類型區(qū)別,需要的朋友可以參考下
    2024-06-06
  • 解決postgresql 數(shù)據(jù)庫(kù) update更新慢的原因

    解決postgresql 數(shù)據(jù)庫(kù) update更新慢的原因

    這篇文章主要介紹了解決postgresql 數(shù)據(jù)庫(kù) update更新慢的原因,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • postgresql通過索引優(yōu)化查詢速度操作

    postgresql通過索引優(yōu)化查詢速度操作

    這篇文章主要介紹了postgresql通過索引優(yōu)化查詢速度操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL教程(十七):客戶端命令(1)

    PostgreSQL教程(十七):客戶端命令(1)

    這篇文章主要介紹了PostgreSQL教程(十七):客戶端命令(1),本文講解了createdb、dropdb、reindexdb、vacuumdb、createuser、dropuser等命令,需要的朋友可以參考下
    2015-05-05
  • PostgreSQL生成列實(shí)現(xiàn)過程介紹

    PostgreSQL生成列實(shí)現(xiàn)過程介紹

    PostgreSQL 12 增加新的特性——生成列(Generated Columns),也就是計(jì)算列。在之前版本也可以實(shí)現(xiàn),但需要定義函數(shù)和觸發(fā)器,利用該功能可以更容易使用并可以提升性能。生成列是給表指定計(jì)算列,其數(shù)據(jù)可以根據(jù)其他列數(shù)據(jù)自動(dòng)生成,當(dāng)原數(shù)據(jù)更新時(shí)其自動(dòng)更新
    2023-01-01
  • PostgreSQL使用MySQL作為外部表(mysql_fdw)

    PostgreSQL使用MySQL作為外部表(mysql_fdw)

    PostgreSQL 提供了一種訪問和操作外部數(shù)據(jù)源的機(jī)制,稱為外部數(shù)據(jù)包裝器,本文主要給大家介紹了PostgreSQL使用MySQL作為外部表的方法,感興趣的朋友跟隨小編一起看看吧
    2022-11-11
  • PostgreSQL 添加各種約束語法的操作

    PostgreSQL 添加各種約束語法的操作

    這篇文章主要介紹了PostgreSQL 添加各種約束語法的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • PostgreSQL upsert(插入更新)數(shù)據(jù)的操作詳解

    PostgreSQL upsert(插入更新)數(shù)據(jù)的操作詳解

    這篇文章主要介紹了PostgreSQL upsert(插入更新)教程詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01

最新評(píng)論

马鞍山市| 日喀则市| 平顶山市| 马公市| 长垣县| 寿光市| 衡水市| 磐石市| 五华县| 贵南县| 乡宁县| 响水县| 孝感市| 成都市| 富顺县| 内乡县| 丰都县| 博罗县| 噶尔县| 博野县| 满城县| 托里县| 石阡县| 利津县| 修武县| 盱眙县| 澄城县| 儋州市| 张家港市| 长汀县| 云和县| 恭城| 策勒县| 岳阳市| 保德县| 崇州市| 阜平县| 余干县| 赞皇县| 乐昌市| 柏乡县|