目录
一、开门见山
首先我们先说说达梦和mysql的对应关系(因为mysql用的人比较多),表空间其实就相当于mysql的库概念,达梦是分配表空间,而mysql是新建数据库。mysql是在数据库里建表插入数据,达梦是在表空间里建表插入数据。
用户的模式(SCHEMA)指的是用户账号拥有的对象集,在概念上可将其看作是包含表、 视图、索引和权限定义的对象。在 DM 中,一个用户可以创建多个模式,一个模式中的对象 (表、视图等)可以被多个用户使用。
每个用户有一个默认的同名的模式,访问自己模式下的表、视图等,不需要加模式名,访问其他模式下的对象需要拥有访问权限,访问时还需加上模式名。
做一个项目正常的流程是怎样的呢?首先创建一个表空间(库),比如叫test,然后创建一个用户,设置用户名和密码,再授予权限,权限是可以对test表空间进行操作,再将用户和表空间绑定,这样就可以了。后续再登录创建的用户,在模式下创建表一类的操作。
二、创建表空间
2.1 新建表空间
使用 SYSDBA 用户登录 DM 管理工具。右键表空间模块,点击【新建表空间】,如下图所示:
2.2 定义表空间名
如下图创建表空间名为 TEST,指定数据文件为 TEST.DBF:
添加数据文件时需要新建一个数据文件,直接在“文件路径”项中输入对应的数据文件名即可。
点击确定成功创建TEST表空间。
三、创建用户
3.1 创建用户关联表空间
3.1.1 新建用户
使用 SYSDBA 用户登录 DM 管理工具。
展开用户模块,右键管理用户,点击【新建用户】,如下图所示:
3.1.2 用户名、密码
设置用户名、密码,如下图所示:
3.1.3 定义表空间、索引表空间
表空间、索引表空间配置完成后,点击【确定】即可创建完成用户关联表空间,如下图所示:
3.2 授予权限
3.2.1 授予用户 DBA 和 RESOURCE 权限
3.3 创建表
这里我们为了举例,创建一张test表。
3.4 用户与模式的关系
每个用户有一个默认的同名的模式,访问自己模式下的表、视图等,不需要加模式名,访问其他模式下的对象需要拥有访问权限,访问时还需加上模式名。
我们发现,当我们创建完TEST用户时,刷新模式,自动出现一个同名的TEST模式。
3.4.1 查询当前用户模式下的表,无需加对象名
以 TEST 用户为例,当查询自己模式下得表时,可以直接进行查询,无需加对象名:
select * from test
3.4.2 查询其他用户模式下的表,需要加对象名
以 TEST 用户为例,查询 DBTEST 用户模式下的表 TABLE_TEST,如不加对象名,则查询会报错“无效的表名或者视图名[TABLE_TEST]”,如下图所示:
select * from TABLE_TEST;
加上对象名后,没有授予查询权限,则查询会报错“没有对象[DBTEST.TABLE_TEST]的查询权限”,如下图所示:
select * from DBTEST.TABLE_TEST;
这时需要授予 TEST 用户查询表 TABLE_TEST 的权限,如下图所示:
--使用 root 用户授予 TEST 用户查询表 TABLE_TEST 的权限
grant SELECT on "DBTEST"."TABLE_TEST" to "TEST";
--使用 TEST 用户登录数据库查询表 TABLE_TEST
select * from DBTEST.TABLE_TEST;