如何重命名MySQL数据库?
MySQL在线手册中提到了RENAME DATABASE命令(Oracle早已删除了此文档页面):
该语句是在MySQL 5.1.7中添加的,但是发现它很危险,并在MySQL 5.1.23中被删除。
那么,如何进行呢?基本原理:我们从项目的代码名称开始,现在希望数据库名称能够反映项目的明确名称。
如何重命名MySQL数据库?
MySQL在线手册中提到了RENAME DATABASE命令(Oracle早已删除了此文档页面):
该语句是在MySQL 5.1.7中添加的,但是发现它很危险,并在MySQL 5.1.23中被删除。
那么,如何进行呢?基本原理:我们从项目的代码名称开始,现在希望数据库名称能够反映项目的明确名称。
Answers:
从这个宜兰哈杉的博客文章:
在MySQL中,不支持数据库重命名。为了重命名MySQL数据库,您可以执行以下操作之一:
创建新数据库并将旧数据库中的所有表重命名为新数据库中的:
CREATE database new_db_name;
RENAME TABLE db_name.table1 TO new_db_name, db_name.table2 TO new_db_name;
DROP database db_name;
在Linux Shell中,使用mysqldump备份旧数据库,然后使用MySQL实用程序以新名称还原转储的数据库。最后,使用drop database命令删除旧数据库。对于大型数据库,此选项可能会导致性能下降。
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"
编写一个简单的Linux脚本(我最喜欢的解决方案)
#!/bin/bash
dbuser=xxxx
dbpass=xxxx
olddb=xxxx
newdb=xxxx
mysqlconn="mysql -u $dbuser -p$dbpass -h localhost"
$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";
echo "Renamed $olddb.$name to $newdb.$name";
done;
#$mysqlconn -e "DROP DATABASE $olddb"
如果所有表都是MyISAM,则可以重命名旧数据库文件夹名称:
SELECT CONCAT('olddb.', TABLE_NAME, ' TO newdb.', TABLE_NAME, ',') FROM INFORMATION_SCHEMA.TABLES WHERE table_schema='olddb';
;
MySQL对此很烂。唯一可靠的解决方案是使用phpMyAdmin
。
Login
- > click Scheme
- > click Operations
- >查找Rename database to:
- >写NewName
> click Go
。
就如此容易。所有权限都会被保留。
我找到了一个非常简单的解决方案:关闭MySQL,重命名数据库目录并重新启动。就这样!
如果您有SQL代码或引用旧名称的数据,则有些危险。然后,您还需要在重新启动应用程序之前进行更改。但是我不需要这样做,但是YMV。
谷歌搜索提供了以下两个指针: