1、创建用户与授权流程
TBase的层级关系为:
Database => Schema => Table
1.如开发商需要一个独立的环境,开发商需要在这个独立的环境进行任何操作
创建用户设置密码:
Create role username with password ‘密码’;
设置用户可以登录数据库:
Alter role username login;
设置该用户的连接数:
Alter role 用户名 connection limit 连接数;
alter role jdsk connection limit 500;
(可选)创建独立的schema:
Create schema schema_name;
(可选)将scheme的拥有者设置为用户
Alter schema schema_name owner to username;
授权所有权限
grant all on SCHEMA wsx_schema to wangshx;
grant all on all tables in schema schema_name to user_name;
2.需要给厂商授权表的权限。
首先我们需要知道这个表是哪个库(database)下面的,哪个模式(schema)下面的。
比如:
Database:postgres
Schema:public
Table:test
需要授权的用户:test_user
Grant usage on schema public to test_user;
Grant select on public.test to test_user;
授权模式下的所有表:scheme_name(模式的名字)
grant select on all tables in schema schema_name to 用户;
授权模式给某一用户
grant usage on schema schema_name to 用户;
授权模式下的表给用户
grant select on 模式名.表名 to 用户;
grant select on 表名 to 用户;
这里select可以是你需要添加的任何权限
例如:schema:sk_XXX,用户名:sk_XXX_user
Create schema sk_XXX;
Create role sk_XXX_user with password ‘sk@XXX;
2、 获取用户下所有对象
select
nsp.nspname as SchemaName
,cls.relname as ObjectName
,rol.rolname as ObjectOwner
,case cls.relkind
when 'r' then 'TABLE'
when 'm' then 'MATERIALIZED_VIEW'
when 'i' then 'INDEX'
when 'S' then 'SEQUENCE'
when 'v' then 'VIEW'
when 'c' then 'TYPE'
else cls.relkind::text
end as ObjectType
from pg_class cls
join pg_roles rol
on rol.oid = cls.relowner
join pg_namespace nsp
on nsp.oid = cls.relnamespace
where nsp.nspname not in ('information_schema', 'pg_catalog')
and nsp.nspname not like 'pg_toast%'
and rol.rolname = 'postgres'
order by nsp.nspname, cls.relname;
效果:
3、postgresql设置开机启动
1、打开源码找到./contrib/start-scripts/linux文件
2、复制linux文件到/etc/init.d文件夹下
cp {源码路径}/contrib/start-scripts/linux /etc/init.d
3、修改文件名为postgresql
mv /etc/init.d/linux /etc/init.d/postgresql
4、修改postgresql文件配置
vim /etc/init.d/postgresql
prefix设置为你的安装路径
PGUSER设置为操作postgreSQL的用户(默认为postgres)
PGLOG是日志路径
注:如果设置的日志路径没有server.log,需要手动创建此文档
5、给postgresql分配执行权限
chmod a+x /etc/init.d/postgresql
6、添加开机启动
chkconfig –add postgresql
7、重启服务器验证设置是否成功
reboot
8、查询服务启动是否正常 systemctl status postgresql
4、postgresql导入数据库脚本文件
psql -1 -f支持在一个事务中的脚本,要么所有sql执行成功,要么所有sql执行失败,文件所有sql回滚
--编写脚本文件
[postgres@localhost ~]$ cat test_2.sql
create table test_2(id int4);
insert into test_2 values (1);
insert into test_2 values (2);
insert into test_2 values (3);
insert into test_2 values (4);
导入数据(也可以指定库,用户),加上参数q之后可以不在显示具体信息
[postgres@localhost ~]$ psql -f test_2.sql
CREATE TABLE
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
或者
[postgres@localhost ~]$ psql -q -f test_2.sql
psql -1 -f支持在一个事务中的脚本,要么所有sql执行成功,要么所有sql执行失败,文件所有sql回滚
通过-v参数传递变量
–编写test_2.sql脚本
[postgres@localhost ~]$ cat test_2.sql
select * from test_2 where id=:v_id;
通过-v传递参数
[postgres@localhost ~]$ psql -v v_id=1 -f test_2.sql
id
----
1
(1 row)
5、通过配置.psqlrc文件,定制日常维护脚本
编辑cat ~/.psqlrc文件
添加脚本
[postgres@localhost ~]$ cat ~/.psqlrc
\set active_session ' select pid,usename,datname,query,client_addr from pg_stat_activity where pid <> pg_backend_pid() and state=\'active\' order by query;'
使用方法:冒号后面接变量名
postgres=# :active_session
pid | usename | datname | query | client_addr
-----+---------+---------+-------+-------------
(0 rows)
查询等待事件脚本
[postgres@localhost ~]$ cat ~/.psqlrc
\set active_session ' select pid,usename,datname,query,client_addr from pg_stat_activity where pid <> pg_backend_pid() and state=\'active\' order by query;'
\set wait_event 'select pid,usename,datname,query,client_addr,wait_event_type,wait_event_type from pg_stat_activity where pid <> pg_backend_pid() and wait_event_type is not null order by wait_event_type;'