如何修改MySQL數據庫名稱


比如數據庫名稱old_db想改名為new_db

  • MySQL修改數據庫名稱比較麻煩,不支持直接修改,需要通過其它方式間接達到修改數據庫名稱的目的。
  • 在 MySQL 5.1.23 之前的舊版本中,我們可以使用 RENAME DATABASE 來重命名數據庫,但此后版本,因為安全考慮,刪掉了這一條命令。

方法一:先導出數據,再導入數據

當數據庫體積比較小時,最快的方法是使用mysqldump命令來創建整個數據庫的轉存副本,然后新建數據庫,再把副本導入到新數據庫中。

1.1 先創建新庫:

create database new_db;

1.2 使用mysqldump導出數據:

mysqldump -uroot -p123456 --set-gtid-purged=OFF old_db > /tmp/old_db.sql

僅是做普通的本機備份恢復時,可以添加
--set-gtid-purged=OFF
作用是在備份時候不出現GTID信息

1.3 導入數據到新庫:

mysql -uroot -p123456 new_db < /tmp/old_db.sql

方法二:通過修改表名稱,間接實現修改數據庫名稱

使用此方法實際上將所有表從一個數據庫移動到另一個數據庫,這實際上重命名了該數據庫(MySQL沒有單個語句的操作),移動后原始數據庫繼續存在,但是里面沒有表。

RENAME TABLEhttps://dev.mysql.com/doc/refman/5.7/en/rename-table.html

2.1 先創建新庫:

create database new_db;

2.2 使用RENAME TABLE命令修改表名,將表移動到新的庫里:

rename table old_db.tb to new_db.tb;

2.3 完成后刪除舊庫:

drop database old_db;

2.4 如何使用shell腳本來批量修改表名:

  • 當庫下表比較多的時候,用上面方法純手動也不現實,好在linux下可以用shell腳本來批處理。
  • 附上一個shell腳本批量修改表名稱。
#!/bin/bash
mysql -uroot -p123456 -e 'create database if not exists new_db;'
list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='old_db'")

for table in $list_table
do
    mysql -uroot -p123456 -e "rename table old_db.$table to new_db.$table"
done
mysql登陸命令行參數
  • -e, --execute=name # 執行mysql的sql語句
  • -N, --skip-column-names # 不顯示列信息
  • -s, --silent # 一行一行輸出,中間有tab分隔

因為有悔,所以披星戴月;因為有夢,所以奮不顧身! 個人博客首發:easydb.net 微信公眾號:easydb 關注我,不走丟!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM