LightDB/PostgreSQL標準業務建立語句【賦予讀寫許可權和只讀許可權】

哎呀我的天吶發表於2022-05-13

在給業務建立資料庫和使用者時,應該給予一些基本的業務許可權,同時控制系統許可權賦予

下面是LightDB或者PostgreSQL基本的許可權語句

LightDB或PostgreSQL讀寫使用者許可權:

-- Users and Database creation
CREATE USER tpch WITH PASSWORD 'tpch';
CREATE DATABASE tpch;
ALTER DATABASE tpch OWNER TO tpch;
 
-- Revoke Privileges from PUBLIC
REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON DATABASE tpch FROM PUBLIC;
  
-- login on tpch
ltsql -d tpch
create schema tpch;
GRANT CONNECT ON DATABASE tpch TO tpch;
GRANT USAGE, CREATE ON SCHEMA tpch TO tpch;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA tpch TO tpch;
ALTER DEFAULT PRIVILEGES IN SCHEMA tpch GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO tpch;
GRANT USAGE ON ALL SEQUENCES IN SCHEMA tpch TO tpch;
ALTER DEFAULT PRIVILEGES IN SCHEMA tpch GRANT USAGE ON SEQUENCES TO tpch;
  
-- Alter schema owner
ALTER SCHEMA tpch OWNER TO tpch;

可以看到

tpch@tpch=> select pg_switch_wal();
ERROR:  permission denied for function pg_switch_wal
tpch@tpch=> checkpoint;
ERROR:  must be superuser to do CHECKPOINT
tpch@tpch=> 
tpch@tpch=> select pg_terminate_backend(14391);
ERROR:  must be a superuser to terminate superuser process
tpch@tpch=> 
tpch@tpch=> CREATE USER tpchqueryquery WITH PASSWORD 'tpchqueryquery';
NOTICE:  not propagating CREATE ROLE/USER commands to worker nodes
HINT:  Connect to worker nodes directly to manually create all necessary users and roles.
ERROR:  permission denied to create role
tpch@tpch=> create database haha;
ERROR:  permission denied to create database
tpch@tpch=> create schema test;
CREATE SCHEMA

可以看到相應的系統許可權和建立使用者被遮蔽掉,但是可以在自己的系統內建立schema。

LightDB或PostgreSQL讀寫使用者:

1、在tpch庫下的讀寫許可權
-- Users and Database creation
CREATE USER tpchquery WITH PASSWORD 'tpchquery';
ALTER DATABASE tpch OWNER TO tpchquery;
GRANT USAGE ON SCHEMA tpch TO tpchquery;
GRANT SELECT ON ALL TABLES IN SCHEMA tpch TO tpchquery;

如果想要規劃為全域性的只讀使用者,也可以配置中自己獨立的database

下面是按照此方式配置的只讀許可權

tpchquery@tpch=> select count(*) from tpch.orders;
 count  
--------
 664822
(1 row)
tpchquery@tpch=> delete from tpch.orders;
ERROR:  permission denied for table orders

可以看到tpchquery使用者,有tpch庫下的tpch shema的只讀許可權,但卻不能運算元據,這是符合預期的



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2893929/,如需轉載,請註明出處,否則將追究法律責任。

相關文章