Windowsのバッチファイルを使い、MySQLのユーザーを作成し、そのユーザーを使ってDBを復元する方法を解説します。
山括弧<…>で囲まれている箇所は、ご自身の環境に合わせて書き換える必要があります。
MySQLのインストール
こちらからMySQL (mysql-installer-community-*.msi) をダウンロードします。
ダウンロードしたら同MSIファイルを実行し、インストールします。
インストール過程での設定は、すべてデフォルトのままで結構です。
ユーザーrootのパスワードはrootで設定した前提で進めます。
ユーザー作成
batファイルは以下のように作成します。
@echo off
set CWD=%~dp0
REM DBサーバー名
Set ServerName=localhost
REM ユーザー情報
Set RootUserID=root
Set RootPassword=root
Set UserID=<作成したいユーザー名>
Set Password=<作成したいユーザーのパスワード>
REM ログ出力先
Set LogPath=%CWD%
REM 起動パラメーター
if "%1"=="" (set ServerName=%ServerName%) Else (set ServerName=%1)
if "%2"=="" (set UserID=%UserID%) Else (set UserID=%2)
if "%3"=="" (set Password=%Password%) Else (set Password=%3)
if "%~4"=="" (set LogPath=%LogPath%) Else (set LogPath=%~4)
REM ログ出力
Set cmdlog=%LogPath%\CreateUserBat.log
Set sqllog=%LogPath%\CreateUserSql.log
echo User Create start. > %cmdlog%
echo ServerName=%ServerName% >> %cmdlog%
echo UserID=%UserID% >> %cmdlog%
REM ユーザー作成
mysql --host=%ServerName% --user=%RootUserID% --password=%RootPassword% -e "create user %UserID% identified by '%Password%';" > %sqllog% 2>&1
REM 権限付与
If %errorlevel%==0 (
mysql --host=%ServerName% --user=%RootUserID% --password=%RootPassword% -e "grant all on *.* to %UserID% with grant option;" >> %sqllog% 2>&1
)
REM 終了
echo User Create Result=%errorlevel% >> %cmdlog%
exit /b %errorlevel%
DB復元
batファイルは以下のように作成します。
@echo off
set CWD=%~dp0
REM DBサーバー名
Set ServerName=localhost
REM ユーザー情報
Set UserID=<上記で作成したユーザー>
Set Password=<上記で作成したユーザーのパスワード>
REM データベース情報
Set Database=<データベース名>
REM DBファイル名
Set inFilePath=<復元したいDBのファイルパス(e.g. C:\mysql\db.dmp)>
REM ログ出力先
Set LogPath=%CWD%
REM 起動パラメーター
if "%1"=="" (set ServerName=%ServerName%) Else (set ServerName=%1)
if "%~2"=="" (set inFilePath=%inFilePath%) Else (set inFilePath=%~2)
if "%3"=="" (set Database=%Database%) Else (set Database=%3)
if "%~4"=="" (set LogPath=%LogPath%) Else (set LogPath=%~4)
if "%5"=="" (set UserID=%UserID%) Else (set UserID=%5)
if "%6"=="" (set Password=%Password%) Else (set Password=%6)
REM ログ出力
Set sqllog="%LogPath%\RestoreSql.log"
Set cmdlog="%LogPath%\RestoreBat.log"
REM 絶対パスに変換
call :GET_FILENAME "%inFilePath%"
Set inFilePath=%TmpPath%
echo DB setup start. > %cmdlog%
echo ServerName=%ServerName% >> %cmdlog%
echo inFilePath=%inFilePath% >> %cmdlog%
echo UserID=%UserID% >> %cmdlog%
echo Database=%Database% >> %cmdlog%
REM 接続確認
mysql --host=%ServerName% --user=%UserID% --password=%Password% %Database% -e "select 0;" > %sqllog% 2>&1
REM DB作成
If not %errorlevel%==0 (
mysql --host=%ServerName% --user=%UserID% --password=%Password% -e "CREATE SCHEMA `%Database%`;" >> %sqllog% 2>&1
)
REM 復元開始
If %errorlevel%==0 (
mysql --host=%ServerName% --user=%UserID% --password=%Password% %Database% < "%inFilePath%" >> %sqllog% 2>&1
)
REM 終了
echo DB setup Result=%errorlevel% >> %cmdlog%
GOTO :END
:GET_FILENAME
rem -%変数 を完全修飾パス名に展開します。
Set TmpPath=%~f1
GOTO :EOF
:END
exit /b %errorlevel%
TIPS
- WebサイトとCGIを構築する方法はこちらをご覧下さい。
コメント