达梦数据库一般安装在dmdba用户下,官方文档也是这么推荐的。
那么有没有办法不创建dmdba用户,直接安装在root下呢?
希望我不要把大家带偏,只是本着研究学习的心态,做个实验。
结果是完全可以的,下面是详细的步骤。
软件环境版本:
Kylin-Server-10-SP2-x86-Release-Build09-20210524.iso
dm8_20221031_x86_kylin10_64.iso
配置环境变量,因为达梦用root安装,默认会放在/opt/dmdbms,所以下面我们就用这个了
cd
echo '
export DM_HOME=/opt/dmdbms
export PATH=$DM_HOME/bin:$DM_HOME/tool:$PATH
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH
' >>.bash_profile
配置ulimit,麒麟的nproc默认已经很高了,这里只配置一个nofile和stack
myuser=root
cat >>/etc/security/limits.conf <<EOF
$myuser soft nofile 65536
$myuser hard nofile 65536
$myuser soft stack 10240
EOF
su -
安装达梦软件包
# mount /soft/dm8_20221031_x86_kylin10_64.iso /mnt
# /mnt/DMInstall.bin -i
请选择安装语言(C/c:中文 E/e:英文) [C/c]:
解压安装程序.........
欢迎使用达梦数据库安装程序
是否输入Key文件路径? (Y/y:是 N/n:否) [Y/y]:n
是否设置时区? (Y/y:是 N/n:否) [Y/y]:n
安装类型:
1 典型安装
2 服务器
3 客户端
4 自定义
请选择安装类型的数字序号 [1 典型安装]:
所需空间: 1829M
请选择安装目录 [/opt/dmdbms]:
可用空间: 55G
是否确认安装路径(/opt/dmdbms)? (Y/y:是 N/n:否) [Y/y]:
安装前小结
安装位置: /opt/dmdbms
所需空间: 1829M
可用空间: 55G
版本信息:
有效日期:
安装类型: 典型安装
是否确认安装? (Y/y:是 N/n:否):y
2023-03-09 20:51:21
[INFO] 安装达梦数据库...
2023-03-09 20:51:21
[INFO] 安装 基础 模块...
2023-03-09 20:51:24
[INFO] 安装 服务器 模块...
2023-03-09 20:51:24
[INFO] 安装 客户端 模块...
2023-03-09 20:51:25
[INFO] 安装 驱动 模块...
2023-03-09 20:51:25
[INFO] 安装 手册 模块...
2023-03-09 20:51:25
[INFO] 安装 服务 模块...
2023-03-09 20:51:27
[INFO] 移动日志文件。
2023-03-09 20:51:28
[INFO] 创建dmdba系统管理员完成。
2023-03-09 20:51:29
[INFO] 正在启动DmAPService服务...
2023-03-09 20:51:29
[INFO] 启动DmAPService服务成功。
2023-03-09 20:51:29
[INFO] 安装达梦数据库完成。
安装结束
安装过程中达梦会默认创建一个dmdba用户,默认注册一个dmap服务,
接下来我们把这个dmdba用户删除,把dmap服务调整成用root启动。
# tail -n 1 /etc/passwd
dmdba:x:1001:1001::/home/dmdba:/bin/sh
# systemctl list-unit-files|grep Dm
DmAPService.service enabled
建一个数据库
# dminit PATH=/opt/dmdbms/data DB_NAME=DM1 INSTANCE_NAME=DM1INST PORT_NUM=5236 CHARSET=1
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2023-10-31
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /opt/dmdbms/data/DM1/DM101.log
log file path: /opt/dmdbms/data/DM1/DM102.log
write to dir [/opt/dmdbms/data/DM1].
create dm database success. 2023-03-09 20:54:12
注册服务到linux系统,以便机器重启的时候,能够自动启动数据库服务。
# /opt/dmdbms/script/root/dm_service_installer.sh -t dmserver -dm_ini /opt/dmdbms/data/DM1/dm.ini -p DM1INST
此时数据库是无法用systemctl启动的,一些相关报错如下:
# systemctl start DmServiceDM1INST
Job for DmServiceDM1INST.service failed because the control process exited with error code.
See "systemctl status DmServiceDM1INST.service" and "journalctl -xe" for details.
# systemctl status DmServiceDM1INST
● DmServiceDM1INST.service - DM Instance Service(DmServiceDM1INST).
Loaded: loaded (/usr/lib/systemd/system/DmServiceDM1INST.service; enabled; vendor preset: disabled)
Active: failed (Result: exit-code) since Fri 2023-03-10 01:52:01 CST; 20s ago
Process: 11753 ExecStart=/opt/dmdbms/bin/DmServiceDM1INST start (code=exited, status=1/FAILURE)
3月 10 01:51:45 kl1 systemd[1]: Starting DM Instance Service(DmServiceDM1INST)....
3月 10 01:52:01 kl1 systemd[1]: DmServiceDM1INST.service: Control process exited, code=exited, status=1/FAILURE
3月 10 01:52:01 kl1 systemd[1]: DmServiceDM1INST.service: Failed with result 'exit-code'.
3月 10 01:52:01 kl1 systemd[1]: Failed to start DM Instance Service(DmServiceDM1INST)..
下面我们修改一些配置,使它正常启动,而且在root用户下启动。
改成root可以直接启动的
修改$DM_HOME文件夹权限
# chown -R root:root /opt/dmdbms
修改DmAPService在root下启动,把dmdba改成root
# systemctl stop DmAPService
# cat /usr/lib/systemd/system/DmAPService.service
[Unit]
Description=DM Assistant Plug-In Service
After=network.target remote-fs.target
[Service]
Type=forking
PIDFile=/opt/dmdbms/bin/pids/DmAPService.pid
ExecStart=/opt/dmdbms/bin/DmAPService start
ExecStop=/opt/dmdbms/bin/DmAPService stop
PrivateTmp=true
User=dmdba
TasksMax=infinity
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=100000
[Install]
WantedBy=multi-user.target
# sed -i 's/dmdba/root/' /usr/lib/systemd/system/DmAPService.service
修改数据库服务在root下启动,把dmdba改成root
# cat /usr/lib/systemd/system/DmServiceDM1INST.service
[Unit]
Description=DM Instance Service(DmServiceDM1INST).
After=network.target remote-fs.target
[Service]
Type=forking
PIDFile=/opt/dmdbms/bin/pids/DmServiceDM1INST.pid
ExecStart=/opt/dmdbms/bin/DmServiceDM1INST start
ExecStop=/opt/dmdbms/bin/DmServiceDM1INST stop
PrivateTmp=true
User=dmdba
TasksMax=infinity
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=100000
[Install]
WantedBy=multi-user.target
# sed -i 's/dmdba/root/' /usr/lib/systemd/system/DmServiceDM1INST.service
重新加载配置,启动达梦服务
# systemctl daemon-reload
# systemctl start DmAPService
# systemctl start DmServiceDM1INST
删除dmdba用户和dinstall组
# userdel -r dmdba
# groupdel dinstall
验证
# reboot
检查数据库实例、dmap服务都是自动启动的,达梦的工具disql,manager,monitor,console,dbca.sh,dmservice.sh也都是正常使用的。