UPDATE 2011: I’ve created another blog post on this subject which describes an easier way of importing SQL files directly from the command line with MySQL. The method on the new blog post describes how to do it in one step directly from the command line. Check it out!
So I guess this is more a note for me and anyone else who has a tendency to forget nifty little tricks like this one.
A quick way to duplicate MySQL databases is to do the following:
Step 1: Dump the database either through PHPMyAdmin’s export form or through mysqldump (as I mentioned above). Note (usually, it’s mysqldump <database-name> -h<hostname> -u<username> -p<password> if you ommit the -h switch it will default to “localhost”). After you enter the command below and press enter, you will be prompted for a password because you did not enter the password after the -p switch.
$ mysqldump <database-name> -u<username> -p >> somedatabasetable.sql
Step 2: Once you have the sql file, log into mysql and create a database or “use” an existing database – again, ommiting the -h will default to localhost and you will be prompted for a password if you don’t enter a password after the -p switch.
$ mysql -u<username> -p
Step 3: After logging in, you will need to either create a new database and select the database for use with the import, or use an existing database. For this example, we’ll create a new database. Remember to use backticks and not apostrophe’s to create your new MySQL database.
mysql> create database `somedb`
Step 4: Alright! Now we’re ready to start using! Issue a “use” statement to select the empty database
mysql> use `somedb`
Step 5: Remember where you put the SQL file and issue a “source” command:
mysql> source somedatabasetable.sql
The query is executed and if you didn’t mess around with the SQL produced by mysqldump, it should run things flawlessly.
For reference, the database version I was working with is MySQL 5.0.45 and the mysqldump version I was working with is 10.11 on my development rig.