很多人安装完瀚高数据库后,就直接使用默认数据库和管理员了,这样是不合理的,不建议这样做。那么怎么使用才能算合适?
1 创建一个用户:
瀚高数据库给用户加上了密码有效期(永久为 infinity),命令如下:
create user 用户名 password '密码' valid until 'infinity';
如果密码有失效情况,需要修改密码,最好加上有效期,命令如下:
alter user 用户名 password '新密码' valid until 'infinity';
注意:如果是安全版需要使用syssso用户去修改普通用户的密码和有效期。
如果是数据库的非owner用户,需要将数据库的权限授予该用户:
grant all on database 已有数据库 to 新建的那个用户;
用户锁定的处理方式:
当用户使用md5、sm3 或scram-sha-256 认证方式从客户端登陆时,连续输错密码次数过多将锁定用户,默认允许密码连续输错的次数为5 次,可配置参数pwdlock改变次数。
已经被锁定的用户可以被syssso 用户解锁,解锁的方法是:
select user_unlock('USERNAME');
管理员用户syssso 自己是不会被锁定的。密码输错多次用户被锁定后,默认24 小时后自动解锁,用户可配置参数pwdlocktime自行配置锁定时间。
2 创建一个数据库:
创建一个用户所有的数据库,命令如下:
create database 数据库名 with owner=用户名 encoding=utf8 connection limit=-1;
字符集encoding要选对,默认与操作系统保持一致。“connection limit -1”表示无连接限制,也不是必须的,使用默认值无连接限制,后期再修改即可,例如限制1000个连接“connection limit 1000”。
如果有会话,则终止:
SELECT pg_terminate_backend(pid),pid FROM pg_stat_activity
WHERE datname='cloudhealth' AND pid<>pg_backend_pid();
3 创建模式:
3.1 同名模式:
一般来说,我们要创建与用户名同名的模式,这样可以不用维护搜索路径,命令如下:
create schema 与用户名同名模式名 authorization 用户名;
3.2 不同名模式:
创建模式:
create schema 模式名 authorization 用户名;
修改搜索路径:
alter user 用户名 set search_path = 模式名,"$user",public;
注意:以上创建模式、修改搜索路径操作可以使用普通用户进行操作。
3.2 模式授权:
有时候,我们创建的模式会授权给其他非所有者用户使用,命令如下:
grant usage on schema 模式名 TO 其他用户名;
4 修改对象所有者
很简单,基本上语法都是:
alter 对象类别 对象名 owner to 新所有者用户名;
对象类别可以是:database、schema、table、view等
4.1 修改多个表(table)所有者(owner):
select 'alter table '|| tablename ||' owner to 新所有者用户名;' from pg_tables where tableowner='原所有者用户名'and schemaname='表所在模式';
将结果复制批量执行即可变更所有相关表的所有者。
4.2 修改多个视图(view)所有者(owner):
select 'alter view '|| viewname ||' owner to 新所有者用户名;' from pg_views where viewowner='原所有者用户名';
将结果复制批量执行即可变更所有相关视图的所有者。
4.3 将多个表(table)的select权限赋给其他用户
select 'grant select on table 模式.'|| tablename ||' to 只读用户;' from pg_tables where tableowner='所有者';
4.4 修改表的模式
select 'alter table '|| tablename ||' set schema 新模式名;' from pg_tables where schemaname = '原模式名' and tableowner = '用户';