mysqlの環境メンテナンスバッチを作ってみた。

Git

初めに

mysql のSQL構文を忘れてしまうのでDOSバッチでメンテナンスできるものを作ってみました。

今後、拡張していくつもりです。参考にしてください。

このバッチの利点

  1. データベース生成できます。
  2. ユーザ作成できます。
  3. 権限付与できます(すいません。フル権限ですが)
  4. データベース削除できます。
  5. ユーザ削除できます。
  6. 権限削除できます。
  7. テーブル作成用SQLのallsql.sql(固定名です)が実行できます。
  8. データ作成用SQLのalldata.sql(固定名です)が実行できます。
  9. データベース一覧が参照できます
  10. テーブル一覧が参照できます
  11. テーブル一覧表示後、テーブル名入力でデータ確認ができます。
  12. ユーザ権限内容が参照できます。
  13. 繰り返し操作できます。

DOSバッチ内容

echo off
rem ********************************************
rem * データベース、ユーザ操作コマンド         *
rem * 2016.12.22 Create by Dr.Suda             *
rem * 2016.12.24 Update by Dr.Suda             *
rem ********************************************
c:
rem ******************************************************
rem * MYSQLのバージョンおよびパスを入れなおしてください。*
rem ******************************************************
set MYSQL_DIR=C:\Program Files\MySQL\MySQL Server 5.6\bin\

IF EXIST %MYSQL_DIR% (
	cd %MYSQL_DIR%
) ELSE (
	rem set MYSQL_DIR=C:\Program Files\MySQL\MySQL Server 5.7\bin\
	cd "C:\Program Files\MySQL\"
	cd ".\MySQL Server*"
	cd ".\bin"
)

set DB_PW_INPUT_STR= password
set DB_INPUT_STR=
set USR_INPUT_STR=
set USR_PW_INPUT_STR=

set /P DB_PW_INPUT_STR="rootパスワードを入力してください:  "
if %DB_PW_INPUT_STR% == "" (set DB_PW_INPUT_STR=password)
set /P DB_INPUT_STR="データベースを入力してください: "
set /P USR_INPUT_STR="ユーザを入力してください: "
set /P USR_PW_INPUT_STR="ユーザのパスワードを入力してください: "

echo REVOKE ALL PRIVILEGES, GRANT OPTION FROM '%USR_INPUT_STR%'@'localhost';  > "%~dp0REVOKE_USER.sql"
echo drop user '%USR_INPUT_STR%'@'localhost'; > "%~dp0DROP_USER.sql"
echo DROP DATABASE %DB_INPUT_STR%; > "%~dp0DROP_DATABASE.sql"

echo create database %DB_INPUT_STR%;  > "%~dp0CREATE_DATABASE.sql"
echo CREATE USER '%USR_INPUT_STR%'@'localhost' IDENTIFIED BY  '%USR_PW_INPUT_STR%'; > "%~dp0CREATE_USER.sql"
rem echo GRANT all ON %DB_INPUT_STR%.* TO '%USR_INPUT_STR%'@'localhost'; > "%~dp0GRANT_USER.sql"
echo GRANT ALL PRIVILEGES ON %DB_INPUT_STR%.* to '%USR_INPUT_STR%'@'localhost' IDENTIFIED BY '%USR_PW_INPUT_STR%'; > "%~dp0GRANT_USER.sql"
:MENU
rem 遅延環境変数に対応させる
setlocal ENABLEDELAYEDEXPANSION
echo off
echo ========================================================
echo 入力した文字は rootパスワードは %DB_PW_INPUT_STR%  です
echo 入力した文字は データベース %DB_INPUT_STR%  です
echo 入力した文字は ユーザ    %USR_INPUT_STR% / %USR_PW_INPUT_STR% です"
echo ========================================================
echo "1.データベース作成(CREATE_DATABASE.sql)"
echo "2.ユーザ作成(CREATE_USER.sql)"
echo "3.ユーザ権限作成(GRANT_USER.sql)"
echo  -----------------------------------------
echo "4.データベース削除(DROP_DATABASE.sql)"
echo "5.ユーザ削除(DROP_USER.sql)"
echo "6.ユーザ権限削除(REVOKE_USER.sql)"
echo  -----------------------------------------
echo "7.各種テーブル作成(allsql.sql)"
echo "8.各種データ投入(alldata.sql)"
echo  -----------------------------------------
echo "A.show database"
echo "B.show table"
echo "C.select table"
echo "D.show grants"
echo  -----------------------------------------
echo "E.終了"
echo  -----------------------------------------
set /P NUM="上記メニューよりNoを入力してください: "
echo "ただいまからデータベース操作いたします。[No=%NUM%]"
echo "よろしければ何かキーを入力してください。"
echo "中断はCtl+C です。"

echo " "


if "%NUM%"=="1" (
echo "mysql -u root --password=%DB_PW_INPUT_STR% < %~dp0CREATE_DATABASE.sql"
type "%~dp0CREATE_DATABASE.sql"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
mysql -u root --password=%DB_PW_INPUT_STR% < "%~dp0CREATE_DATABASE.sql"
)

if "%NUM%"=="2" (
echo "mysql -u root -p%DB_PW_INPUT_STR% < %~dp0CREATE_USER.sql"
type "%~dp0CREATE_USER.sql"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
mysql -u root -p%DB_PW_INPUT_STR% < "%~dp0CREATE_USER.sql"
)

