菜单

Administrator
发布于 2024-06-14 / 25 阅读
0
0

达梦数据库基本使用

安装

一. 前期参考:

https://eco.dameng.com/document/dm/zh-cn/start/install-dm-linux-prepare.html(官方教程)

https://blog.csdn.net/weixin_40816738/article/details/129523689(麒麟V10界面安装教程)

安装后主要有两个目录,一个是实例目录,一个是程序目录。

程序目录一开始安装时指定:

实例目录执行dminit命令时指定,参考第二步命令中的path参数。

二. 达梦数据库linux命令初始化时使用命令:

./dminit path=/dm/data PAGE_SIZE=32 EXTENT_SIZE=64 CASE_SENSITIVE=n CHARSET=1 DB_NAME=DMDB INSTANCE_NAME=DBSERVER PORT_NUM=5236

这样能使varchar的长度定义支持到32000(注意:测试过33000就超了)

三. linux使用命令行安装时,工具无桌面快捷图标,运行路径为:

  • 迁移工具:安装目录/tool/dts

  • sql命令行工具:安装目录/tool/disql

  • 管理工具:安装目录/tool/manager

四. 修改默认密码

打开disql工具:./disql

输入conn,回车后,输入账号密码都为SYSDBA

执行语句进行修改:ALTER USER SYSDBA IDENTIFIED BY "HQ@luhua123";

如果实例端口不是5236,则需要指明:conn SYSDBA/SYSDBA@LOCALHOST:5237;

