■ 仕様概要
以下のようなルールで実装してみる* 同一階層に置かれたダンプファイル(拡張子「*.sql」)を実行する * ダンプファイル名は、データベース名として使用する
手順概要
[1] DB作成 [2] 権限の追加 [3] ダンプファイルをインポートする
■ サンプル
#!/bin/sh echo "Let's get it started"; # Setting Values dbUserId=admin; dbUserPassword=Admin1@Tokyo; dbRootId=root; dbRootPassword=Root2@Osaka; # ディレクトリ内の拡張子「*.sql」を繰り返して処理する for sqlDumpFileName in *.sql; { # ファイル名をデータベース名として使用する dbName=`basename"@sqlDumpFileName" .sql`; echo "======================================="; # Step1: DB作成 echo "Step1: To create DB ${dbName}."; sqlToCreateDb="CREATE DATABASE \`${dbName}\`"; mysql -u${dbRootId} -p${dbRootPassword} -e "${sqlToCreateDb}"; # Step2: 権限の追加 echo "Step2: To add Authority."; sqlToExecteGrantForLocal="GRANT ALL PRIVILEGES ON \`${dbName}\`.* TO \`${dbUserId}\`@\`local\` IDENTIFIED BY '${dbUserPassword}' WITH GRANT OPTION;"; mysql -u${dbRootId} -p${dbRootPassword} -e "${sqlToExecteGrantForLocal}"; sqlToExecteGrantForAll="GRANT ALL PRIVILEGES ON \`${dbName}\`.* TO \`${dbUserId}\`@\`*\` IDENTIFIED BY '${dbUserPassword}' WITH GRANT OPTION;"; mysql -u${dbRootId} -p${dbRootPassword} -e "${sqlToExecteGrantForAll}"; mysql -u${dbRootId} -p${dbRootPassword} -e "FLUSH PRIVILEGES;"; # Step3: ダンプファイルをインポートする echo "Step3: To import the dump file ${sqlDumpFileName}."; mysql -u${dbRootId} -p${dbRootPassword} ${dbName} < ${sqlDumpFileName}; } echo "DONE !!!!!!!!!!!!!";
■ 補足:使用している小技
ディレクトリ内の指定した拡張子のファイル名を取得する
for 【変数・ファイル名が格納】 in *.【拡張子】; { # 繰り返し処理 }
ファイル名から拡張子なしを取り除く
http://qiita.com/ktr_type23/items/94747a4b27e8a630ce48【変数・拡張子なしのファイル名】=`basename 【ファイル名】 .【拡張子】`;
シェルでSQL文を実行する
http://takuya-1st.hatenablog.jp/entry/2015/03/22/123510mysql -u【DBユーザID】 -p【DBユーザパスワード】 -e "【SQL文】";