kingbase-用户管理

https://www.hyouit.com?aff=418

1、预设用户

数据库初始化完成后,会创建三个用户。

  • 数据库管理员,用户名在初始化过程中可以自定义设置,默认是system;

  • 安全管理员,用户名是 sso;

  • 审计管理员,用户名是 sao

查看数据库中所有用户信息:

kingbase=> select * from sys_user;
 usename  | usesysid | usecreatedb | usesuper | userepl | usebypassrls |  passwd  | valuntil | useconfig 
----------+----------+-------------+----------+---------+--------------+----------+----------+-----------
 system   |       10 | t           | t        | t       | t            | ******** |          | 
 sao      |        9 | f           | f        | f       | f            | ******** |          | 
 sso      |        8 | f           | f        | f       | f            | ******** |          | 
(3 行记录)

2、用户管理

2.1 创建用户

需要有 CREATEROLE 系统权限的用户可以创建用户帐户。

创建用户,新建用户没有设置默认角色时,其默认角色为空。

kingbase=> create user kingbase with password 'kingbase';
2.2 修改用户属性
--授予权限
alter user kingbase CREATEROLE;
--修改用户密码
alter user kingbase password 'kingbase123';
2.3 删除用户

需要有 CREATEROLE 系统权限的用户可以删除用户账号。如果要删除的用户已经连接在数据库中,是删除不了的。

查询用户连接

kingbase=> select datname,pid,usename,client_addr,query from sys_stat_activity where usename='kingbase';
 datname  |   pid   | usename  | client_addr |                                             query                                             
----------+---------+----------+-------------+-----------------------------------------------------------------------------------------------
 kingbase | 1088702 | kingbase |             | select * from sys_user;
 kingbase | 1094228 | kingbase |             | select datname,pid,usename,client_addr,query from sys_stat_activity where usename='kingbase';

结束指定会话

kingbase=> call sys_terminate_backend('1088702');

删除用户

kingbase=> drop user kingbase;

3、口令复杂度管理

通过插件的方式来进行口令的复杂度管理。当数据库的实用场景需要进行口令
的复杂度管理时,加载插件即可。而不需要该功能时,卸载插件即可。

加载插件,通过kingbase.conf 文件中 shared_preload_libraries 参数设置

设置参数 shared_preload_libraries = 'passwordcheck',重启数据库。

  • 切换 system 用户,安装扩展插件
-- 切换用户 system
kingbase=> \c - system
-- 安装扩展插件
kingbase=# create extension passwordcheck;
-- 查看插件开启状态,此时为 off。
kingbase=# show passwordcheck.enable;
  • 切换 sso 用户,开启插件
-- 切换用户 sso 安全管理员
kingbase=# \c - sso
-- 开启插件
kingbase=> alter system set passwordcheck.enable=on;
-- 重新加载配置
kingbase=> select sys_reload_conf();
 sys_reload_conf 
-----------------
 t
-- 查看开启状态,此时为 on。
kingbase=> show passwordcheck.enable;
 passwordcheck.enable 
----------------------
 on

passwordcheck.password_length 口令的最小长度,取值范围为 [8,63],缺省为 8。

passwordcheck.password_condition_letter 口令至少包含几个字母,取值范围为 [2,61],缺省为 2。

passwordcheck.password_condition_digit 口令至少包含几个数字,取值范围为 [2,61],缺省为 2。

passwordcheck.password_condition_punct 口令至少包含几个特殊字符,取值范围为 [0,59],缺省为 0。其中特
殊符号为除空白符、英文字母、单引号和数字外的所有可见字符。

设置方法:

例如:设置口令长度

-- 切换到管理员 system 用户下
kingbase=> \c - system
-- 设置参数值
kingbase=# set passwordcheck.password_length=11;

kingbase=# show passwordcheck.password_length;
 passwordcheck.password_length 
-------------------------------
 11

以上设置重启数据库失效,要是永久生效,在 kingbase.conf 中添加 passwordcheck.password_length = 10 参数。

4、口令有效设置

需要加载插件,通过kingbase.conf 文件中 shared_preload_libraries 参数设置

设置参数 shared_preload_libraries = 'identity_pwdexp',重启数据库。

