使用Shell腳本操作多個(gè)MySQL數(shù)據(jù)庫(kù)的步驟詳解
使用 Shell 腳本操作多個(gè) MySQL 數(shù)據(jù)庫(kù)
步驟 1: 數(shù)據(jù)庫(kù)信息文件
首先準(zhǔn)備一個(gè)包含三個(gè) MySQL 數(shù)據(jù)庫(kù)信息的文件,例如 db_info.txt。文件內(nèi)容如下:
192.168.1.100 3306 root rootpassword1 database1 192.168.1.100 3307 root rootpassword2 database2 192.168.1.100 3308 root rootpassword3 database3
每行表示一個(gè)數(shù)據(jù)庫(kù),字段順序?yàn)椋?/p>
- 主機(jī)地址
- 端口號(hào)
- 用戶(hù)名
- 密碼
- 數(shù)據(jù)庫(kù)名稱(chēng)
步驟 2: 創(chuàng)建 Shell 腳本
編寫(xiě)以下腳本,命名為 create_tables.sh。
#!/bin/bash
# 數(shù)據(jù)庫(kù)信息文件路徑
DB_INFO_FILE="db_info.txt"
# 要執(zhí)行的 SQL 文件
SQL_FILE="create_table.sql"
# 檢查數(shù)據(jù)庫(kù)信息文件是否存在
if [[ ! -f "$DB_INFO_FILE" ]]; then
echo "數(shù)據(jù)庫(kù)信息文件 $DB_INFO_FILE 不存在!"
exit 1
fi
# 檢查 SQL 文件是否存在
if [[ ! -f "$SQL_FILE" ]]; then
echo "SQL 文件 $SQL_FILE 不存在!"
exit 1
fi
# 遍歷數(shù)據(jù)庫(kù)信息文件
while read -r HOST PORT USER PASSWORD DATABASE; do
# 確保讀取的字段完整
if [[ -z "$HOST" || -z "$PORT" || -z "$USER" || -z "$PASSWORD" || -z "$DATABASE" ]]; then
echo "數(shù)據(jù)庫(kù)信息文件格式不正確,跳過(guò)行:$HOST $PORT $USER $DATABASE"
continue
fi
echo "連接到數(shù)據(jù)庫(kù) $DATABASE ($HOST:$PORT)..."
# 使用 mysql 命令執(zhí)行 SQL 文件
mysql -h "$HOST" -P "$PORT" -u "$USER" -p"$PASSWORD" "$DATABASE" < "$SQL_FILE"
# 檢查執(zhí)行結(jié)果
if [[ $? -eq 0 ]]; then
echo "SQL 文件已成功執(zhí)行到 $DATABASE。"
else
echo "SQL 文件執(zhí)行到 $DATABASE 失??!"
fi
echo "--------------------------------------"
done < "$DB_INFO_FILE"
步驟 3: 創(chuàng)建 SQL 文件
準(zhǔn)備一個(gè)示例 SQL 文件 create_table.sql,內(nèi)容如下:
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: 設(shè)置腳本權(quán)限并執(zhí)行
為腳本賦予執(zhí)行權(quán)限:
chmod +x create_tables.sh
執(zhí)行腳本:
./create_tables.sh
執(zhí)行流程:
- 腳本會(huì)讀取
db_info.txt文件中的數(shù)據(jù)庫(kù)信息。 - 遍歷每個(gè)數(shù)據(jù)庫(kù),并通過(guò)
mysql命令連接。 - 對(duì)每個(gè)數(shù)據(jù)庫(kù)執(zhí)行
create_table.sql中的 SQL 語(yǔ)句。 - 顯示每個(gè)數(shù)據(jù)庫(kù)的執(zhí)行結(jié)果。
示例輸出:
連接到數(shù)據(jù)庫(kù) database1 (192.168.1.100:3306)... SQL 文件已成功執(zhí)行到 database1。 -------------------------------------- 連接到數(shù)據(jù)庫(kù) database2 (192.168.1.100:3307)... SQL 文件已成功執(zhí)行到 database2。 -------------------------------------- 連接到數(shù)據(jù)庫(kù) database3 (192.168.1.100:3308)... SQL 文件已成功執(zhí)行到 database3。 --------------------------------------
這樣,腳本可以靈活地從文件中讀取多個(gè)數(shù)據(jù)庫(kù)信息,并完成指定的 SQL 文件執(zhí)行操作!
到此這篇關(guān)于使用Shell腳本操作多個(gè)MySQL數(shù)據(jù)庫(kù)的步驟詳解的文章就介紹到這了,更多相關(guān)Shell腳本操作多個(gè)MySQL數(shù)據(jù)庫(kù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL 8.0新特性 — 管理端口的使用簡(jiǎn)介
這篇文章主要介紹了MySQL 8.0新特性 — 管理端口的使用簡(jiǎn)介,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下2021-03-03
解決MySQL8.0本地計(jì)算機(jī)上的MySQL服務(wù)啟動(dòng)后停止沒(méi)有報(bào)告任何錯(cuò)誤的問(wèn)題(最新推薦)
解決MySQL服務(wù)啟動(dòng)后停止沒(méi)有報(bào)告任何錯(cuò)誤的方法包括修改my.ini文件編碼為ANSI、修正MySQL服務(wù)可執(zhí)行文件的路徑以及關(guān)閉系統(tǒng)管理中的MySQL80服務(wù),本文介紹解決MySQL8.0本地計(jì)算機(jī)上的MySQL服務(wù)啟動(dòng)后停止沒(méi)有報(bào)告任何錯(cuò)誤,感興趣的朋友一起看看吧2025-03-03
Mysql索引的類(lèi)型和優(yōu)缺點(diǎn)詳解
這篇文章主要為大家詳細(xì)介紹了Mysql索引的類(lèi)型和優(yōu)缺點(diǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09
linux下mysql開(kāi)啟遠(yuǎn)程訪問(wèn)權(quán)限 防火墻開(kāi)放3306端口
這篇文章主要為大家詳細(xì)介紹了linux下mysql開(kāi)啟遠(yuǎn)程訪問(wèn)權(quán)限,防火墻開(kāi)放3306端口,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01
MySQL性能監(jiān)控軟件Nagios的安裝及配置教程
這篇文章主要介紹了MySQL性能監(jiān)控軟件Nagios的安裝及配置教程,這里以CentOS操作系統(tǒng)為環(huán)境進(jìn)行演示,需要的朋友可以參考下2015-12-12
mysql啟動(dòng)失敗之mysql服務(wù)無(wú)法啟動(dòng)(服務(wù)沒(méi)有報(bào)告任何錯(cuò)誤)的解決方法
作為一名程序猿,必不可少的便是和mysql打交道,那當(dāng)mysql故障,服務(wù)無(wú)法啟動(dòng)時(shí)該怎么解決呢,下面這篇文章主要給大家介紹了關(guān)于mysql啟動(dòng)失敗之mysql服務(wù)無(wú)法啟動(dòng),服務(wù)沒(méi)有報(bào)告任何錯(cuò)誤的解決方法,需要的朋友可以參考下2022-05-05
利用MySQL空間函數(shù)實(shí)現(xiàn)位置打卡的完整步驟
這篇文章主要給大家介紹了關(guān)于如何利用MySQL空間函數(shù)實(shí)現(xiàn)位置打卡的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MySQL具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08

