You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu环境下Bash脚本加密数据库密码并读取解密的实现方法

加密密码文件并解密用于数据库连接的实现方案

问题描述

我有两个文件:一个用于存储密码,另一个用于读取密码并建立数据库连接。需要解决两个问题:如何加密密码文件中的密码,以及读取文件后如何解密密码用于数据库访问?

1) 密码文件(原内容)

USER="User_Name"

PASS="Pass" # 如何加密这个密码?

2) 读取文件(原内容)

. Password.txt 

sqlplus.exe -S ${USER}/${PASS}@DBLINK # 如何解密密码并在此处使用?

具体解决方案

方案一:用OpenSSL对称加密(通用bash环境)

1. 加密密码并更新密码文件

使用AES-256-CBC算法加密明文密码,执行以下命令:

echo -n "你的明文密码" | openssl enc -aes-256-cbc -salt -out encrypted_pass.bin

执行时会要求你输入一个加密密钥(务必妥善保存,解密时必须用到)。

修改密码文件Password.txt,替换明文密码为加密文件路径:

USER="User_Name"
ENCRYPTED_PASS="encrypted_pass.bin"

2. 解密密码并执行数据库连接

修改读取脚本,添加解密逻辑:

# 加载密码文件中的配置
. Password.txt

# 解密密码(执行时会提示输入加密密钥)
PASS=$(openssl enc -aes-256-cbc -d -in $ENCRYPTED_PASS)

# 连接数据库
sqlplus.exe -S ${USER}/${PASS}@DBLINK

方案二:Oracle官方Wallet(Oracle数据库专属)

如果是Oracle数据库,官方推荐使用Wallet存储凭证,安全性更高:

1. 创建Wallet并添加凭证

首先创建Wallet目录并初始化:

mkstore -wrl /your/wallet/path -create

按提示设置Wallet密码,然后添加数据库连接凭证:

mkstore -wrl /your/wallet/path -createCredential DBLINK User_Name 你的明文密码

2. 配置并连接数据库

修改sqlnet.ora文件,指定Wallet路径:

WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /your/wallet/path)))
SQLNET.WALLET_OVERRIDE = TRUE

之后连接脚本无需再处理密码,直接执行:

sqlplus.exe -S /@DBLINK

关键注意事项

  • 加密密钥不要硬编码到脚本中,优先通过交互式输入传递;若用环境变量,需限制环境变量的访问权限。
  • 加密文件、Wallet目录要设置严格的权限(如chmod 600),仅允许执行脚本的用户读取。
  • 避免在命令行直接输入明文密码,防止被命令历史记录捕获。

内容的提问来源于stack exchange,提问作者Abdul Rahman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:20:32