init: IotLCM 开源版部署仓
内容: - docker-compose.yml:14 个基础/业务服务 + 3 个可选 profile(with-mock 挡板、with-bot、with-nginx) - .env.example:集中管理镜像仓库、口令、端口;必填项缺失时 compose 直接报错退出 - config.example/:10 份配置模板,全部为占位值与注释说明 - schema/:12 个初始化脚本,按文件名顺序由 MySQL initdb 自动执行 脱敏处理: - 生产/内网 IP、镜像仓库地址、公司名、真实域名全部清除 - 演示账号保留 18 个(出库与划拨依赖账号与部门树的关联), 昵称/邮箱/手机号/登录IP/头像改为占位或编造值 - 数据库账号与 admin 口令改为初始化时按 .env 注入计算 - 通道模板与 Mock 通道的上游密钥置空 - Mock 通道地址指向 compose 内 onelink-mock 服务 部署时用 --profile with-mock 启动运营商接口挡板,即可在无真实运营商环境时跑通全链路。
This commit is contained in:
Executable
+56
@@ -0,0 +1,56 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# 重置种子账号口令(由 MySQL 容器 initdb 自动执行)
|
||||
#
|
||||
# 01-schema.sql 里的密码哈希源自旧库,不能用于开源分发。
|
||||
# 这里按 MYSQL_ADMIN_PASSWORD 统一重算,登录后请逐个修改。
|
||||
#
|
||||
# 哈希算法(见 iotlcm-admin-svr server/internal/library/utils/utils.go):
|
||||
# md5( hex(md5(明文)) + md5(salt) )
|
||||
# salt 取自每行 sys_user.salt 列。
|
||||
# ============================================================
|
||||
set -euo pipefail
|
||||
|
||||
if [ -z "${MYSQL_ADMIN_PASSWORD:-}" ]; then
|
||||
echo "[initdb] 错误:未设置 MYSQL_ADMIN_PASSWORD" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PWD_MD5=$(printf '%s' "$MYSQL_ADMIN_PASSWORD" | md5sum | awk '{print $1}')
|
||||
|
||||
# 逐个账号按其自身 salt 计算哈希(salt 每行不同)
|
||||
mysql --protocol=socket -uroot -p"${MYSQL_ROOT_PASSWORD}" <<SQL
|
||||
SET NAMES utf8mb4;
|
||||
USE \`db_iotlcm\`;
|
||||
|
||||
DROP PROCEDURE IF EXISTS sp_reset_all_passwords;
|
||||
DELIMITER \$\$
|
||||
CREATE PROCEDURE sp_reset_all_passwords()
|
||||
BEGIN
|
||||
DECLARE done INT DEFAULT 0;
|
||||
DECLARE v_id BIGINT;
|
||||
DECLARE v_salt VARCHAR(64);
|
||||
DECLARE v_salt_md5 VARCHAR(64);
|
||||
DECLARE v_final VARCHAR(64);
|
||||
DECLARE cur CURSOR FOR SELECT user_id, salt FROM sys_user;
|
||||
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
|
||||
|
||||
OPEN cur;
|
||||
read_loop: LOOP
|
||||
FETCH cur INTO v_id, v_salt;
|
||||
IF done THEN
|
||||
LEAVE read_loop;
|
||||
END IF;
|
||||
SET v_salt_md5 = MD5(v_salt);
|
||||
SET v_final = MD5(CONCAT('${PWD_MD5}', v_salt_md5));
|
||||
UPDATE sys_user SET password = v_final WHERE user_id = v_id;
|
||||
END LOOP;
|
||||
CLOSE cur;
|
||||
END\$\$
|
||||
DELIMITER ;
|
||||
|
||||
CALL sp_reset_all_passwords();
|
||||
DROP PROCEDURE sp_reset_all_passwords;
|
||||
SQL
|
||||
|
||||
echo "[initdb] 种子账号口令已统一重置"
|
||||
Reference in New Issue
Block a user