方法一
RENAME database olddbname TO newdbname
这个语法在 mysql-5.1.7 中被添加进来,到了mysql-5.1.23又去掉了,官方不推荐,会有丢失数据的危险!
方法二
- 创建需要改成新名的数据库;
- mysqldump 导出要改名的数据库;
- mysqldump 导入新数据库;
- 删除原来的旧库(确定是否真的需要)
当然这种方法虽然安全,但是如果数据量大,会比较耗时。
#创建数据库
CREATE DATABASE IF NOT EXISTS `库名` default charset utf8mb4 COLLATE utf8mb4_unicode_ci;
# 将db1库备份到db1.sql文件
mysqldump -u root -p db1 > /tmp/db1.sql;
#Enter password:
#[root@xxx ~]#
# 导入备份文件到新库db2
mysql -u root -p db2 < /tmp/db1.sql;
#Enter password:
#[root@xxx ~]#
# 删除旧库(如果真的需要)
DROP DATABASE db1;
方法三
编写并执行脚本
脚本newdatabase.sh
#!/bin/bash
# 假设将db1数据库名改为db2
# MyISAM直接更改数据库目录下的文件即可
# 下面脚本是创建新数据库,获取旧数据库所有表名,将其循环移动到新数据库
mysql -uroot -p123456 -e 'create database if not exists db2'
list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA='db1'")
for table in $list_table
do
mysql -uroot -p123456 -e "rename table db1.$table to db2.$table"
done
执行脚本
[root@xxx script]# mysql --version
mysql Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL)
[root@xxx script]# bash newdatabase.sh
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
#mysql:[警告]在命令行界面使用密码可能是不安全的。
参考文章:https://blog.csdn.net/heshihu2019/article/details/134673101