麒麟系统,达梦数据库的安装,DM8安装脚本
麒麟系统的操作vim /etc/sysconfig/network-scripts/ifcfg-ens33# 重启 nmcli conn down ens33 nmcli conn up ens33 # 或者重载 nmcli conn reload时间同步vi /etc/chrony.conf注释掉原有的 pool或 server行在行首加 #添加以下阿里云服务器地址 # 添加阿里云 NTP 服务器 server ntp1.aliyun.com iburst server ntp2.aliyun.com iburst server ntp3.aliyun.com iburst # 或者使用单个域名推荐 server ntp.aliyun.com iburstsystemctl restart chronyd systemctl enable chronyd配置达梦的安装环境创建用户和用户组系统底层配置 → root管理员权限数据库软件运行 数据读写 → dmdba普通业务权限# 创建用户组 dinstall groupadd dinstall -g 2001 # 创建用户 dmdba useradd -G dinstall -m -d /home/dmdba -s /bin/bash -u 2001 dmdbapasswd dmdba 输入密码Dm2001修改限制参数修改 /etc/security/limits.conf 文件配置内容cat /etc/security/limits.conf EOF dmdba soft nice 0 dmdba hard nice 0 dmdba soft as unlimited dmdba hard as unlimited dmdba soft fsize unlimited dmdba hard fsize unlimited dmdba soft nproc 65536 dmdba hard nproc 65536 dmdba soft nofile 65536 dmdba hard nofile 65536 dmdba soft core unlimited dmdba hard core unlimited dmdba soft data unlimited dmdba hard data unlimited EOFreboot切换到 dmdba 用户查看配置是否生效su - dmdba ulimit -a创建安装目录切换至 root 用户创建实例保存目录、归档保存目录、备份保存目录exit 退出到root用户 # 实例保存目录 mkdir -p /dmdata/data # 归档保存目录 mkdir -p /dmdata/arch # 备份保存目录 mkdir -p /dmdata/dmbak# owner 改为 dmdba chown -R dmdba:dinstall /dmdata # 授予755权限 chmod -R 755 /dmdata/data chmod -R 755 /dmdata/arch chmod -R 755 /dmdata/dmbakDM8 软件下载官网地址https://www.dameng.com/或直接打开 https://eco.dameng.com/download/unzip dm8_20251203_x86_kylin10_sp3_64.zip镜像挂载挂载镜像到 /mnt 目录下查看目录内容mount -o loop,ro dm8_20251203_x86_kylin10_sp3_64.iso /mnt ll /mnt# -o选项说明通过 loop 设备环回设备来挂载一个普通文件比如 ISO 镜像让它模拟成块设备再挂载到目录上。# 加 -o loopmount -o loop xxx.iso /mnt → 挂载 ISO 文件# 不加 -o loop直接 mount /dev/sr0 /mnt → 挂载真实的光驱设备# -t iso9660指定文件系统类型CD/DVD标准格式# -o ro以只读方式挂载光盘天生只读# /mnt/iso挂载点目录ISO 已经成功挂载到/mnt里面只有两个文件DMInstall.bin达梦安装程序DM8 Install.pdf安装文档安装DM8切换到dmdba安装su - dmdba cd /mnt./DMInstall.bin -i空间不足mount -o remount,size5G /tmp永久vim /etc/fstab tmpfs /tmp tmpfs defaults,size5G 0 0再切换回root为什么切换回root账号答案DmAPService 要以 root 注册/运行是因为它需要写入系统级的 systemd 配置并具备更高的权限来管理数据库备份和守护进程而数据库实例进程依旧以普通用户 dmdba 来跑执行命令创建 DmAPService否则会影响数据库备份。DmAPServiceDatabase Advanced Process Service达梦数据库高级进程服务它是达梦在 Linux/Unix 下提供的一个辅助后台守护进程通常随 root_installer.sh 安装一起创建并注册到系统服务里。主要用于① 数据库备份/恢复 ② 管理数据库部分 ③ 支持任务调度/home/dmdba/dmdbms/script/root/root_installer.sh配置环境变量切换至 dmdba 用户修改环境变量配置文件 .bash_profile刷新环境变量su - dmdba echo export PATH$PATH:$DM_HOME/bin:$DM_HOME/tool ~/.bash_profile source ~/.bash_profile初始化数据库进入 /home/dmdba/dmdbms/bin 目录下查看目录内容cd /home/dmdba/dmdbms/bin ls使用 dminit 命令初始化实例dminit 命令可设置多种参数查看可配置参数./dminit help使用 dminit 命令初始化实例设置数据库目录为 /dmdata/data就是在【二、配置DM8安装环境】中创建的安装目录。页大小为 32 KB簇大小为 32 KB大小写敏感字符集为 UTF-8数据库名为 DAMENG对应图形化安装界面上的默认的数据库名 DAMENG实例名为 DMSERVER对应图形化安装界面上的默认的实例名 DMSERVER端口为 5236页Page是 达梦数据库存储的最小单位所有的数据(表、索引等最终都要写入“页”中。​ 簇Extent是 一组连续的数据页是达梦分配空间的基本单位。代表数据库一次分配的空间块。​ 页大小 簇大小的关系答页是最小单位簇是成批单位PAGE_SIZE 32KEXTENT_SIZE 32K默认→ 单个簇 1MB./dminit path/dmdata/data \ PAGE_SIZE32 \ EXTENT_SIZE32 \ CASE_SENSITIVEy \ CHARSET1 \ DB_NAMEDAMENG \ INSTANCE_NAMEDMSERVER \ PORT_NUM5236 \ SYSDBA_PWDSysdba123 \ SYSAUDITOR_PWDAuditor123控制台输出create dm database success代表数据库实例初始化完全成功。DM8 服务配置注册服务切换至 root 用户进入 /home/dmdba/dmdbms/script/root/ 目录下查看目录内容执行 sh 脚本注册实例服务数据库名为 DAMENG对应图形化安装界面上的默认的数据库名 DAMENG-p DMSERVER 是服务名的后缀对应图形化安装界面上的默认的实例名 DMSERVER最终生成的服务名为DmServiceDMSERVER。查看 dm_service_installer.sh 脚本文件了解更多参数信息。exit cd /home/dmdba/dmdbms/script/root/ ls ./dm_service_installer.sh -t dmserver -dm_ini /dmdata/data/DAMENG/dm.ini -p DMSERVER进入 cd /home/dmdba/dmdbms/bin 目录下查看目录中生成的服务实例 DmServiceDMSERVERcd /home/dmdba/dmdbms/bin ls启动达梦su - dmdba cd /home/dmdba/dmdbms/bin ./DmServiceDMSERVER start停止达梦./DmServiceDMSERVER stop ./DmServiceDMSERVER status重启./DmServiceDMSERVER restart ./DmServiceDMSERVER status登录DM8运行 disql 工具/home/dmdba/dmdbms/tool/disql登录 dm8默认账号SYSDBA密码是Sysdba123conn SYSDBA/Sysdba123查看版本SELECT * FROM v$version;开放端口5236查看监听了哪些端口ss -nap | grep dmserver # 或 netstat -tulnpe | grep dmserver切换回root用户exit检查端口是否开放firewall-cmd --zonepublic --query-port5236/tcp如果端口未放行执行放行命令firewall-cmd --add-port5236/tcp --permanent firewall-cmd --reload firewall-cmd --zonepublic --list-all或者直接禁用防火墙systemctl stop firewalld systemctl disable firewalld远程客户端连接使用【DataGrip数据库管理工具或DM管理工具】连接创建 DM 驱动程序配置连接填写 用户密码账号SYSDBA密码Sysdba123填写 URLURL jdbc:dm://写自己的麒麟服务器的ip地址:5236?resultSetType1003应用测试链接就了DM8的shell安装脚本创建Shell脚本dm8_install.sh#!/usr/bin/env bash # dm8_install.sh — DM8安装最终版 # - 统一将 /tmp (tmpfs) remount 到 3G避免 2047MiB 边界 # - 复用 /mnt只读OK否则挂载 ISO 到 /opt/dm8 # - 内置 Expect 自动化覆盖常见问答timeout -1 防超时 # - 等待并定位 DM_HOME再执行 root_installer.sh安装未完成则报错 # - 初始化数据库(dminit)、注册并启动实例、放行 5236、防火墙 # - 冒烟验证 disql: SELECT * FROM v$version;已正确转义日志 set -euo pipefail trap ec$?; ((ec!0)) echo [ERR ] exit${ec}, log/tmp/dm8_install.log EXIT exec (tee -a /tmp/dm8_install.log) 21 # 配置可用环境变量覆盖 # DM_GROUP${DM_GROUP:-dinstall} DM_GROUP_ID${DM_GROUP_ID:-2001} DM_USER${DM_USER:-dmdba} DM_UID${DM_UID:-2001} DM_USER_HOME${DM_USER_HOME:-/home/${DM_USER}} DM_HOME${DM_HOME:-${DM_USER_HOME}/dmdbms} # 若安装到 /opt/dmdbms 会自动定位修正 DM_DATA_ROOT${DM_DATA_ROOT:-/dmdata} DM_DATA${DM_DATA:-${DM_DATA_ROOT}/data} DM_ARCH${DM_ARCH:-${DM_DATA_ROOT}/arch} DM_BAK${DM_BAK:-${DM_DATA_ROOT}/dmbak} DM_DB_NAME${DM_DB_NAME:-DAMENG} DM_INSTANCE${DM_INSTANCE:-DMSERVER} DM_PORT${DM_PORT:-5236} SYSDBA_PWD${SYSDBA_PWD:-Sysdba123} SYSAUDITOR_PWD${SYSAUDITOR_PWD:-Auditor123} # 可选若你想为 dmdba 设置强口令导出 DM_USER_PASSWORD******默认不设置避免 PAM 报警 DM_USER_PASSWORD${DM_USER_PASSWORD:-} ISO_PATH${1:-} # 传入 ISO 路径 # /tmp 扩容目标安装器判定容易卡在 2047MiB统一扩到 3G TMP_MIN_BYTES$(( 2 * 1024 * 1024 * 1024 )) TMP_TARGET_BYTES$(( 3 * 1024 * 1024 * 1024 )) ## log(){ printf [INFO] %s\n $*; } warn(){ printf [WARN] %s\n $*; } err(){ printf [ERR ] %s\n $* 2; } require_root(){ [[ $EUID -eq 0 ]] || { err 请用 root 运行; exit 1; }; } cmd_exists(){ command -v $1 /dev/null 21; } ensure_pkg(){ local p$1 if ! cmd_exists $p ! rpm -q $p /dev/null 21; then if cmd_exists dnf; then dnf -y install $p || true elif cmd_exists yum; then yum -y install $p || true elif cmd_exists apt; then apt update apt -y install $p || true fi fi } append_if_missing(){ local file$1 marker$2 content$3 if [[ ! -f $file ]] || ! grep -qF $marker $file 2/dev/null; then printf %s\n $content $file fi } ensure_user_group(){ log ensure user/group getent group $DM_GROUP /dev/null 21 || groupadd -g $DM_GROUP_ID $DM_GROUP if ! id -u $DM_USER /dev/null 21; then useradd -G $DM_GROUP -m -d $DM_USER_HOME -s /bin/bash -u $DM_UID $DM_USER # 仅在显式提供强口令时才设置避免 PAM 报警 if [[ -n $DM_USER_PASSWORD ]]; then echo ${DM_USER}:${DM_USER_PASSWORD} | chpasswd || true fi fi id $DM_USER || true } tune_limits(){ log apply /etc/security/limits.conf local file/etc/security/limits.conf local marker# dm8-limits local block${marker} ${DM_USER} soft nice 0 ${DM_USER} hard nice 0 ${DM_USER} soft as unlimited ${DM_USER} hard as unlimited ${DM_USER} soft fsize unlimited ${DM_USER} hard fsize unlimited ${DM_USER} soft nproc 65536 ${DM_USER} hard nproc 65536 ${DM_USER} soft nofile 65536 ${DM_USER} hard nofile 65536 ${DM_USER} soft core unlimited ${DM_USER} hard core unlimited ${DM_USER} soft data unlimited ${DM_USER} hard data unlimited append_if_missing $file $marker $block log ulimit snapshot (as ${DM_USER}) su - $DM_USER -c bash -lc ulimit -n; ulimit -u; ulimit -a | head -n 15 || true } prep_dirs(){ log prepare data/archive/backup dirs mkdir -p $DM_DATA $DM_ARCH $DM_BAK chown -R ${DM_USER}:${DM_GROUP} $DM_DATA_ROOT chmod -R 755 $DM_DATA_ROOT } ensure_tmp_size(){ log ensure /tmp size (tmpfs - 3G) if mount | grep -qE on /tmp type tmpfs; then mount -o remount,size${TMP_TARGET_BYTES} /tmp || { warn remount /tmp to 3G failed继续尝试按现有空间安装 } fi } mount_iso(){ log mount iso # 复用 /mnt只读也 OK if [[ -x /mnt/DMInstall.bin ]]; then log reuse existing /mnt (read-only) DM_ISO_MNT/mnt; export DM_ISO_MNT; return fi [[ -n ${ISO_PATH} ]] || { err 未提供 ISO 路径; exit 1; } [[ -f ${ISO_PATH} ]] || { err ISO 不存在: ${ISO_PATH}; exit 1; } local target/mnt if mount | grep -qE on /mnt ; then target/opt/dm8; mkdir -p $target else # 若 /mnt 未挂载但不可写改用 /opt/dm8 if ! touch /mnt/.writetest 2/dev/null; then target/opt/dm8; mkdir -p $target else rm -f /mnt/.writetest fi fi if ! mount | grep -qE on ${target} ; then mount -o loop ${ISO_PATH} $target fi [[ -x ${target}/DMInstall.bin ]] || { err 未在 ${target} 找到 DMInstall.bin; exit 1; } DM_ISO_MNT$target; export DM_ISO_MNT } write_expect(){ # 覆盖常见问答语言/许可/Key/时区/安装类型/安装目录/确认/创建链接/覆盖/继续/任意键 cat /tmp/dm8_install.exp EOF #!/usr/bin/expect log_user 1 set timeout -1 if {[info exists env(WORKDIR)]} { set workdir $env(WORKDIR) } else { set workdir /mnt } cd $workdir spawn ./DMInstall.bin -i proc yes {} { send y\r } expect { -re {Please select the installer.*language|语言.*选择|选择.*语言} { send 1\r; exp_continue } -re {accept.*license|许可.*协议.*接受|是否同意.*许可} { yes; exp_continue } -re {是否.*Key.*路径|Input.*Key.*path} { send n\r; exp_continue } -re {是否设置.*时区|Set.*timezone} { send y\r; exp_continue } -re {请选择.*时区|Select.*timezone} { send 21\r; exp_continue } -re {请选择安装类型|Select.*install.*type} { send 1\r; exp_continue } # 安装目录/路径统一回车接受默认 -re {请选择安装目录|请输入安装目录|安装目录|安装路径|Install.*(path|directory)} { send \r; exp_continue } -re {是否确认安装目录|确认.*安装目录|Confirm.*install.*directory\?} { yes; exp_continue } -re {是否确认安装路径|Confirm.*install.*path\?} { yes; exp_continue } -re {是否.*确认.*安装|Proceed.*install\?|Begin.*installation} { yes; exp_continue } -re {是否创建.*链接|Create.*link.*\?} { yes; exp_continue } -re {已存在.*是否覆盖|存在.*是否继续|overwrite.*\?|continue.*\?} { yes; exp_continue } -re {任意键.*继续|Press.*any.*key.*continue} { send \r; exp_continue } # 兜底类确认 -re {是否.*(继续|安装|确认)|Do you want.*(continue|install|proceed)} { yes; exp_continue } eof } EOF chmod 700 /tmp/dm8_install.exp chown ${DM_USER}:${DM_GROUP} /tmp/dm8_install.exp } run_installer(){ if [[ -x ${DM_HOME}/bin/disql ]]; then log DM8 已存在${DM_HOME} return fi ensure_pkg expect write_expect log run installer via Expect su - ${DM_USER} -c bash -lc WORKDIR\${DM_ISO_MNT}\ /usr/bin/expect /tmp/dm8_install.exp # 等待安装产物并自动定位 DM_HOME最多等 10 分钟 log wait for installer outputs (root_installer.sh) local try0 alt while (( try 60 )); do if [[ -x ${DM_HOME}/script/root/root_installer.sh ]]; then break; fi alt$(find /home/${DM_USER} /opt /usr -type f -path */dmdbms/script/root/root_installer.sh 2/dev/null | head -n1 || true) if [[ -n $alt ]]; then DM_HOME$(dirname $(dirname $alt)); export DM_HOME break fi sleep 10; try$((try1)) done [[ -x ${DM_HOME}/script/root/root_installer.sh ]] || { err installer 未完成缺少 root_installer.sh; exit 1; } log run root_installer.sh ${DM_HOME}/script/root/root_installer.sh } setup_env(){ log setup env for ${DM_USER} local profile${DM_USER_HOME}/.bash_profile local marker# dm8-env local block${marker} export DM_HOME${DM_HOME} export PATH\$PATH:\$DM_HOME/bin:\$DM_HOME/tool append_if_missing $profile $marker $block } dminit_db(){ local ini${DM_DATA}/${DM_DB_NAME}/dm.ini if [[ -f $ini ]]; then log 数据库已初始化$ini; return; fi log run dminit su - ${DM_USER} -c bash -lc cd ${DM_HOME}/bin; ./dminit PATH${DM_DATA} PAGE_SIZE32 EXTENT_SIZE32 CASE_SENSITIVEY CHARSET1 DB_NAME${DM_DB_NAME} INSTANCE_NAME${DM_INSTANCE} PORT_NUM${DM_PORT} SYSDBA_PWD${SYSDBA_PWD} SYSAUDITOR_PWD${SYSAUDITOR_PWD} [[ -f ${DM_DATA}/${DM_DB_NAME}/dm.ini ]] || { err dminit 失败未生成 dm.ini; exit 1; } } register_service(){ log register systemd service local svcDmService${DM_INSTANCE} if systemctl list-unit-files | grep -q ^${svc}.service; then log 服务已注册$svc; return fi ${DM_HOME}/script/root/dm_service_installer.sh -t dmserver -dm_ini ${DM_DATA}/${DM_DB_NAME}/dm.ini -p ${DM_INSTANCE} systemctl daemon-reload || true } start_service(){ log start instance service su - ${DM_USER} -c bash -lc ${DM_HOME}/bin/DmService${DM_INSTANCE} start sleep 2 if ss -lntp 2/dev/null | grep -q :${DM_PORT} || netstat -nlpt 2/dev/null | grep -q :${DM_PORT}; then log port ${DM_PORT} listening else warn 未检测到 ${DM_PORT} 监听请检查日志 fi } open_firewall(){ log open firewall 5236/tcp if firewalld active if cmd_exists firewall-cmd systemctl is-active --quiet firewalld; then firewall-cmd --zonepublic --add-port${DM_PORT}/tcp --permanent || true firewall-cmd --reload || true fi } smoke_test(){ log smoke test: SELECT * FROM v$version su - ${DM_USER} -c ${DM_HOME}/bin/disql SYSDBA/${SYSDBA_PWD}localhost:${DM_PORT} -e SELECT * FROM v\$version; } main(){ require_root ensure_pkg net-tools || true ensure_pkg util-linux || true ensure_user_group tune_limits prep_dirs ensure_tmp_size mount_iso run_installer setup_env dminit_db register_service start_service open_firewall smoke_test log ✅ DONE warn 如使用了默认口令请尽快修改 SYSDBA/SYSAUDITOR 密码dmdba 账号若需登录请自行执行 passwd dmdba 设置强口令。 } main $怎么运行# 1) 准备口令可自定义 export SYSDBA_PWDSysdba123 export SYSAUDITOR_PWDAuditor123 # 2) 执行root只需传入 ISO 路径 chmod x dm8_install.sh sudo bash ./dm8_install.sh /root/dm8_20250122_x86_rh7_64.iso

