Database JUNKY

MySQL,MariaDBを中心としたブログです

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]