达梦数据库中创建数据库和表

注:达梦中的"数据库"实质是用户模式(Schema)

       每个用户拥有独立的对象命名空间

       创建一个新用户(相当于创建一个新数据库)

达梦数据库安装好后

查看达梦数据库是否正在运行

ps -ef | grep dmserver

说明 达梦数据库已经正在运行

 进入容器

docker exec -it dm8 /bin/bash

进入容器后,进入此目录 下

cd /opt/dmdbms/bin

执行连接数据库命令后出现  event  not  found 的错误,是因为 密码中包含特殊字符 !   需要 使用单引号包裹整个连接字符串

连接数据库命令:

用户名 SYSDBA    密码  Dameng123!

./disql 'SYSDBA/Dameng123!@localhost:5236'

  连接成功后的操作验证

# 查看数据库版本
SELECT * FROM v$version;

#  查看当前用户
SELECT USER;

#  退出
EXIT;

通过 SQL 创建新数据库(用户模式)

创建用户(相当于创建新数据库)
CREATE USER "CALLCENTER_DB_USER" IDENTIFIED BY "CallCenterDB123!"

返回代码含义
0 或 1:通常表示成功(不同版本可能有差异)
2:明确表示 CREATE USER 操作成功
负数:表示错误(如 -2501 表示权限不足)

创建用户(相当于创建新的数据库)完整示例 

CREATE USER "callcenter2_db" IDENTIFIED BY "CallCenterDB123!";

用户名  callcenter2_db  密码  CallCenterDB123!     

image

 SQL结语 需要加  ; 号  , 回车后 表求执行这条语句

用callcenter2_db 用户登录   (  后面又把密码改为 Dameng123!  )

./disql 'callcenter2_db/CallCenterDB123!@localhost:5236'

image

 用DBeaver连接

image

 连接上后 在 callcenter2_db 用户名(数据库)下没有数据表

image

 授予创建表的权限

 直接授予 CREATE TABLE 系统权限(权限控制更精细) 这种方式只授予用户创建表的权限,遵循了最小权限原则,更安全

GRANT CREATE TABLE TO callcenter2_db;

授予 RESOURCE 角色(更常见,权限包更大)

RESOURCE 角色是一个预定义角色,它包含了 CREATE TABLE、CREATE VIEW、CREATE INDEX 等一系列允许用户创建数据库对象的权限。

如果你的用户除了建表还需要创建其他对象,这是一种更快捷的授权方式。

GRANT RESOURCE TO callcenter2_db;

注:需要用 SYSDBA 用户登陆后 执行赋权限语句

image

 创建数据表

注:要在 callcenter2_db 用户下 执行建表语句

image

建表语句示例

CREATE TABLE cti_cdr (
  id varchar(50) NOT NULL DEFAULT '',
  event varchar(20) DEFAULT '',
  callid varchar(50) DEFAULT '',
  timestart varchar(20) DEFAULT NULL,
  callfrom varchar(20) DEFAULT '',
  callto varchar(20) DEFAULT '',
  callduraction varchar(20) DEFAULT '',
  talkduraction varchar(20) DEFAULT '',
  srctrunkname varchar(20) DEFAULT '',
  dsttrcunkname varchar(20) DEFAULT '',
  pincode varchar(20) DEFAULT '',
  status varchar(20) DEFAULT '',
  type varchar(20) DEFAULT '',
  recording varchar(200) DEFAULT '',
  didnumber varchar(20) DEFAULT '',
  agentringtime varchar(20) DEFAULT '',
  sn varchar(20) DEFAULT '',
  callpath varchar(20) DEFAULT '',
  agentname varchar(20) DEFAULT '',
  chid1 varchar(20) DEFAULT '',
  chid2 varchar(20) DEFAULT '',
  timestop varchar(20) DEFAULT '',
  timelen varchar(20) DEFAULT '',
  callresult varchar(50) DEFAULT '',
  dtmf varchar(50) DEFAULT NULL,
  PRIMARY KEY (id)
);

在表中右键刷新下就能看见新创建的表了

image

 注:这个表在callcenter2_db用户下创建的,其它用户是看不到的 ( callcenter2_db相当于一个数据库 )

INSERT语句示例

INSERT INTO cti_cdr VALUES ('0b05368f-0989-4438-9', 'NewCdr', '1648024420.61', '2022-03-23 16:33:40', '1008', '1007', '4', '2', '', '', '', 'ANSWERED', 'Internal', '20220323163342-1648024420.61-1008-1007-Internal.wav', '', '0', '369264842620', '', '', '', '', null, null, null, null);
INSERT INTO cti_cdr VALUES ('9bb61ced-b1bb-4f25-a', 'NewCdr', '1648090684.82', '2022-03-24 10:58:04', '1008', '1007', '11', '9', '', '', '', 'ANSWERED', 'Internal', '20220324105806-1648090684.82-1008-1007-Internal.wav', '', '0', '369264842620', '', '', '', '', null, null, null, null);
INSERT INTO cti_cdr VALUES ('d9c6b508-691c-4cb6-9', 'NewCdr', '1648090787.85', '2022-03-24 11:00:31', '13941128270', '1005', '338', '319', 'MNWG', '', '', 'ANSWERED', 'Inbound', '20220324110031-1648090787.85-13941128270-1005-Inbound.wav', '6100', '19', '369264842620', '6700', '', '', '', null, null, null, null);
INSERT INTO cti_cdr VALUES ('1770b242-b043-4cbf-a', 'NewCdr', '1648091443.90', '2022-03-24 11:10:43', '1008', '1007', '4', '2', '', '', '', 'ANSWERED', 'Internal', '20220324111045-1648091443.90-1008-1007-Internal.wav', '', '0', '369264842620', '', '', '', '', null, null, null, null);

如果想修改 callcenter2_db 的密码

第一步先用 SYSDBA 用户登陆

docker exec -it dm8 /bin/bash     #进入容器
cd /opt/dmdbms/bin                #进入目录
./disql 'SYSDBA/Dameng123!@localhost:5236'    #连接数据库 

image

 修改 callcenter2_db 用户的密码

ALTER USER callcenter2_db IDENTIFIED BY "Dameng123!";

image

 退出当前用户

exit   #退出sql

改用 callcenter2_db 用户连接数据库

./disql 'callcenter2_db/Dameng123!@localhost:5236'    #连接数据库 

image

 

posted @ 2025-07-14 14:45  海乐学习  阅读(304)  评论(0)    收藏  举报