相关新闻

怎么把大文件免费传给对方,不用上传网盘?

怎么把大文件免费传给对方,不用上传网盘?

你有没有过这样的崩溃时刻—— 下午四点,客户在微信上催:“上次那个产品展示视频发我一下,马上要开会用。”你打开文件夹,视频2.3GB,拖进微信对话框,屏幕上弹出一行灰色小字:文件大小超过1GB&am…

2026/6/28 6:08:25阅读更多 →
机器学习之集成学习AdaBoost

机器学习之集成学习AdaBoost

如大家所熟悉的,集成学习是一种利用多个基础模型来构建更加准确、稳定的预测模型的机器学习技术。集成学习的基本思想是将多个模型组合起来,通过集体决策来提高模型的预测性能。它能够有效地降低单个模型的过拟合风险,提高模型的泛化性能。集…

2026/6/28 6:08:25阅读更多 →
嘉兴南湖区瑜伽普拉提亲测效果分享

嘉兴南湖区瑜伽普拉提亲测效果分享

开篇:定下基调在追求健康与美的道路上,瑜伽和普拉提成为了越来越多人的选择。嘉兴南湖区作为一个充满活力的区域,自然也孕育了众多优质的瑜伽普拉提场馆。本文旨在通过实地体验与行业观察,为读者提供一份关于南湖区瑜伽普拉提机构…

