gbase8s支持操作系统用户以及内部用户
基本架构如下
根据上图所示,在 gbase8s中有三种用户模式
1 操作系统用户
使用useradd直接创建,授予权限即可使用
2 操作用户作为内部用户的代理用户,根据代理用户直接创建内部用户
3 操作用户作为内部用户的代理用户,根据代理用户创建模版用户,以模版用户作为基础创建内部用户
用户信息保存在 sysuser 库下系统表中以及业务库的部分系统表中
第一种用户的创建方式
直接使用操作系统命令
useradd user1
passwd user1
第二种用户的创建方式
1 先创建操作系统代理用户
useradd user_agent
passwd user_agent
2 开启数据库参数以支持内部用户
2.1 onmode -wf USERMAPPING=ADMIN
2.2 检查是否存在 /etc/gbasedbt/allowed.surrogates文件,不存在则创建 权限为root:gbasedbt
2.3 将代理用户写入此文件
echo "users:user_agent" > allowed.surrogates
echo "groups:user_agent" >> allowed.surrogates
如果有需要可以指定多个代理用户,例如 users:usera,userb,userc...
2.4 将文件用户信息加入数据库内存中
onmode -cache surrogates
2.5 创建内部用户(将user02映射到user_agent用户上)
dbaccess - -<<!
create user user02 with password '123456' properties user user_agent group (user_agebt 用户的group id) home '/home/user_agent';
!
第三种用户的创建方式
1 同第二种方式的前四步
2 创建模版用户
dbaccess - -<<!
create default user with properties user user_agent group (user_agebt 用户的group id) home '/home/user_agent';
!
3 以模版用户为基础创建内部用户
dbaccess - -<<!
create user user03 with password '123456';
!
如果不创建模版用户直接创建内部用户,并且不映射到代理用户时,服务器将返回错误
26707: 无法创建用户 (user03),因为该用户未映射到任何属性。
在同一台服务器中有多个实例则 多实例可以共享/etc/gbasedbt/allowed.surrogates文件
其中第二种与第三种方式的区别在于
第二种方式每创建一个用户都必须映射到代理用户上,而第三种以模版用户为基础,因为模版用户指定了代理用户,所以每次创建内部用户时无需指定代理用户,此时的create user的语法更有普遍性