MySQL手册中有介绍。

通常我只是转储数据库并用一个新名称重新导入它。这不是非常大的数据库的一个选项。重命名数据库| SCHEMA} db_name TO new_db_name做坏事,只存在于少数版本中,总的来说是个坏主意。

这需要与InnoDB一起工作,InnoDB存储的东西与MyISAM非常不同。


当前回答

使用以下几个简单的命令:

mysqldump -u username -p -v olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql

或者使用@Pablo Marin-Garcia建议的以下方法来减少I/O:

mysqladmin -u username -p create newdatabase
mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase

其他回答

可以将一个数据库中的所有表重命名为另一个数据库下的所有表,而不必执行完整的转储和恢复。

DROP PROCEDURE IF EXISTS mysql.rename_db;
DELIMITER ||
CREATE PROCEDURE mysql.rename_db(IN old_db VARCHAR(100), IN new_db VARCHAR(100))
BEGIN
SELECT CONCAT('CREATE DATABASE ', new_db, ';') `# create new database`;
SELECT CONCAT('RENAME TABLE `', old_db, '`.`', table_name, '` TO `', new_db, '`.`', table_name, '`;') `# alter table` FROM information_schema.tables WHERE table_schema = old_db;
SELECT CONCAT('DROP DATABASE `', old_db, '`;') `# drop old database`;
END||
DELIMITER ;

$ time mysql -uroot -e "call mysql.rename_db('db1', 'db2');" | mysql -uroot

然而,目标db中的任何触发器都不会开心。您需要先删除它们,然后在重命名后重新创建它们。

mysql -uroot -e "call mysql.rename_db('test', 'blah2');" | mysql -uroot
ERROR 1435 (HY000) at line 4: Trigger in wrong schema

使用以下几个简单的命令:

mysqldump -u username -p -v olddatabase > olddbdump.sql
mysqladmin -u username -p create newdatabase
mysql -u username -p newdatabase < olddbdump.sql

或者使用@Pablo Marin-Garcia建议的以下方法来减少I/O:

mysqladmin -u username -p create newdatabase
mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase

最简单的,打开MYSQL >>选择数据库的名称,你想改变>>点击“操作”,然后把新名称在“重命名数据库:”字段,然后点击“Go”按钮

简单!

在phpmyadmin中,您可以轻松地重命名数据库

select database 

  goto operations tab

  in that rename Database to :

  type your new database name and click go

要求删除旧表和重新加载表数据单击确定

数据库被重命名

执行完整重命名的最简单且万无一失的方法(包括在最后删除旧数据库,因此它是重命名而不是复制):

mysqladmin -uroot -pmypassword create newdbname
mysqldump -uroot -pmypassword --routines olddbname | mysql -uroot -pmypassword newdbname
mysqladmin -uroot -pmypassword drop olddbname

步骤:

复制行到记事本。 替换所有对"olddbname", "newdbname", "mypassword"(+可选的"root")的引用。 在命令行上逐一执行(在提示时输入“y”)。