# db_conn_tools **Repository Path**: enomix/db_conn_tools ## Basic Information - **Project Name**: db_conn_tools - **Description**: simple db tools to execute sql with batch databases using mysql-client - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-19 - **Last Updated**: 2025-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 数据库连接工具 (db_conn_tools) 一个用于连接和查询数据库的Shell脚本工具集,支持配置管理、安全密码存储和执行历史记录。 ## 项目结构 ``` ├── bin/ │ └── main.sh # 主入口脚本 ├── config/ │ ├── conn_info.sh # 数据库连接信息配置 │ ├── conn_tools.sh # 数据库操作工具函数 │ ├── decrypt.sh # 密码解密脚本 │ ├── dependency.sh # 基础依赖和工具函数 │ └── encrypt.sh # 密码加密脚本 ├── log/ │ └── machine_log/ # 执行历史日志 ├── outgoing/ # 输出文件目录 └── result.txt # 默认结果文件(示例) ``` ## 功能特性 - **统一的数据库连接管理**:集中管理多个数据库连接信息 - **安全的密码存储**:使用加密方式存储数据库密码 - **执行日志记录**:记录所有查询执行情况,包括时间、耗时和结果 - **支持多种数据库**:支持MySQL、Oracle和PostgreSQL数据库 - **参数化查询**:支持通过命令行参数指定数据库、SQL文件和结果路径 ## 使用方法 ### 基本用法 ```bash bash /home/appop/Development/ShellScripts/db_conn_tools/bin/main.sh <数据库键名> <结果输出绝对路径> ``` 脚本会根据数据库配置中指定的`type`字段自动调用对应的数据库执行函数(mysql_execute_sql、ora_execute_sql或pg_execute_sql)。 ### 示例 ```bash bash /home/appop/Development/ShellScripts/db_conn_tools/bin/main.sh db_test /home/user/query.sql /home/user/result.txt ``` ### 配置数据库连接 编辑 `config/conn_info.sh` 文件,添加或修改数据库连接信息,格式如下: ```bash # 配置格式:db_conn["键名"]="type=数据库类型 host=主机地址 port=端口号 username=用户名 password=加密密码 instance_name=实例名" # 支持的数据库类型:mysql, oracle, postgresql db_conn["db_test"]="type=mysql host=192.168.5.69 port=13002 username=root password=U2FsdGVkX1/lxLa6obGvOQMTNvU4vGW7 instance_name=db_test" ``` ## 密码加密和解密 ### 加密密码 ```bash bash /home/appop/Development/ShellScripts/db_conn_tools/config/encrypt.sh "明文密码" > encrypted_password.txt ``` 将输出的加密字符串复制到 `config/conn_info.sh` 中。 ### 注意事项 - 所有路径必须使用绝对路径 - 确保所有脚本文件有执行权限 - 定期检查日志文件以便排查问题 - 不要在公共场合分享包含密码的配置文件 ## 日志文件 - 脚本日志:`/home/appop/Development/ShellScripts/db_conn_tools/log/script_log/YYYYMMDD.log` - 记录脚本的基本执行日志 - 执行历史:`/home/appop/Development/ShellScripts/db_conn_tools/log/machine_log/YYYYMMDD/exec_history_主机名.txt` - 记录SQL执行详细记录 ## 错误处理 - 脚本会检查参数是否完整 - 检查SQL文件是否存在 - 自动创建不存在的输出目录 - 记录详细的错误信息到日志文件 - 重要错误会同时输出到标准错误输出 ## 设置别名(推荐) 为了方便使用,可以在你的shell配置文件(如`~/.bashrc`、`~/.zshrc`等)中添加以下别名: ```bash # 数据库连接工具主命令别名 alias db_execute="bash /home/appop/Development/ShellScripts/db_conn_tools/bin/main.sh" # 密码加密和解密工具别名 alias db_encrypt="bash /home/appop/Development/ShellScripts/db_conn_tools/config/encrypt.sh" alias db_decrypt="bash /home/appop/Development/ShellScripts/db_conn_tools/config/decrypt.sh" ``` 添加别名后,运行以下命令使别名生效: ```bash # 对于bash用户 source ~/.bashrc # 对于zsh用户 source ~/.zshrc ``` 使用别名后的命令示例: ```bash # 执行数据库查询 db_execute db_test /home/user/query.sql /home/user/result.txt # 加密密码 db_encrypt "明文密码" # 解密密码 db_decrypt "加密密码" ``` ## 支持的数据库类型 ### MySQL - 通过 `mysql_execute_sql` 函数执行MySQL查询 - 使用MYSQL_PWD环境变量安全传递密码 ### Oracle - 通过 `ora_execute_sql` 函数执行Oracle查询 - 使用临时SQL脚本配置SQL*Plus环境参数 - 支持标准的Oracle连接字符串格式 ### PostgreSQL - 通过 `pg_execute_sql` 函数执行PostgreSQL查询 - 使用PGPASSWORD环境变量安全传递密码 - 支持标准的PostgreSQL连接参数(主机、端口、用户名、数据库名) ## 扩展开发 如需添加新的数据库类型支持,可以在 `config/conn_tools.sh` 文件中实现对应的执行函数。目前已实现了MySQL、Oracle和PostgreSQL的支持,可以按照相同的模式扩展其他数据库类型。 ## 安全建议 - 限制 `config/conn_info.sh` 文件的访问权限 - 定期更改数据库密码和加密密钥 - 避免在生产环境中使用默认的加密密钥 - 考虑使用环境变量存储敏感信息 ## 维护说明 - 定期清理过期日志文件(包括script_log和machine_log目录下的文件) - 备份重要的配置文件 - 确保脚本的执行权限设置正确 - 避免在脚本中硬编码敏感信息