システムユーザーとMySQLユーザーを自動で登録
6 9 月 2008
システムユーザーとMySQLユーザーを自動で登録
ユーザーを登録するときに行うことは
① useraddコマンドを実行する。
② passwdコマンドを実行する。
MySQLユーザーを登録するときに行うことは、
① rootユーザーでMySQLにログインする。
② MySQLユーザーを登録する。
③ MySQLユーザー用のデータベースを登録する。
こんな感じでしょうか?
システムユーザーの登録方法は覚えているとしても
MySQLユーザーを登録す作業は結構忘れることがあるのではないでしょうか
これを、何回もしている人であれば、コマンドも覚えているでしょうけど、
たまに追加をするときとかは、忘れていることとかがありますよね?
僕だけでしょうか?
まぁ~、その一連の行為を自動でできるようにしたら、楽かなと思いますので、
そういうスクリプトを作っちゃいます。
まず、必要なものをインストールする # yum -y install expect 登録用スクリプトを新規で作成 # vi sysuser.sh -------------------- ここから -------------------- #!/bin/bash # ログファイル名 LOG="sysuser.sh.log" # 自ドメイン名 DOMAIN="deai.name" # MySQLサーバー名 HOST="localhost" # ユーザー登録時のオプションを指定 OPT=" -s /sbin/nologin" while : do case "$1" in "-i" ) if [ "$2" = "" ] ; then echo -e "\n Usage: ./sysuser.sh [option] [username] [password] [rootpass] " echo -e "\n ユーザー名を指定してください。\n" exit 1 elif [ "$3" = "" ] ; then echo -e "\n Usage: ./sysuser.sh [option] [username] [password] [rootpass] " echo -e "\n パスワードを指定してください。\n" exit 1 fi echo "システムもMySQLユーザーも作成する場合 a"; echo "システムユーザーのみ作成する場合 s"; echo "MySQLユーザーのみ作成する場合 m"; echo -e "どちらも作成しない場合 n\n\n"; while [ 1 ]; do echo "[All/System/MySQL/No]: " read line case $line in [aA]*) echo "" >> $LOG echo `date` >> $LOG expect -c " spawn useradd$OPT $2 expect \"#\" spawn passwd $2 expect \"Password:\" send \"$3\\r\" expect \"Password:\" send \"$3\\r\" expect \"#\" spawn chmod 711 /home/$2 interact " >> $LOG expect -c " spawn mysql -u root -p expect \"Password: \" send \"$4\\r\" expect \"mysql>\" send \"grant all privileges on $2.* to $2@$HOST identified by '$3';\\r\" expect \"mysql>\" send \"exit\\r\" expect \"#\" spawn mysql -u $2 -p expect \"Password: \" send \"$3\\r\" expect \"mysql>\" send \"create database $2;\\r\" expect \"mysql>\" send \"show databases;\\r\" expect \"mysql>\" send \"exit\\r\" interact " >> $LOG date=`date` echo "INS DATE = $date" >> $2.txt echo "User ID = $2" >> $2.txt echo "PASSWORD = $3" >> $2.txt echo "HTTP = http://$2.$DOMAIN/" >> $2.txt echo " " >> $2.txt echo "MySQL ID = $2" >> $2.txt echo "MySQL PASS = $3" >> $2.txt cat $2.txt | nkf -s > mailnkf.txt cat mailnkf.txt | mail -s "Thanks $2" $2@$DOMAIN break ;; [sS]*) echo "" >> $LOG echo `date` >> $LOG expect -c " spawn useradd$OPT $2 expect \"#\" spawn passwd $2 expect \"Password:\" send \"$3\\r\" expect \"Password:\" send \"$3\\r\" expect \"#\" spawn chmod 711 /home/$2 interact " >> $LOG break ;; [mM]*) echo "" >> $LOG echo `date` >> $LOG expect -c " spawn mysql -u root -p expect \"Password: \" send \"$4\\r\" expect \"mysql>\" send \"grant all privileges on $2.* to $2@$HOST identified by '$3';\\r\" expect \"mysql>\" send \"exit\\r\" expect \"#\" spawn mysql -u $2 -p expect \"Password: \" send \"$3\\r\" expect \"mysql>\" send \"create database $2;\\r\" expect \"mysql>\" send \"show databases;\\r\" expect \"mysql>\" send \"exit\\r\" interact " >> $LOG break ;; [nN]*) break ;; esac done break ;; "-d" ) if [ "$2" = "" ] ; then echo -e "\n Usage: ./sysuser.sh [option] [username] [password] [rootpass] " echo -e "\n ユーザー名を指定してください。\n" exit 1 elif [ "$3" = "" ] ; then echo -e "\n Usage: ./sysuser.sh [option] [username] [password] [rootpass] " echo -e "\n パスワードを指定してください。\n" exit 1 fi echo "システムもMySQLユーザーも削除する場合 a"; echo "システムユーザーのみ削除する場合 s"; echo "MySQLユーザーのみ削除する場合 m"; echo -e "どちらも削除しない場合 n\n\n"; while [ 1 ]; do echo "[All/System/MySQL/No]: " read line case $line in [aA]*) echo "" >> $LOG echo `date` >> $LOG userdel -r $2 >> $LOG expect -c " spawn mysql -u $2 -p expect \"Password: \" send \"$3\\r\" expect \"mysql>\" send \"drop database $2;\\r\" expect \"mysql>\" send \"exit\\r\" expect \"#\" spawn mysql -u root -p expect \"Password: \" send \"$4\\r\" expect \"mysql>\" send \"revoke all privileges on *.* from $2@$HOST;\\r\" expect \"mysql>\" send \"delete from mysql.user where user='$2' and host='$HOST';\\r\" expect \"mysql>\" send \"select user from mysql.user where user='$2';\\r\" expect \"mysql>\" send \"flush privileges;\\r\" expect \"mysql>\" send \"exit\\r\" interact " >> $LOG break ;; [sS]*) echo "" >> $LOG echo `date` >> $LOG userdel -r $2 >> $LOG break ;; [mM]*) echo "" >> $LOG echo `date` >> $LOG expect -c " spawn mysql -u $2 -p expect \"Password: \" send \"$3\\r\" expect \"mysql>\" send \"drop database $2;\\r\" expect \"mysql>\" send \"exit\\r\" expect \"#\" spawn mysql -u root -p expect \"Password: \" send \"$4\\r\" expect \"mysql>\" send \"revoke all privileges on *.* from $2@$HOST;\\r\" expect \"mysql>\" send \"delete from mysql.user where user='$2' and host='$HOST';\\r\" expect \"mysql>\" send \"select user from mysql.user where user='$2';\\r\" expect \"mysql>\" send \"flush privileges;\\r\" expect \"mysql>\" send \"exit\\r\" interact " >> $LOG break ;; [nN]*) break ;; esac done break ;; "-s" ) grep $2 /etc/passwd echo " " ls -l /home/$2 echo " " expect -c " spawn mysql -u root -p expect \"Enter password:\" send \"$4\\r\" expect \"mysql>\" send \"select user from mysql.user where user='$2';\\r\" expect \"mysql>\" send \"exit\\r\" " echo "" break ;; * ) echo -e "\nUsage: ./sysuser.sh [option] [username] [password] [rootpass]\n" echo -e " Option: -i:入力 -d:削除 -s:検索\n\n" break ;; esac done exit 0 -------------------- ここまで -------------------- ※1 このスクリプトで作成されるホームページアドレスは 例) http://server.lunq.net/ もし下記のようなら、 http://www.lunq.net/~server/ 72行目の、 http://$2.$DOMAIN/ の部分を http://www.$DOMAIN/~$2/ もしくは http://$DOMAIN/~$2/ に変更してください。 # chmod +x sysuser.sh |
これで、システムユーザーと、MySQLユーザーを一括で追加できる。 使い方は、
下記コマンドでヘルプを参照 # ./sysuser.sh Usage: ./sysuser.sh [option] [username] [password] [rootpass] Option: -i:入力 -d:削除 -s:検索 説明 ) [option] は上記参照 [username] 追加、または削除したいユーザー名を記述 [password] 追加、または削除したいユーザーのパスワードを記述 [rootpass] MySQLのrootユーザーのパスワードを記述 例 ) ① 新規作成 # ./sysuser.sh -i server himitu roothimitu ② ユーザー削除 # ./sysuser.sh -d server himitu roothimitu ③ ユーザー検索 # ./sysuser.sh -s server himitu roothimitu その後で、追加と削除の場合は、下記メッセージがでる。 ① 新規作成 # ./sysuser.sh -i server himitu roothimitu システムもMySQLユーザーも作成する場合 a システムユーザーのみ作成する場合 s MySQLユーザーのみ作成する場合 m どちらも作成しない場合 n [All/System/MySQL/No]: ② ユーザー削除 # ./sysuser.sh -d server himitu roothimitu システムもMySQLユーザーも削除する場合 a システムユーザーのみ削除する場合 s MySQLユーザーのみ削除する場合 m どちらも削除しない場合 n [All/System/MySQL/No]: という感じで、4つから選べるようにしました。 両方登録したいときは、a を入力して Enter システムのみは s を入力して Enter MySQLのみは m を入力して Enter キャンセルするときは n を入力して Enter これで、どちらか片方だけ登録ということもできます。 |
これで完了ですが、登録するときや削除のときは時間がかかります。
固まったかな?と思ってももう少しお待ちを。
だいたい、10秒 ~ 30秒かかることもありますので。
Comments are closed.
