MySQLのユーザー情報を一括で設定するshellとか・・
適当感は否定できないですが・・・MySQLサーバのユーザー設定を一括で行うshellです。当該shellは、 ・root なんでもありの神様アカウント ・sysadm データベース管理全般(DBA用) ・sysusr サービスで利用するアカウント ・slave レプリケーションで利用するアカウント
の4アカウントのパスワードを設定します。たぶん、MySQLインストールの初期設定程度にしか使わないですが、それでもMySQLを利用するシステムって複数台同時にセットアップなんてことをやるかと思いましたのでそういう方には便利かな?とか思って掲載しました。
MySQLのベースはRPMでインストールしたもので検証しております。
・mysql_user_create.sh [shell]
!/bin/bash
echo "#" echo "# mysql のユーザー情報を設定する " echo "#"
共通変数
日付ファイル
_wdate=date +"%Y%m%d%H%M%S"
各種コンフィグファイルのバックアップ用のディレクトリを指定
_backupdir=/backups/${HOSTNAME}
ワーク用のディレクトリを指定(このディレクトリ配下に作成されたファイルは削除されます
_workdir=/tmp
ネットワーク関連のディレクトリファイル
_work="/tmp"
grant file
sqlfile="grant${_wdate}.sql"
初期処理
if [ ! -d $backupdir ]; then echo "create directory $backupdir" mkdir -p $_backupdir fi
if [ ! -d $workdir ]; then echo "create directory $workdir" mkdir -p $_workdir fi
passwd
rootpasswd=rootpass sysadmpasswd=sysadmpass sysusrpasswd=sysusrpass slavepasswd=slavepass
accepthost
_accepthost="192.168.101.0/255.255.255.0"
mysql user 情報設定ファイルの生成
cat << EOF > ${work}/${sqlfile} -- root set password for root@localhost=password('${rootpasswd}'); set password for root@127.0.0.1=password('${rootpasswd}'); grant all privileges on . to root@'${accepthost}' IDENTIFIED BY '${rootpasswd}';
-- sysadm grant ALTER,ALTER ROUTINE,CREATE,CREATE VIEW,DELETE,DROP,EXECUTE,FILE,INDEX,INSERT,LOCK TABLES,PROCESS,RELOAD,SELECT,TRIGGER,UPDATE,SUPER on . to sysadm@'${accepthost}' IDENTIFIED BY '${sysadmpasswd}'; grant ALTER,ALTER ROUTINE,CREATE,CREATE VIEW,DELETE,DROP,EXECUTE,FILE,INDEX,INSERT,LOCK TABLES,PROCESS,RELOAD,SELECT,TRIGGER,UPDATE,SUPER on . to sysadm@'localhost' IDENTIFIED BY '${sysadmpasswd}'; grant ALTER,ALTER ROUTINE,CREATE,CREATE VIEW,DELETE,DROP,EXECUTE,FILE,INDEX,INSERT,LOCK TABLES,PROCESS,RELOAD,SELECT,TRIGGER,UPDATE,SUPER on . to sysadm@'127.0.0.1' IDENTIFIED BY '${sysadmpasswd}';
-- sysusr grant SELECT,INSERT,UPDATE,DELETE on . to sysusr@'localhost' IDENTIFIED BY '${sysusrpasswd}'; grant SELECT,INSERT,UPDATE,DELETE on . to sysusr@'127.0.0.1' IDENTIFIED BY '${sysusrpasswd}'; grant SELECT,INSERT,UPDATE,DELETE on . to sysusr@'${accepthost}' IDENTIFIED BY '${sysusrpasswd}';
-- slave grant REPLICATION SLAVE on . to slave@'${accepthost}' IDENTIFIED BY '${slavepasswd}'; grant REPLICATION SLAVE on . to slave@'127.0.0.1' IDENTIFIED BY '${sysusrpasswd}'; grant REPLICATION SLAVE on . to slave@'${accepthost}' IDENTIFIED BY '${_slavepasswd}';
-- delete delete from mysql.user where user = ''; delete from mysql.user where password = '';
flush privileges;
EOF
設定のバックアップ
cp ${work}/${sqlfile} ${_backupdir}/
mysql -u root < ${work}/${sqlfile}
rm -f ${work}/${sqlfile}
exit 0
[/shell]