如何重命名 MySQL 数据库?

如何重命名 MySQL 数据库?

如何重命名 MySQL 数据库?

MySQL 在线手册已经介绍了有关 RENAME DATABASE 命令的内容(该文档页面不久前已被 Oracle 删除):

该语句在 MySQL 5.1.7 中添加,但被发现有危险并在 MySQL 5.1.23 中删除。

那么,该如何进行呢?理由是:我们从项目的代码名称开始,现在希望数据库名称能够反映项目的最终名称。

答案1

Ilan Hazan 的博客文章:

MySQL 不支持数据库重命名。要重命名 MySQL 数据库,您可以执行以下操作之一:

  1. 创建新数据库并将旧数据库中的所有表重命名为新数据库中的表:

     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;
    
  2. 在 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"
    
  3. 编写一个简单的 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
           sql="RENAME TABLE \`$olddb\`.\`$name\` to \`$newdb\`.\`$name\`" 
           echo "$sql";
           $mysqlconn -e "$sql";
           echo "Renamed $olddb.$name to $newdb.$name";
     done;
    
     #$mysqlconn -e "DROP DATABASE \`$olddb\`"
    
  4. 如果您的所有表都是 MyISAM,则可以重命名旧的数据库文件夹名称:

    1. 关闭 MySQL 服务器,
    2. 将数据库文件夹名称重命名为新名称,
    3. 启动 MySQL 服务器。

答案2

MySQL 在这方面有点糟糕。唯一可靠的解决方案是使用phpMyAdmin

Login--> click Scheme--> click Operations--> 查找Rename database to:--> 写入NewName> click Go

就这么简单。所有权限均已转移。

答案3

我发现了一个非常简单的解决方案:关闭 MySQL,重命名数据库目录并重新启动。就这样!

如果您有引用旧名称的 SQL 代码或数据,则有点危险。然后,您还需要在重新启动应用程序之前对其进行更改。但我不需要这样做,但 YMV。

谷歌搜索给出了如下两个提示:

https://stackoverflow.com/questions/67093/how-do-i-quickly-rename-a-mysql-database-change-schema-name

http://www.delphifaq.com/faq/databases/mysql/f574.shtml

答案4

我使用以下方法重命名数据库

  1. 使用 mysqldump 或任何 DB 工具(例如 heidiSQL、mysql 管理员等)备份文件

  2. 在某些文本编辑器中打开备份(例如 backupfile.sql)文件。

  3. 搜索并替换数据库名称并保存文件。

  4. 恢复编辑后的sql文件

相关内容