重命名 MySQL 数据库

没有一个命令可以重命名 MySQL 数据库,但可以使用简单的解决方法通过备份和恢复来实现:

mysqladmin -uroot -p<password> create <new name>
mysqldump -uroot -p<password> --routines <old name> | mysql -uroot -pmypassword <new name>
mysqladmin -uroot -p<password> drop <old name>

脚步:

  1. 将上面的行复制到文本编辑器中。
  2. 将所有对 <old name><new name><password>(+可选 root 以使用不同用户)的引用替换为相关值。
  3. 在命令行上逐个执行(假设 MySQLbin 文件夹在路径中并在提示时输入 y)。

替代步骤:

将每个表从一个 db 重命名(移动)到另一个 db。为每个表执行此操作:

RENAME TABLE `<old db>`.`<name>` TO  `<new db>`.`<name>`;

你可以通过执行类似的操作来创建这些语句

SELECT CONCAT('RENAME TABLE old_db.', table_name, ' TO ',
                           'new_db.', table_name)
    FROM information_schema.TABLES
    WHERE table_schema = 'old_db';

警告。不要通过简单地在文件系统上移动文件来尝试执行任何类型的表或数据库。这在 MyISAM 的旧时代运作良好,但在 InnoDB 和表空间的新时代,它将无法正常工作。特别是当数据字典从文件系统移动到系统 InnoDB 表时,可能在下一个主要版本中。移动(而不仅仅是 DROPping)InnoDB 表的 PARTITION 需要使用可传输的表空间。在不久的将来,甚至都没有可用的文件。