- コマンドライン一発叩くだけでデータベースをコピーする
- パスワードなどの情報は別ファイルから読み込む
- warning がすごく出るので取扱い注意
mysql_db_copy_config
$ cd /path/to/your/project
$ vi mysql_db_copy_config
#!/bin/sh
MYSQL_USER="username"
MYSQL_PASSWORD="password"
MYSQL_DBNAME="dbname"
mysql_db_copy
$ cd /path/to/your/project
$ vi mysql_db_copy
#!/bin/sh
cd `dirname $0`
d=`pwd`
# mysql_db_copy_config を読み込む
source $d/mysql_db_copy_config
# コピーしたい DB を sql ファイルにエクスポートする
mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DBNAME > dump.sql
# コピー先の DB が既に存在している場合は、コピー先の DB を削除する
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -e 'drop database `'$MYSQL_DBNAME'_copy`'
# コピー先の DB を新たに作成する
mysqladmin -u $MYSQL_USER -p$MYSQL_PASSWORD create $MYSQL_DBNAME'_copy'
# 先ほどエクスポートした sql ファイルを空の DB にインポートする
mysql -u $MYSQL_USER -p$MYSQL_PASSWORD $MYSQL_DBNAME'_copy' < dump.sql
# sql ファイルを削除
rm -f $d/dump.sql
echo "created database '"$MYSQL_DBNAME"_copy'"
実行
$ cd /path/to/your/project
# ファイル所有者に実行権限を渡す
$ chmod 744 mysql_db_copy_config
$ chmod 744 mysql_db_copy
# 実行
$ mysql_db_copy
mysqldump: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
created database 'your_database_name_copy'