if "%NUM%"=="3" (
echo "mysql -u root -p%DB_PW_INPUT_STR% < %~dp0GRANT_USER.sql"
type "%~dp0GRANT_USER.sql"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
mysql -u root -p%DB_PW_INPUT_STR% < "%~dp0GRANT_USER.sql"
)

if "%NUM%"=="4" (
echo "mysql -u root -p%DB_PW_INPUT_STR% < %~dp0DROP_DATABASE.sql"
type "%~dp0DROP_DATABASE.sql"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
mysql -u root -p%DB_PW_INPUT_STR% < "%~dp0DROP_DATABASE.sql"
)

if "%NUM%"=="5" (
echo "mysql -u root -p%DB_PW_INPUT_STR% < %~dp0DROP_USER.sql"
type "%~dp0DROP_USER.sql"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
mysql -u root -p%DB_PW_INPUT_STR% < "%~dp0DROP_USER.sql"
)

if "%NUM%"=="6" (
echo "mysql -u root -p%DB_PW_INPUT_STR% < %~dp0REVOKE_USER.sql"
type "%~dp0REVOKE_USER.sql"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
mysql -u root -p%DB_PW_INPUT_STR% < "%~dp0REVOKE_USER.sql"
)

if "%NUM%"=="7" (
echo "mysql -u %USR_INPUT_STR% -p%USR_PW_INPUT_STR% %DB_INPUT_STR% < %~dp0allsql.sql"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
mysql -u %USR_INPUT_STR% -p%USR_PW_INPUT_STR% %DB_INPUT_STR% < "%~dp0allsql.sql"
)

if "%NUM%"=="8" (
echo "mysql -u %USR_INPUT_STR% -p%USR_PW_INPUT_STR% %DB_INPUT_STR% < %~dp0alldata.sql"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
mysql -u %USR_INPUT_STR% -p%USR_PW_INPUT_STR% %DB_INPUT_STR% < "%~dp0alldata.sql"
)

if "%NUM%"=="A" (
echo "mysql -u root -p%DB_PW_INPUT_STR% -e 'show databases;'"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
echo on
mysql -u root -p%DB_PW_INPUT_STR% -e "show databases;"
echo off
)

if "%NUM%"=="B" (
echo "mysql -u %USR_INPUT_STR% -p%USR_PW_INPUT_STR% %DB_INPUT_STR%  -e 'show tables;'"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
echo on
mysql -u %USR_INPUT_STR% -p%USR_PW_INPUT_STR% %DB_INPUT_STR%  -e "show tables;"
echo off
)

if "%NUM%"=="C" (
mysql -u %USR_INPUT_STR% -p%USR_PW_INPUT_STR% %DB_INPUT_STR%  -e "show tables;"
pause
set SEL_TABLE=
set /P SEL_TABLE="上記テーブル名を入力してください :"
if "!SEL_TABLE!"=="" (set SEL_TABLE=t_id_manager)
echo on
echo "mysql -u %USR_INPUT_STR% -p%USR_PW_INPUT_STR% %DB_INPUT_STR%  -e 'select * from !SEL_TABLE! ;'"
mysql -u %USR_INPUT_STR% -p%USR_PW_INPUT_STR% %DB_INPUT_STR%  -e "select * from !SEL_TABLE! ;"
echo off
)

if "%NUM%"=="D" (
rem echo "mysql -u root -p%DB_PW_INPUT_STR% -e 'select * from mysql.user;"
echo mysql -u root -p%DB_PW_INPUT_STR% -e "SHOW GRANTS for '%USR_INPUT_STR%'@'localhost';"
echo ===>上記内容を実行いたします。何かキーを押してください。
pause
echo on
rem mysql -u root -p%DB_PW_INPUT_STR% -e 'select * from mysql.user;"
mysql -u root -p%DB_PW_INPUT_STR% -e "SHOW GRANTS for '%USR_INPUT_STR%'@'localhost';"
echo off
)

if "%NUM%"=="E" GOTO END
endlocal
GOTO MENU
pause

:END
echo "★★★ 完了いたします。お疲れさまでした ★★★"
pause

exit;

操作方法

c:\mysql_cmd  のようにフォルダーを作成してください。このフォルダー配下へ

上記コーディングを、mysqlCmd.bat  みたいにテキスト保存してください。拡張子はbatにしてくださいね。

allsql.sql は delete table と create table と create indexのスキーマ類を格納して準備してください。

alldata.sql は insert文でマスタレコードなど準備してください。

mysqlCms.bat をファイルエクスプローラでダブルクリックでメニューが表示されます。

rootパスワード/データベース名/ユーザID/ユーザIDのパスワード を聞いてきますので入力してください。

それぞれの目的に合わせてNoを入力してください。

まとめ

作ってみたけど、初心者はSQLの入力ミスが多いですがこのコマンドで学習することができました。

自分の環境でデータベースどうだったかなとかユーザは何だったかな(自己拡張)かなってSQLをググらなくてよくなりました。

是非、自己責任で使ってみてください

[amazonjs asin=”4797369450″ locale=”JP” title=”基礎からのMySQL 改訂版 (基礎からシリーズ)”]

[amazonjs asin=”4295000191″ locale=”JP” title=”やさしく学べるMySQL運用・管理入門【5.7対応】”]

Git
スポンサーリンク
sutaruhinをフォローする
システム・スタルヒン合同会社
タイトルとURLをコピーしました