identity_pwdexp.password_change_interva 密码有效期,默认30,单位是天。

identity_pwdexp.max_password_change_interval 最大密码有效期,默认30,单位是天。

设置方式

kingbase=> \c - system

kingbase=# create extension identity_pwdexp;

kingbase=> show identity_pwdexp.password_change_interval;
 identity_pwdexp.password_change_interval 
------------------------------------------
 30


kingbase=> \c - sso

kingbase=> alter system set identity_pwdexp.password_change_interval = 5;

kingbase=> select sys_reload_conf();

kingbase=> show identity_pwdexp.password_change_interval;
 identity_pwdexp.password_change_interval 
------------------------------------------
 5

创建用户时,通过 valid until 选项指定有效日期。

5、用户异常登录锁定

需要加载插件,修改 kingbase.conf 文件中 shared_preload_libraries 参数。

设置参数 shared_preload_libraries = 'sys_audlog',重启数据库。

sys_audlog.max_error_user_connect_times 用户登录失败次数
的最大值界限,缺省为 2147483647

sys_audlog.error_user_connect_times 允许用户连续登录
失败的最大次数,默认是 0。

sys_audlog.error_user_connect_interval 用户被锁定时间,默认是0,单位是分钟。

设置方式

kingbase=> \c - system
您现在已经连接到数据库 "kingbase",用户 "system".
kingbase=# 
kingbase=# 
kingbase=# create extension sys_audlog;
CREATE EXTENSION
kingbase=# \c - sso
您现在已经连接到数据库 "kingbase",用户 "sso".
kingbase=> ALTER SYSTEM SET sys_audlog.max_error_user_connect_times = 6;
ALTER SYSTEM
kingbase=> CALL sys_reload_conf();
 sys_reload_conf 
-----------------
 t
(1 行记录)

kingbase=> ALTER SYSTEM SET sys_audlog.error_user_connect_times = 3;
ALTER SYSTEM
kingbase=> CALL sys_reload_conf();
 sys_reload_conf 
-----------------
 t
(1 行记录)

kingbase=> ALTER SYSTEM SET sys_audlog.error_user_connect_interval = 60;
ALTER SYSTEM
kingbase=> ALTER SYSTEM SET sys_audlog.error_user_connect_interval = 10;
ALTER SYSTEM
kingbase=> CALL sys_reload_conf();
 sys_reload_conf 
-----------------
 t
(1 行记录)

6、口令历史管理

需要加载插件,通过kingbase.conf 文件中 shared_preload_libraries 参数设置

设置参数 shared_preload_libraries = 'passwordhistory',重启数据库。

passwordhistory.enable 口令历史功能开关,默认为关闭 false 状态。

passwordhistory.password_time 口令历史天数,默认为 0 。

设置方式:

kingbase=> \c - system

kingbase=# create extension passwordhistory;

kingbase=# show passwordhistory.enable;
 passwordhistory.enable 
------------------------
 off


kingbase=# alter system set passwordhistory.enable=on;

kingbase=# select sys_reload_conf();

kingbase=# show passwordhistory.enable;
 passwordhistory.enable 
------------------------
 on

kingbase=> show passwordhistory.password_time; 
 passwordhistory.password_time 
-------------------------------
 0

kingbase=# alter system set passwordhistory.password_time=1;

kingbase=# select sys_reload_conf();

kingbase=# show passwordhistory.password_time;
 passwordhistory.password_time 
-------------------------------
 1

7、空闲连接自动断开

直接 client_idle_timeout 参数控制,单位是秒,默认是0,为关闭状态

设置方式

kingbase=# \c - kingbase
# 仅对当前会话有效,10秒空闲自动断开该连接
kingbase=> set client_idle_timeout=10;

kingbase=> show client_idle_timeout;
 client_idle_timeout 
---------------------
 10s

# 切换到管理员用户操作
kingbase=> \c - system
# 全局设置,对所有连接都生效
kingbase=# alter system set client_idle_timeout=10;

kingbase=# select sys_reload_conf();

kingbase=# show client_idle_timeout;
 client_idle_timeout 
---------------------
 10s
posted @   原来是你~~~  阅读(2518)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示