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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!