或者./disql SYSDBA/SYSDBA@LOCALHOST:5237 (低版本达梦用法)(如果密码有特殊符合比如@,需要使用'"。。。'"将密码包裹起来)

五. 导入导出

进入数据库程序目录/bin

导出detection模式(库):

./dexp SYSDBA/SYSDBA@127.0.0.1:5237 NOLOGFILE=y NOLOG=y FILE=/home/detection20240229.dmp SCHEMAS=detection

导入detection模式(库):

./dimp SYSDBA/SYSDBA@127.0.0.1:5237 NOLOGFILE=y NOLOG=y TABLE_EXISTS_ACTION=REPLACE FILE=/home/detection20240229.dmp SCHEMAS=detection

导出导入表,需要把SCHEMAS=detection换成TABLES=detection.admin_alarm即可。

注意:导入时,不管有无detection都可以,没有则会自动创建,但是表如果存在则不会,会提示已存在

为了方便平台程序调用dexp,dimp工具,需要使用软连接将dexp,dimp工具软连接倒系统路径:

(经测试无用,还是得在bin目录下执行才行,用软连接执行报错,原因时需要读取执行目录下的so库)

ln -s /dm8/bin/dexp /usr/bin/dexp

ln -s /dm8/bin/dimp /usr/bin/dimp

操作

重启:

service DmServiceDMSERVER restart

迁移

一. 达梦数据库的数据,需使用达梦的迁移工具,将mysql的数据迁移到dm即可,具体步骤为:

1. 打开迁移工具,新建组-新建迁移

2. 选择mysql→dm

3. 填写mysql的连接信息,此处需要注意要使用自定义URL,不然mysql连接不了

自定义URL后面加上&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true

然后指定驱动使用https://mvnrepository.com/artifact/mysql/mysql-connector-java/8.0.11

4. 填写达梦数据库的连接信息

5. 勾上保持对象大小写和不勾上使用默认数据类型映射关系

6. 点击配置类型映射关系按钮,添加将TEXT和LONGTEXT映射为CLOB类型,长度可不填

7. 往后选择所有表进行迁移即可

二. mysql转达梦:1.mysql导出,2.mysql导入,3.用达梦迁移工具mysql迁移到达梦,4.达梦dexp导出表,5.用达梦迁移工具mysql迁移支持达梦的detection到达梦,5.达梦dimp导入表,6.dexp导出库,7dimp导入项目现场

日志

一. 开启

使用disql工具打开数据库,使用下面命令开启日志(该参数为动态参数,不用重启数据库):

SP_SET_PARA_VALUE(1,'SVR_LOG',1);

或者修改实例根目录下dm.ini的SVR_LOG = 1,然后重启数据库生效。

二. 日志配置

具体的配置可以查看实例根目录下的sqllog.ini文件,如果对 sqllog.ini 进行了修改,可通过调用以下函数即时生效,无需重启数据库:

SP_REFRESH_SVR_LOG_CONFIG();

三. 测试

开启后,我们使用disql随便执行sql语句,比如insert into T1 values(3,'c');

可以在程序根目录下的log目录下找到类似dmsql_XXX_YYY_SSS.log的文件。(XXX为数据库实例名称,YYY为日期,SSS为时间)

参考:https://eco.dameng.com/community/post/20230823161948NCT4NRVF16XBN3VYFK

用户创建,密码复杂度,登录错误次数和时间限制

使用disql登录,执行下面命令创建用户

CREATE USER username IDENTIFIED BY password PASSWORD_POLICY 4;

其中CREATE USER username IDENTIFIED BY password为固定格式,username为待设置的用户名,password为待设置的密码,如果加上PASSWORD_POLICY 4,则会检查密码是否符合规则:

  • 0,无限制,但总长度不得超过48个字节

  • 1,禁止与用户名相同

  • 2,口令长度需大于等于INI参数PWD_MIN_LEN设置的值(缺省),默认9

  • 4,至少包含一个大写字母

  • 8,至少包含一个数字

  • 16,至少包含一个标点符号(英文输入法状态下,除"和空格外的所有符号)

口令策略可以组合使用,使用加法,例:使用2和4,设置为6即可,全部规则开启为31。

当你创建用户时,指定了PASSWORD_POLICY,那么你使用管理员账号(SYSDBA,普通用户无法修改)修改时,如果密码不符合规则,则会提示密码不符合复杂度规则,比如上面设置为4,那么下面的就无法修改成功。

ALTER USER username IDENTIFIED BY "123456789";

在使用SYSDBA账号,可以设置后面新用户默认的密码复杂度要求(即CREATE USER时不携带PASSWORD_POLICY参数时的默认复杂度要求,对旧用户账号无效),其中8代表至少包含一个数字,取值参考上面的规则,其他参数固定不变。

SP_SET_PARA_VALUE(1, 'PWD_POLICY',8);

如果是安全版达梦数据库,则可以修改复杂度规则:

ALTER USER username PASSWORD_POLICY 4;

登录错误次数和时间限制

alter USER testuser LIMIT FAILED_LOGIN_ATTEMPS 10 ALLOW_IP "192.168.88.*" ALLOW_DATETIME "MON" "8:30:00" TO "THURS" "17:30:00";

限制testuser用户的登录,当用户连续登录失败10次后将会锁定,限制其登录IP为192.168.88.*的IP网络,登录时间限制为周一早上8:00至周四下午17:30。

对应SYSDBA系统用户无效。

参考:

https://eco.dameng.com/community/article/20231222095743CN5J2TZJ1KTQIO4RNP

https://blog.csdn.net/robo23/article/details/122923491

数据库开启超时退出功能

在实例根目录下dm.ini中的RESOURCE_FLAG配置,如果为1,则CONNECT_IDLE_TIME对应的值为秒,如果为0,则为分钟。RESOURCE_FLAG默认为0。当 RESOURCE_FLAG 取值 1、0 时,CONNECT_IDLE_TIME缺省值分别为 86400 秒、1440 分钟(1 天)。

查询RESOURCE_FLAG的值用:select SF_GET_PARA_VALUE(1,'RESOURCE_FLAG');

针对用户:

alter user username limit CONNECT_IDLE_TIME 30;

RESOURCE_FLAG配置为1时,比如上面的username用户配置CONNECT_IDLE_TIME为30,那么使用disql登录后,如果30内无操作,再次执行sql语句则会提示如下,代表连接已被断开过了:

注意使用disql表现出来的现象不是自动退出或直接提示断开,而是disql会自动重新连接后再执行对应sql。

如果被修改的用户在修改时已经disql登录,那么得重新登录才会生效。

参考:https://eco.dameng.com/community/question/e984aef8df9126ea704137382e3956fe


评论