安装
一. 前期参考:
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