麒麟系统kylinServerV10中在docker中安装达梦数据库
<p><strong>一、下载docker镜像安装包</strong></p><div class="cnblogs_code">
<pre>http://download.dameng.com/eco/dm8/dm8_20250206_x86_rh6_rq_single.tar</pre>
</div>
<p><strong>二、导入达梦Docker镜像</strong></p>
<p>将下载好的tar文件上传至 /root/dm8/tar_file/ (自己建的目录 )</p>
<p>执行</p>
<div class="cnblogs_code">
<pre>docker load -i /root/dm8/tar_file/dm8_20250206_x86_rh6_rq_single.tar</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250708143820830-808703002.png" alt="" width="682" height="418" loading="lazy"></p>
<p> 检查镜像是否导入成功</p>
<div class="cnblogs_code">
<pre>docker images</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250708144031914-3199339.png" alt="" loading="lazy"></p>
<p><strong>三、启动达梦数据库容器</strong></p>
<div class="cnblogs_code">
<pre>docker run -d --name dm8 -p 5236:5236 -v /opt/dmdbms/data:/opt/dmdbms/data dm8:dm8_20250206_rev257733_x86_rh6_64</pre>
</div>
<p>其中 dm8:dm8_20250206_rev257733_x86_rh6_64 为 图中的 REPOSITORY 和 TAG</p>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250708144619072-1228634129.png" alt="" loading="lazy"></p>
<p><strong>四、进入容器 </strong></p>
<div class="cnblogs_code">
<pre>docker <span style="color: rgba(0, 0, 255, 1)">exec</span> -it dm8 /bin/bash</pre>
</div>
<p><strong>五、初始化数据库实例(在容器内操作):</strong></p>
<div class="cnblogs_code">
<pre>cd /opt/dmdbms/<span style="color: rgba(0, 0, 0, 1)">bin<br></span></pre>
</div>
<p><strong>六、指定数据存储路径</strong></p>
<div class="cnblogs_code">
<pre>./dminit PATH=/opt/dmdbms/data<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 指定数据存储路径</span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913100456877-105042011.png" alt="image" width="727" height="236" loading="lazy"></p>
<p><strong>七、设置用户名密码</strong></p>
<p>指定两个用户的密码:</p>
<div class="cnblogs_code">
<pre>./dminit PATH=/opt/dmdbms/<span style="color: rgba(0, 0, 0, 1)">data \
SYSDBA_PWD</span>=Dameng123! \ <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">系统管理员</span>
SYSAUDITOR_PWD=Auditor@123 <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">安全审计员</span></pre>
</div>
<p>在一行内执行</p>
<div class="cnblogs_code">
<pre>./dminit PATH=/opt/dmdbms/data SYSDBA_PWD=Dameng123!SYSAUDITOR_PWD=Auditor@123</pre>
</div>
<p>如果出现这个说明已经在运行,需要先停止</p>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913100926839-1013734458.png" alt="image" width="810" height="172" loading="lazy"></p>
<div class="cnblogs_code">
<pre>ps -ef | grep dmserver <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查找正在运行的dmserver进程</span><span style="color: rgba(0, 0, 0, 1)">
kill </span>-9 12345 <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 停止该进程(使用实际PID替换12345)</span><span style="color: rgba(0, 0, 0, 1)">
kill </span>-9 dmserver <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 或者强制停止所有dmserver进程</span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913101132753-821882996.png" alt="image" width="826" height="128" loading="lazy"></p>
<p> 再执行,后一路 y 回车</p>
<div class="cnblogs_code">
<pre>./dminit PATH=/opt/dmdbms/data SYSDBA_PWD=Dameng123!SYSAUDITOR_PWD=Auditor@123</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913101355941-557377116.png" alt="image" width="720" height="175" loading="lazy"></p>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913101415904-368005716.png" alt="image" width="499" height="444" loading="lazy"></p>
<p> 出现 success 后,退出容器。再从第二步开始,再来一遍</p>
<div class="cnblogs_code">
<pre>cd .. <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">退到上级目录</span>
exit <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">退出docker容器</span></pre>
</div>
<p>如果出现这个</p>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913102310771-46573307.png" alt="image" width="711" height="96" loading="lazy"></p>
<p> 说明已经有了 名叫 dm8 的 docker , 先把它删除了</p>
<div class="cnblogs_code">
<pre>docker ps -a <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">查看所有容器</span>
docker rename dm8 dm8_backup<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 将现有容器 dm8 重命名为 dm8_backup</span>
docker stop dm8<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 停止容器</span>
docker rm dm8<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 删除容器</span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913102609327-228074547.png" alt="image" width="837" height="153" loading="lazy"></p>
<p> 再从第三步 开始执行到 第六步</p>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913103604860-1990324627.png" alt="image" width="827" height="53" loading="lazy"></p>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913103454055-1773718090.png" alt="image" width="800" height="189" loading="lazy"></p>
<p><strong>八、启动数据库服务</strong></p>
<div class="cnblogs_code">
<pre>./dmserver /opt/dmdbms/data/DAMENG/dm.ini<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 根据初始化路径调整</span></pre>
</div>
<p>注:达梦官方镜像可能已配置自动启动服务,若未启动需手动执行。</p>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250708144817753-595200822.png" alt="" loading="lazy"></p>
<p>确认数据库服务已启动</p>
<div class="cnblogs_code">
<pre>ps -ef | grep dmserver</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250708150021134-1187987227.png" alt="" loading="lazy"></p>
<p><strong>九、使用 disql 连接数据库 </strong></p>
<p>连接数据库命令 </p>
<div class="cnblogs_code">
<pre>./disql <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">SYSDBA/Dameng123!@localhost:5236</span><span style="color: rgba(128, 0, 0, 1)">'</span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913103947968-1557258894.png" alt="image" width="823" height="104" loading="lazy"></p>
<div class="cnblogs_code">
<pre>SELECT * FROM v$version; <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查看数据库版本</span>
SELECT USER; <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">查看当前用户</span>
EXIT; <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">退出</span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202509/109594-20250913104131084-1414362692.png" alt="image" width="296" height="259" loading="lazy"></p>
<p>至此达梦数据库安装完成</p>
<p><strong>如果没有设置密码 就使用 disql 连接数据库,会出现连接失败,此时需要重新设置密码 </strong></p>
<div class="cnblogs_code">
<pre>./disql SYSDBA/SYSDBA@localhost:5236</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250708150149634-1289082787.png" alt="" loading="lazy"></p>
<p>出现上图说明 SYSDBA 的用户名和密码 错误</p>
<p><strong>重新设置密码</strong></p>
<p>1.停止正在运行的数据库实例</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查找正在运行的dmserver进程</span>
ps -ef |<span style="color: rgba(0, 0, 0, 1)"> grep dmserver
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 如果找到类似这样的进程:</span><span style="color: rgba(0, 128, 0, 1)">
#</span><span style="color: rgba(0, 128, 0, 1)"> root 12345 10 10:00 ? 00:00:00 /opt/dmdbms/bin/dmserver /opt/dmdbms/data/DAMENG/dm.ini</span>
<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 停止该进程(使用实际PID替换12345)</span>
kill -9 12345
<span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 或者强制停止所有dmserver进程</span>
kill -9 dmserver</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250710140715467-1765613334.png" alt="" width="969" height="210" loading="lazy"></p>
<p> 2. 清理残留文件</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 删除实例锁文件</span>
rm -f /opt/dmdbms/data/DAMENG/<span style="color: rgba(0, 0, 0, 1)">dm.ctl.lock
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 删除临时文件</span>
rm -f /opt/dmdbms/data/DAMENG/*.tmp</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250710140913337-44553878.png" alt="" loading="lazy"></p>
<p> 3. 等待几秒后重新初始化</p>
<p>若没有进入容器,先进入容器</p>
<div class="cnblogs_code">
<pre>docker <span style="color: rgba(0, 0, 255, 1)">exec</span> -it dm8 /bin/bash</pre>
</div>
<p>执行</p>
<div class="cnblogs_code">
<pre>cd /opt/dmdbms/bin</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250710141626574-152275735.png" alt="" loading="lazy"></p>
<p> 在初始化命令中同时指定两个用户的密码:</p>
<div class="cnblogs_code">
<pre>./dminit PATH=/opt/dmdbms/<span style="color: rgba(0, 0, 0, 1)">data \
SYSDBA_PWD</span>=Dameng123! \ <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">系统管理员</span>
SYSAUDITOR_PWD=Auditor@123 <span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">安全审计员</span></pre>
</div>
<p>或在一行执行</p>
<div class="cnblogs_code">
<pre>./dminit PATH=/opt/dmdbms/data SYSDBA_PWD=Dameng123!SYSAUDITOR_PWD=Auditor@123</pre>
</div>
<p>根据提示一路按 y 回车</p>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250710141833082-1777937412.png" alt="" width="636" height="471" loading="lazy"></p>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250710141905804-846241883.png" alt="" width="475" height="232" loading="lazy"></p>
<p> 最后看到 create dm database success 字样,则说明创建成功</p>
<p><span class="token comment"><strong>启动数据库服务</strong></span></p>
<div class="cnblogs_code">
<pre>./dmserver /opt/dmdbms/data/DAMENG/dm.ini</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250710142402135-1695701208.png" alt="" width="904" height="668" loading="lazy"></p>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250710142422318-1464245978.png" alt="" width="714" height="613" loading="lazy"></p>
<p><strong> 再次</strong><span class="token comment"><strong>连接数据库</strong></span></p>
<p><span class="token comment">查看正在运行的dmserver进程</span></p>
<div class="cnblogs_code">
<pre>ps -ef | grep dmserver</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250711110134048-1935262247.png" alt="" width="836" height="60" loading="lazy"></p>
<p> 说明 达梦数据库已经正在运行</p>
<p> 进入容器</p>
<div class="cnblogs_code">
<pre>docker <span style="color: rgba(0, 0, 255, 1)">exec</span> -it dm8 /bin/bash</pre>
</div>
<p>进入容器后,进入此目录 下</p>
<div class="cnblogs_code">
<pre>cd /opt/dmdbms/bin</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250711111112843-2129296964.png" alt="" loading="lazy"></p>
<p> 执行连接数据库命令后出现 event not found 的错误,是因为 密码中包含特殊字符 ! 需要 使用单引号包裹整个连接字符串</p>
<p>连接数据库命令:</p>
<div class="cnblogs_code">
<pre>./disql <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">SYSDBA/Dameng123!@localhost:5236</span><span style="color: rgba(128, 0, 0, 1)">'</span></pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250711111454842-298310705.png" alt="" width="673" height="115" loading="lazy"></p>
<p> 连接成功后的操作验证</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)"> 查看数据库版本</span>
SELECT *<span style="color: rgba(0, 0, 0, 1)"> FROM v$version;
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">查看当前用户</span>
<span style="color: rgba(0, 0, 0, 1)">SELECT USER;
</span><span style="color: rgba(0, 128, 0, 1)">#</span><span style="color: rgba(0, 128, 0, 1)">退出</span>
EXIT;</pre>
</div>
<p><img src="https://img2024.cnblogs.com/blog/109594/202507/109594-20250711111621121-861478676.png" alt="" width="397" height="324" loading="lazy"></p>
<p> </p><br><br>
来源:https://www.cnblogs.com/hailexuexi/p/18973072
頁:
[1]