Five ways to safely and quickly modify the Mysql database name

  • 2020-06-12 10:50:58
  • OfStack

1. RENAME DATABASE db_name TO new_db_name

This.. This syntax was added in mysql 5.1.7 and removed in 5.1.23.
The possibility of data loss is said to be possible. It's better not to use it.
See: http: / / dev. mysql. com/doc refman / 5.1 / en/rename - database. html

2. If all the tables are of type MyISAM, you can change the folder name
Close the mysqld
Rename the db_name directory in the data directory to new_db_name
Open mysqld

3. Rename all tables

CREATE DATABASE new_db_name;
RENAME TABLE db_name.table1 TO new_db_name.table1,
db_name.table2 TO new_db_name.table2;
DROP DATABASE db_name;

4. mysqldump exports data and imports it

mysqldump -uxxxx -pxxxx -h xxxx db_name > db_name_dump.SQL
mysql -uxxxx -pxxxx -h xxxx -e  " CREATE DATABASE new_db_name " 
mysql -uxxxx -pxxxx -h xxxx new_db_name < db_name_dump.SQL
mysql -uxxxx -pxxxx -h xxxx -e  " DROP DATABASE db_name " 

5. Rename all tables using the shell script

#!/bin/bash
mysqlconn= " mysql -u xxxx -pxxxx -S /var/lib/mysql/mysql.sock -h localhost " 
olddb= " db_name " 
newdb= " new_db_name " 
#$mysqlconn -e  " CREATE DATABASE $newdb " 
params=$($mysqlconn -N -e  " SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='$olddb' " )
for name in $params; do
$mysqlconn -e  " RENAME TABLE $olddb.$name to $newdb.$name " ;
done;
#$mysqlconn -e  " DROP DATABASE $olddb " 

It's an optimized version of method 3.

Note: These actions are dangerous, so back up your database before performing them!!


Related articles: