原文链接:https://www.gbase.cn/community/post/4168
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
继上一篇文章介绍了如何在南大通用GBase 8s数据库中创建操作系统用户之后,本文将带您了解如何在GBase 8s中创建非操作系统数据库用户。非操作系统数据库用户指数据库内部用户,仅仅需要一个操作系统用户跟数据库用户做映射,这种类型的用户创建方式为用户提供了更高的灵活性,及更多的应用场景。当然与上文相同,主备集群部署的环境,主备节点都要做相应操作。
一、创建非操作系统数据库用户
数据库映射用户;
1、首先创一个操作系统用户。
useradd gbasetest
passwd gbasetest /gbasetest
2、修改allowed.surrogates配置文件,该配置文件在数据库软件安装目录etc下,修改将std文件拷贝至/etc/gbasedbt目录下,需要root用户属组,需要600权限;修改最后(user: gbasetest group: gbasetest)。
3、使用gbasedbt用户执行
onmode -cache surrogates
(注意看日志,是否成功)
正常提示日志为:
Entries in the surrogates file /etc/gbasedbt/allowed.surrogates are loaded into surrogate cache.
4、登陆数据库系统库,执行dbaccess sysuser,可以使用两种方式,一是建立默认映射应用,另一种是每次添加用户的时候指定映射用户,推荐直接设置默认映射用户。
A)CREATE DEFAULT USER WITH PROPERTIES USER 'gbasetest';
之后直接dbaccess sysuser
执行
CREATE USER zwq1 WITH PASSWORD "GBase001";
创建用户即可。
B)不创建默认组,
执行
create user zwqtest1 with password "GBase001" properties user "gbasetest";
直接创建成功用户;
5、执行grant resource to gbasetest01;进行授权;
之后可以使用gbasetest01登录数据库,并连接对应数据库,具有相应权限;
重新设置用户密码方法:
执行sql:set user password old "XXXXXXXX" new "XXXXXXXXX"-----这种方法是想要修改哪个用户的密码用哪个用户登陆执行即可
执行sql:alter user xxzxnbgl modify password '1qaz@WSXqwe'-----这种方法是使用gbasedbt用户登陆,修改任意用户密码
二、给用户赋SELECT(只读)权限
1、进入数据库,给用户赋connect权限
(dbaccess 数据库名 -)
GRANT CONNECT TO user1;
2、在数据库中创存储过程
注:需要回收权限的表的owner(即创建该表的用户)是哪个,就用该用户创建并执行下面的存储过程,如果一个数据库中存在多个用户创建的表,则需要分别用每个用户创建一次以下存储过程并执行(可将存储过程名,如chm1,,chm2...),查询每个表的owner可用
select tabname,owner from systables where tabid>99
查询获得。
存储过程内容:
drop procedure if exists chm;
create procedure chm(username varchar(255))
returning varchar;
define tname varchar(255);
define towner varchar(255);
define gsql varchar(255);
define rmsql varchar(255);
foreach cur for select tabname ,owner into tname, towner from systables where tabid > 99 and tabtype<>'s'
let rmsql ="REVOKE ALL ON " || tname || " FROM PUBLIC";
execute immediate rmsql;
let gsql = "grant select on " || tname || " to " || username || " as " || towner;
execute immediate gsql;
end foreach;
end procedure;
3、执行存储过程为每张表赋select权限。
execute procedure chm('user1');
通过本文的介绍,我们了解到在GBase 8s数据库中创建非操作系统数据库用户的过程。这种方法提供了一种强大的方式来管理数据库访问权限,确保了数据的安全性和合规性。结合上一篇文章中介绍的操作系统用户创建方法,可以满足不同场景下的数据库用户管理需求。我们希望这两篇文章能够帮助数据库管理员更有效地进行用户管理工作,确保企业数据资产的安全。
原文链接:https://www.gbase.cn/community/post/4168
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。