MySQL / MariaDB 重新命名数据库

以前 MySQL 的 “RENAME DATABASE” 指令, 已经在 5.1.23 后的版本删除, 原因是重新命名数据库时存在资料遗失的风险。

以下示范用 “RENAME TABLE” 指令及 mysqldump 指令, 替数据库重新命名的方法:

RENAME TABLE

这个方法适合数据库比较大的情况, 但缺点是需要对每个资料表逐一执行。

先建立一个空白的数据库, 名称用要变更的数据库名称, 以下假设旧数据库是 oldname; 新数据库是 newname:

然后把资料表逐一用 RENAME 指令从 oldname 搬到 newname:

上面指令需要对每个资料表逐一执行。


如果不想逐个资料表执行, 可以使用以下指令, 它会从 “show tables” 读取资料表列表, 然后自动执行 rename, 以下是例子需要将 “password” 修改成 mysql root 的密码, 并将新、旧数据库名称改成实际需要:

mysqldump

如果数据库不是很大, 可以用 mysqldump 指令完成:

$ mysqldump -u root -p -v oldname > oldname.sql
$ mysqladmin -u root -p create newname
$ mysql -u root -p newname < oldname.sql

Leave a Reply