2026/6/28 6:03:25阅读更多 →
计算机网络(四):数据链路层(功能概述、组帧/封装成帧、差错控制、流量控制与可靠传输机制)

计算机网络(四):数据链路层(功能概述、组帧/封装成帧、差错控制、流量控制与可靠传输机制)

无人机图传技术全面解析:模拟与数字异同及应用【区块链】Fiat24 深度解读(含 Flutter 集成与 SDK 骨架)计算机工作原理(简单介绍)Linux——自动化建构make/makefile海康 智能相机二开 绘制底图 测试工具应用框web3D、webGL、webGPU、webGIS、webXR、webC…

2026/6/28 7:48:33阅读更多 →
钢铁厂设备健康监测系统:AIoT技术驱动的智慧运维革命?

钢铁厂设备健康监测系统:AIoT技术驱动的智慧运维革命?

uv 配置国内镜像加速教程FFmpeg 核心 API 系列:avcodec_find_decoder / avcodec_alloc_context3 / avcodec_open2基于LINUX平台使用C语言实现MQTT协议连接华为云平台(IOT)(网络编程)使用Java连接redis以及开放redis端口…

2026/6/28 7:48:33阅读更多 →
Django 路由详解

Django 路由详解

浅谈WebSocket港大和字节携手打造WorldWeaver:以统一建模方案整合感知条件,为长视频生成领域带来质量与一致性双重飞跃。【面板数据】上市公司行政处罚数据集(2003-2023年)0.4 tf.keras搭建神经元网络处理minist手写字体前端开发工…

