拒绝密码裸奔!用配置文件优雅搞定 MongoDB 脚本认证

通过使用 MongoDB 的配置文件或 .mongorc.js 文件来隐藏账号密码,或者使用外部的认证文件方式。以下是一个 优化后的 shell 脚本,采用了 MongoDB 认证配置文件 方式进行账号密码隐藏,并做了脚本结构优化与可读性增强:

✅ 优化点说明:

  • 使用 ~/.mongoconfig.conf 文件存放认证信息。

  • 避免在脚本中直接写密码,提升安全性。

  • 加入错误判断,执行日志更清晰。

📄 示例配置文件 ~/.mongoconfig.conf(仅限当前用户使用):

host=127.0.0.1
port=27017
username=root
password=password
authdb=admin

📌 注意:配置文件应设为 600 权限,防止其他用户读取:

chmod 600 ~/.mongoconfig.conf

🚀 优化后的脚本(rename_collection.sh):

#!/bin/bash

# Author: Bertram
# Description: 每周自动将 PriceLog 集合重命名,添加日期后缀

CONFIG_FILE="$HOME/.mongoconfig.conf"  # MongoDB 认证信息配置文件路径
COLLECTION_NAME="PriceLog"             # 需要重命名的集合名称
DB_NAME="Test"                         # MongoDB 数据库名称
DATE_SUFFIX=$(date +%Y%m%d)            # 当前日期作为后缀(格式:YYYYMMDD)

# 加载配置文件中的 MongoDB 连接信息
if [[ -f "$CONFIG_FILE" ]]; then
    source "$CONFIG_FILE"
else
    echo "[错误] 未找到 MongoDB 配置文件: $CONFIG_FILE"
    exit 1
fi

# 执行 MongoDB 重命名集合操作
mongo --quiet --host "$host" --port "$port" -u "$username" -p "$password" --authenticationDatabase "$authdb" <<EOF
use $DB_NAME;
db.$COLLECTION_NAME.renameCollection("${COLLECTION_NAME}_$DATE_SUFFIX");
EOF

# 检查命令执行结果
if [[ $? -eq 0 ]]; then
    echo "[信息] 集合 '$COLLECTION_NAME' 已成功重命名为 '${COLLECTION_NAME}_$DATE_SUFFIX'"
else
    echo "[错误] 集合重命名失败"
    exit 1
fi

🧪 测试建议:

  1. 先在测试库中跑一遍验证。

  2. 确认 .mongoconfig.conf 权限和路径正确。

  3. 设置定时任务前手动执行一次确认逻辑无误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT_狂奔者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值