How to rename a database in MySQL?
I created a database with the name of hrms
. Now I need to change database name to sunhrm
. But, It is disabled in phpMyadmin
Mysql
- asked 9 years ago
- Sandy Hook
2Answer
For InnoDB, the following seems to work: create the new empty database, then rename each table in turn into the new database:
RENAME TABLE old_db.table TO new_db.table;
You will need to adjust the permissions after that.
For scripting in a shell, you can use either of the following:
mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \
do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done
Or
for table in `mysql -u root -s -N -e "show tables from old_db"\`; do mysql -u root -s -N -e "rename table old_db.$table to new_db.$table"; done;`
Notes: there is no space between the option -p
and the password. If your database has no password, remove the -u username -ppassword
part.
Also, if you have stored procedures, you can copy them afterwards:
mysqldump -R old_db | mysql new_db
- answered 8 years ago
- Sunny Solu
I think the solution is simpler and was suggested by some developers. phpMyAdmin has an operation for this.
From phpMyAdmin, select the database you want to select. In the tabs there's one called Operations, go to the rename section. That's all.
It does, as many suggested, create a new database with the new name, dump all tables of the old database into the new database and drop the old database.
- answered 8 years ago
- G John
Your Answer