日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:52010
  • 待審:67
  • 小程序:12
  • 文章:1106242
  • 會員:784

此腳本自動創建 MySQL 數據庫的備份、恢復它們以及管理目標 MySQL 服務器上的數據庫和用戶創建。

導入子流程
導入日期時間
導入系統
導入操作系統

def check_and_create_database(主機、端口、用戶名、密碼、數據庫):
    # 檢查數據庫是否存在的命令
    check_database_command = f"mysql -sN --host={主機} --port={端口} --user={用戶名} --password={密碼} -e "SELECT EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '{數據庫}')" 2>/dev/null"

    # 執行命令
    輸出 = subprocess.check_output(check_database_command, shell=True)

    # 如果輸出包含b'1',則數據庫存在
    如果輸出中有 b'1':
        subprocess.run(check_database_command, shell=True, check=True)
        print(f"數據庫'{database}'已經存在。")
        系統退出(1)
    別的:
        # 如果命令失敗,則數據庫不存在
        print(f"數據庫 '{database}' 不存在。正在創建...")

        # 創建數據庫的命令
        create_database_command = f"mysql --host={主機} --port={端口} --user={用戶名} --password={密碼} -e '創建數據庫 {數據庫}' 2>/dev/null"
        subprocess.run(create_database_command, shell=True)

def check_and_create_user(主機、端口、用戶名、密碼、數據庫、新用戶名、新密碼):
    # 檢查用戶是否存在的命令
    check_user_command = f"mysql -sN --host={主機} --port={端口} --user={用戶名} --password={密碼} -e "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = '{new_username}')" 2>/dev/null"

    # 執行命令
    輸出 = subprocess.check_output(check_user_command, shell=True)

    # 如果輸出包含b'1',則用戶存在
    如果輸出中有 b'1':
        print(f"用戶'{new_username}'已經存在。")
        系統退出(1)
    別的:
        # 用戶不存在,創建
        print(f"用戶 '{new_username}' 不存在。正在創建...")

        # 創建用戶并授予權限的命令
        create_user_command = f"mysql --host={主機} --port={端口} --user={用戶名} --password={密碼} -e "創建用戶'{new_username}'@'%' 識別者' {新密碼}';將 {database}.* 上的所有權限授予 '{new_username}'@'%';刷新權限;“2>/dev/null”
        subprocess.run(create_user_command, shell=True)

def backup_mysql_database(主機、端口、用戶名、密碼、數據庫、備份路徑):

    # 檢查備份目錄是否存在
    如果不是 os.path.exists(backup_path):
        print(f"錯誤:備份目錄'{backup_path}'不存在。")
        系統退出(1)

    # 使用當前日期和時間為備份創建文件名
    時間戳 = datetime.datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
    backup_file = f"{備份路徑}/{數據庫}_{時間戳}.sql"

    # 使用mysqldump創建數據庫備份的命令
    dump_command = f"mysqldump --no-tablespaces --host={主機} --port={端口} --user={用戶名} --password={密碼} {數據庫} > {備份文件} 2>/dev/無效的”

    # 執行mysqldump命令
    subprocess.run(dump_command, shell=True)

    返回備份文件

def Restore_mysql_database(主機、端口、用戶名、密碼、數據庫、備份文件):
    # 使用 mysql 從備份恢復數據庫的命令
    Restore_command = f"mysql --host={主機} --port={端口} --user={用戶名} --password={密碼} {數據庫} /dev/null"

    # 執行mysql命令
    subprocess.run(restore_command, shell=True)

def main():
    # 源MySQL數據庫的連接參數
    源主機=“127.0.0.1”
    源端口=“3309”
    源用戶名=“我的用戶”
    源密碼=“我的密碼”
    源數據庫=“我的數據庫”

    # 目標MySQL數據庫的連接參數
    目標主機=“127.0.0.1”
    目標端口=“3309”
    新用戶名 = "新用戶名"
    新密碼 = "新密碼"
    target_database =“my_database_two”

    目標用戶名=“root”
    目標密碼=“根密碼”

    # 本地保存備份的路徑
    backup_path =“my_dbs_dumps”

    # 檢查source_database與target_database是否不同
    如果源數據庫==目標數據庫:
        print("錯誤:源數據庫應該與目標數據庫不同。")
        系統退出(1)

    # 檢查目標數據庫,如果不存在則創建
    check_and_create_database(目標主機、目標端口、目標用戶名、目標密碼、目標數據庫)

    # 檢查目標用戶,如果不存在則創建
    check_and_create_user(目標主機、目標端口、目標用戶名、目標密碼、目標數據庫、新用戶名、新密碼)

    # 創建MySQL數據庫的備份
    backup_file = backup_mysql_database(源主機、源端口、源用戶名、源密碼、源數據庫、備份路徑)
    print(f"已創建數據庫備份:{backup_file}")

    # 從備份中恢復目標服務器上的數據庫
    Restore_mysql_database(目標主機、目標端口、目標用戶名、目標密碼、目標數據庫、備份文件)
    print("數據庫備份已在目標服務器上恢復。")

如果 __name__ == "__main__":
    主要的()

登錄后復制

檢查并創建_數據庫:
此函數檢查 MySQL 服務器上是否存在數據庫。如果數據庫不存在,則會創建它。它需要主機、端口、用戶名、密碼和數據庫名稱等參數來檢查或創建。

檢查并創建_用戶:
與數據庫函數一樣,該函數檢查 MySQL 服務器上是否存在用戶。如果用戶不存在,它將創建用戶并授予特定數據庫的權限。它還接受主機、端口、用戶名、密碼、數據庫名稱、新用戶名和新密碼等參數。

backup_mysql_database:
此函數使用 mysqldump 執行 MySQL 數據庫的備份。它需要主機、端口、用戶名、密碼、數據庫名稱和保存備份文件的路徑等參數。

restore_mysql_database:
此函數從備份文件恢復 MySQL 數據庫。它接受主機、端口、用戶名、密碼、數據庫名稱和備份文件路徑等參數。

主要:
這是該腳本的主要功能。它為源和目標 MySQL 數據庫設置參數,包括連接詳細信息、數據庫名稱和備份路徑。然后,它執行檢查以確保源數據庫和目標數據庫不同,如果目標數據庫和用戶不存在,則創建目標數據庫和用戶,創建源數據庫的備份,最后將備份恢復到目標數據庫。

此外,該腳本使用 subprocess 模塊執行 MySQL 操作的 shell 命令(mysql、mysqldump),并執行錯誤處理和輸出重定向(2>/dev/null)以抑制不必要的輸出。

如果您正在使用 MySQL 數據庫并想要創建自動化,此代碼將為您提供幫助。

這段代碼是一個很好的起始模板,用于創建管理 MySQL 數據庫的自動化腳本。

dmi@dmi-laptop:~/my_python$ python3 mysql_backup_restore.py 
數據庫“my_database_two”不存在。創造...
用戶“new_username”不存在。創造...
創建數據庫備份:my_dbs_dumps/my_database_2024-05-13_20-05-24.sql
數據庫備份恢復到目標服務器上。
dmi@dmi-laptop:~/my_python$ 

登錄后復制

ask_dima@yahoo.com

分享到:
標簽:MySQL Python 創建 備份 數據庫
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 52010

    網站

  • 12

    小程序

  • 1106242

    文章

  • 784

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定