使用 shell 脚本操作多个 mysql 数据库
步骤 1: 数据库信息文件
首先准备一个包含三个 mysql 数据库信息的文件,例如 db_info.txt
。文件内容如下:
192.168.1.100 3306 root rootpassword1 database1 192.168.1.100 3307 root rootpassword2 database2 192.168.1.100 3308 root rootpassword3 database3
每行表示一个数据库,字段顺序为:
- 主机地址
- 端口号
- 用户名
- 密码
- 数据库名称
步骤 2: 创建 shell 脚本
编写以下脚本,命名为 create_tables.sh
。
#!/bin/bash # 数据库信息文件路径 db_info_file="db_info.txt" # 要执行的 sql 文件 sql_file="create_table.sql" # 检查数据库信息文件是否存在 if [[ ! -f "$db_info_file" ]]; then echo "数据库信息文件 $db_info_file 不存在!" exit 1 fi # 检查 sql 文件是否存在 if [[ ! -f "$sql_file" ]]; then echo "sql 文件 $sql_file 不存在!" exit 1 fi # 遍历数据库信息文件 while read -r host port user password database; do # 确保读取的字段完整 if [[ -z "$host" || -z "$port" || -z "$user" || -z "$password" || -z "$database" ]]; then echo "数据库信息文件格式不正确,跳过行:$host $port $user $database" continue fi echo "连接到数据库 $database ($host:$port)..." # 使用 mysql 命令执行 sql 文件 mysql -h "$host" -p "$port" -u "$user" -p"$password" "$database" < "$sql_file" # 检查执行结果 if [[ $? -eq 0 ]]; then echo "sql 文件已成功执行到 $database。" else echo "sql 文件执行到 $database 失败!" fi echo "--------------------------------------" done < "$db_info_file"
步骤 3: 创建 sql 文件
准备一个示例 sql 文件 create_table.sql
,内容如下:
create table if not exists example_table ( id int auto_increment primary key, name varchar(255) not null, created_at timestamp default current_timestamp );
步骤 4: 设置脚本权限并执行
为脚本赋予执行权限:
chmod +x create_tables.sh
执行脚本:
./create_tables.sh
执行流程:
- 脚本会读取
db_info.txt
文件中的数据库信息。 - 遍历每个数据库,并通过
mysql
命令连接。 - 对每个数据库执行
create_table.sql
中的 sql 语句。 - 显示每个数据库的执行结果。
示例输出:
连接到数据库 database1 (192.168.1.100:3306)... sql 文件已成功执行到 database1。 -------------------------------------- 连接到数据库 database2 (192.168.1.100:3307)... sql 文件已成功执行到 database2。 -------------------------------------- 连接到数据库 database3 (192.168.1.100:3308)... sql 文件已成功执行到 database3。 --------------------------------------
这样,脚本可以灵活地从文件中读取多个数据库信息,并完成指定的 sql 文件执行操作!
到此这篇关于使用shell脚本操作多个mysql数据库的步骤详解的文章就介绍到这了,更多相关shell脚本操作多个mysql数据库内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论