2026/6/28 7:48:33阅读更多 →
【办公类-117-01】20250924通义万相视频2.5——三个小人(幼儿作品动态化)

【办公类-117-01】20250924通义万相视频2.5——三个小人(幼儿作品动态化)

GPT的前世今生及发展Linux网络应用层自定义协议与序列化基于「YOLO目标检测 多模态AI分析」的光伏板缺陷检测分析系统(vue flask 模型训练 AI算法)VMware ubuntu 空间清理与磁盘扩展CF1055 C、D第8章:扩展边界:技术之外的视野&…

2026/6/28 7:48:33阅读更多 →
Docker 部署 Nginx 完整指南

Docker 部署 Nginx 完整指南

【Linux】操作系统的认识Docker在window安装要区分window11报错ERROR: request returned Internal Server Error for API route and versionarp broadcast enable 概念及题目范式革命:RDMA 如何让网络成为 “分布式内存总线”Socket网络编程(1&#xff0…

2026/6/28 7:48:33阅读更多 →
MCP、Agent 很火,但摄影行业已经开始拼「实时数据流」能力了

MCP、Agent 很火,但摄影行业已经开始拼「实时数据流」能力了

最近几个月,技术圈最火的几个关键词:AI AgentMCP(Model Context Protocol)实时工作流边缘计算大家讨论的核心问题其实只有一个:如何让数据实时进入 AI,并立即产生价值?看起来这是 AI 领域的新问…

2026/6/28 7:43:33阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →
AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

AI Coding 六个月真实ROI账本:产品经理的血泪教训,研发的冷静忠告

6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…

2026/6/28 0:08:01阅读更多 →
审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

审计来了,数据权限全开——审计走了,怎么确保权限全部关掉?

引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…

2026/6/28 0:08:01阅读更多 →