专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

mysql如何更改数据库名(一键实现mysql改数据库名)

由于某种原因,有时我们有可能需要数据库的名称,但是不像官方有rename可以去更改表名,并没有一个命令可以去更新数据库的名字。

思路:借助rename这个命令

基本操作:rename olddb.tables to newdb.tables

但是这个命令碰到视图会出错,也不能把旧库中的函数,存储过程,事件移过来,对于这一些,我们可以从旧库中导出这些定义,再导入到新库中。我们不可能一个个去改,得借助脚本。

脚本实现的逻辑思路:

1、查看要改的新旧库是否存在,来判断是否需要进一步处理

2、先用rename把所有的表移到新命名的库中

3、导出旧库中的视图,函数,存储过程,事件。

4、导入新库中

5、删除旧库

这个方法把全部数据导出再导入来得更快。

完整的脚本如下(操作前请作好备份):

[chenzejin@localhost sh_script]$ cat mysql_rename_database.sh 
#!/bin/bash

#script_name: mysql_rename_database.sh
MYSQL_USER='root'
MYSQL_PASSWD='123'
MYSQL_BIN='/usr/local/mysql/bin'
HOSTS=127.0.0.1 
PORT=3310

if [ $# -ne 2 ];
then 
  echo "usage:./mysql_rename_database.sh oldDB newDB"
  exit
fi
user_identify=" -h$HOSTS -P$PORT -u$MYSQL_USER -p$MYSQL_PASSWD "

oldDB_exist=`$MYSQL_BIN/mysql $user_identify  -ss -e " select schema_name from information_schema.schemata where schema_name=""'"$1"'"  `
newDB_exist=`$MYSQL_BIN/mysql $user_identify  -ss -e " select schema_name from information_schema.schemata where schema_name=""'"$2"'"  `

if [ -z "$oldDB_exist" -o -n "$newDB_exist" ];
then
 echo "Database $1 does not exist or Database $2 exist ,please confirm! "
 exit 1
fi

#dump all views
DUMPTIME=`date +%Y%m%d_%H%M%S`
list_views=$($MYSQL_BIN/mysql $user_identify -Nse "select table_name from information_schema.TABLES where table_type='view' and TABLE_SCHEMA=""'"$1"'")  

for view in $list_views
do     
  $MYSQL_BIN/mysqldump $user_identify   --no-create-db --no-data $1 $view >> all_views_DB_$1_$DUMPTIME.sql
done

#dump function ,triger ,events
$MYSQL_BIN/mysqldump -F -R -E $user_identify  --no-create-db --no-create-info --no-data $1 >> all_views_DB_$1_$DUMPTIME.sql

#create new databases;
$MYSQL_BIN/mysql $user_identify -e "create database $2"
list_table=$($MYSQL_BIN/mysql $user_identify -Nse "select table_name from information_schema.TABLES where table_type='base table' and TABLE_SCHEMA=""'"$1"'")  

for table in $list_table 
do     
  $MYSQL_BIN/mysql $user_identify -e "rename table $1.$table to $2.$table" 
done

#import views,function ,triger ,events
$MYSQL_BIN/mysql $user_identify $2 < all_views_DB_$1_$DUMPTIME.sql

#remove old database
$MYSQL_BIN/mysql $user_identify -e "drop database $1"
未经允许不得转载:搜云库技术团队 » mysql如何更改数据库名(一键实现mysql改数据库名)

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们