国产化 | 记一次基于达梦创建数据库模式思考过程

开篇

首先,我们先来了解一下达梦数据库中用户与模式的概念,以及用户与模式之间的关系。

用户:主要是用来登录连接数据库,以及操作数据库对象等等。

模式:数据库中相关对象的集合。

关系:用户(USER)和模式(SCHEMA)一对多,即一个用户可以拥有多个模式,而一个模式只能属于一个用户。

实战

数据库基本操作

新建用户,我们可以通过DM管理工具去创建,如图所示:

image.png

设置用户名、密码,定义表空间、索引表空间,如图所示:

image.png

温馨提示:若是对dm执行命令不熟悉的话,我们可以优先选择上述图中DM管理工具,依次按步骤执行即可。

https://eco.dameng.com/document/dm/zh-cn/start/dm-create-tablespace.html

这里,我们介绍下,如何通过命令执行?

扫描二维码关注公众号,回复: 16004622 查看本文章
CREATE TABLESPACE YD_BASE DATAFILE 'YD_BASE.DBF' SIZE 128;

CREATE USER YD_BASE IDENTIFIED BY "YDBASE2023" DEFAULT TABLESPACE YD_BASE;

GRANT RESOURCE TO YD_BASE;

在业务项目中使用jdbc连接如下所示:

url: jdbc:dm://127.0.0.1:5236?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&useSSL=true&characterEncoding=UTF-8
username: YD_BASE
password: YDBASE2023

在微服务架构下,通常将各个业务粒度的数据存放于不同的空间内,多个数据库同时存在的场景亦比比皆是。这里需要注意的是,若是需要针对于不同的业务模块,实现按业务来做分库的效果。上述jdbc方式可以在SQL中不用指定模式.表名方式即可访问,但建议研发的童鞋使用模式名称.表名称规范起来,提高代码的可移植性。

在达梦数据库中,一个数据库用户建立之后会自动生成一个默认的模式,默认模式与用户名是相同的。

查询用户的信息:

SQL> select * from dba_users where username = 'SYSDBA';

image.png

查询用户拥有的模式

SQL> select a.name as username, b.name as schenma from sysobjects a inner join sysobjects b on a.id = b.pid where b.subtype$ is null order by username desc;

image.png

查询用户所属的角色

SQL> select * from dba_role_privs where grantee='SYSDBA';

image.png

查询角色权限信息:

SQL> select * from dba_sys_privs where grantee='PUBLIC';

image.png

通过上述命令,我们就能很清晰地看到用户的信息,以及用户拥有的模式,用户所属角色,以及角色权限范围。当出现没有查询xxx表的权限异常信息,我们也一样能迎刃而解。

示例:当前登录用户没有查询当前表的权限时,我们可以回到SYSDBA登录,重新授予相关权限即可。

grant select on table(表) to user(用户);

猜你喜欢

转载自blog.csdn.net/yxd179/article/details/131959275