blog - MySQLのユーザ登録を一括でバッチ処理する方法

MySQLのユーザ登録を一括でバッチ処理する方法

カテゴリ : 
コンピュータ
執筆 : 
kuha 2011-05-10 14:12
LinuxなどのコマンドラインからMySQLのCREATEUSERとかをバッチで一括で実行するには、以下のとおり。

まず、MySQLのCREATEUSERで一人分のユーザを登録するシェルスクリプトのバッチファイルをfoo.shなどとして保存する。
以下の例では、引数に文字列 *** を指定すると、MySQLのアカウント名は user*** 、パスワードは、 pass*** となる。さらに、アカウント名と同じ名前のデータベースを作成して(CREATE DATABASE)、全権限を与えている(GRANT ALL PRIVILEGES)。MySQLサーバはlocalhostとしている。

name=`printf user"$1"`
passw=`printf pass"$1"`
echo "CREATE USER '$name'@'localhost' IDENTIFIED BY  '$passw';"
echo "GRANT USAGE ON * . * TO  '$name'@'localhost' IDENTIFIED BY  '$passw' WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;"
echo "CREATE DATABASE IF NOT EXISTS  \`$name\` ;"
echo "GRANT ALL PRIVILEGES ON  \`$name\` . * TO  '$name'@'localhost';"
echo ""

次に、foo.shをすべてのアカウント分を実行するシェルスクリプトをfoo.sh.txtなどとテキストファイルにする。この例では、文字列として、001, 002, 003 .....といった3桁の連番を指定する。このテキストファイルは、エクセルのオートフィルなどで連番の数字を生成すると簡単に作成できる。結果として、アカウント名は、user001,user002,user003......となる。

sh foo.sh 001
sh foo.sh 002
sh foo.sh 003
sh foo.sh 004
sh foo.sh 005
....


さらに、以下のように、foo.sh.txtを実行すると、人数分のCREATEUSERを実行するMySQLのスクリプトが書き出されるので、テキストファイルmysql_foo.sh.txtに保存する。

sh foo.sh.txt > mysql_foo.sh.txt

最後に、以下のようにmysql_foo.sh.txtに保存されたスクリプトをMySQLに読み込ませて実行し、アカウントを生成する。

mysql -u hoge -p < mysql_foo.sh.txt

なお、-pオプションにパスワードを記述するとパスワードを聞かれない。

トラックバック

トラックバックpingアドレス http://www.kuhalabo.net/kxoops/modules/d3blog/tb.php/66
スポンサードリンク
検索

blogカテゴリ一覧

blogger一覧

blogアーカイブ