南大通用GBase 8s数据库用户管理:新建与授权全攻略(下)

原文链接:www.gbase.cn/community/p...

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

继上一篇文章介绍了如何在南大通用GBase 8s数据库中创建操作系统用户之后,本文将带您了解如何在GBase 8s中创建非操作系统数据库用户。非操作系统数据库用户指数据库内部用户,仅仅需要一个操作系统用户跟数据库用户做映射,这种类型的用户创建方式为用户提供了更高的灵活性,及更多的应用场景。当然与上文相同,主备集群部署的环境,主备节点都要做相应操作。

一、创建非操作系统数据库用户

数据库映射用户;

1、首先创一个操作系统用户。

bash 复制代码
useradd gbasetest
passwd gbasetest /gbasetest

2、修改allowed.surrogates配置文件,该配置文件在数据库软件安装目录etc下,修改将std文件拷贝至/etc/gbasedbt目录下,需要root用户属组,需要600权限;修改最后(user: gbasetest group: gbasetest)。

3、使用gbasedbt用户执行

复制代码
onmode -cache surrogates

(注意看日志,是否成功)

正常提示日志为:

sql 复制代码
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

执行

sql 复制代码
CREATE USER zwq1 WITH PASSWORD "GBase001"; 

创建用户即可。

B)不创建默认组,

执行

sql 复制代码
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 数据库名 -)

sql 复制代码
GRANT CONNECT TO user1;

2、在数据库中创存储过程

注:需要回收权限的表的owner(即创建该表的用户)是哪个,就用该用户创建并执行下面的存储过程,如果一个数据库中存在多个用户创建的表,则需要分别用每个用户创建一次以下存储过程并执行(可将存储过程名,如chm1,,chm2...),查询每个表的owner可用

csharp 复制代码
select tabname,owner from systables where tabid>99 

查询获得。

存储过程内容:

sql 复制代码
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权限。

sql 复制代码
execute procedure chm('user1');

通过本文的介绍,我们了解到在GBase 8s数据库中创建非操作系统数据库用户的过程。这种方法提供了一种强大的方式来管理数据库访问权限,确保了数据的安全性和合规性。结合上一篇文章中介绍的操作系统用户创建方法,可以满足不同场景下的数据库用户���理需求。我们希望这两篇文章能够帮助数据库管理员更有效地进行用户管理工作,确保企业数据资产的安全。

原文链接:www.gbase.cn/community/p...

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

相关推荐
廿一夏1 天前
MySql存储引擎与索引
数据库·sql·mysql
lzhdim1 天前
SQL 入门 15:SQL 事务:从 ACID 到四种常见的并发问题
数据库·sql
瀚高PG实验室1 天前
瀚高企业版V9.1.1在pg_restore还原备份文件时提示extract函数语法问题
数据库·瀚高数据库
TDengine (老段)1 天前
TDengine Tag 设计哲学与 Schema 变更机制
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
YOU OU1 天前
Spring IoC&DI
java·数据库·spring
Muscleheng1 天前
Navicat连接postgresql时出现‘datlastsysoid does not exist‘报错
数据库·postgresql
罗超驿1 天前
18.事务的隔离性和隔离级别:MySQL面试高频考点全解析
数据库·mysql·面试
jran-1 天前
Redis 命令
数据库·redis·缓存
小江的记录本1 天前
【Java基础】Java 8-21新特性:JDK21 LTS:虚拟线程、模式匹配switch、结构化并发、序列集合(附《思维导图》+《面试高频考点清单》)
java·数据库·python·mysql·spring·面试·maven
June`1 天前
多线程redis下如何解决aof重写和rdb持久化的数据一致性问题
数据库·redis·缓存