色々なマイナーバージョンの検証を行うなどMySQLの環境を作り直す機会があるので自動で構築を行うようにします。
構築の仕方はMySQL8.0構築で記載していますので今回はこちらをbashで構築を自動化します
自動化
mariadbの削除
mariadb=`rpm -qa mariadb-libs`
#mariadbがあるか確認して、あったら削除します
if [ "$mariadb" != "" ]; then
yum remove mariadb-libs -y
fi
- mysqlが既に入っている場合に削除します
- 依存関係で先に削除されてエラーになるものもありますが、無視します
- うまい方法がわかったら後日修正します
#mysql関連のパッケージを取得
mysql_packages=$(rpm -qa mysql-community-*)
if [ "$mysql_packages" != "" ]; then
#動いている場合は止める
systemctl stop mysqld.server
rm -rf /var/lib/mysql
rm /var/log/mysqld.log
#mysql関連のパッケージを全て削除
for mysql_pakage in $mysql_packages; do
yum remove -y $mysql_pakage
done
fi
リポジトリの設定
#既に入っていても再度実行しても問題ない
rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-2.noarch.rpm
- 鍵のimport
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
MySQLのインストール
yum install mysql-community-server -y
- MySQLの起動
systemctl start mysqld.service
パスワードの変更
password=`grep "temporary password is generated for root@localhost" /var/log/mysqld.log | awk -F "localhost: " '{print $2}'`
#環境変数にすることで
export MYSQL_PWD=$password
- ランダムなパスワードに変更してパスワードをファイルに保存する
- ランダムなパスワードの生成方法はこちらを参考にしましたので仕組みが気になる方は見てみてください
new_password=`cat /dev/urandom | tr -dc 'a-zA-Z0-9!@#$%^&*()_+-=[]{}<>?' | fold -w 16 | head -n 1`
- パスワードを変更して、ファイルにパスワードを保存
mysql -uroot --connect-expired-password -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '${new_password}';"
echo "${new_password}" > root_pass.txt
これでMySQL8.0構築が完了しました
追加
パッケージバージョンの指定
- 古いバージョンとの比較など古いバージョンを入れるケースがあるのでバージョンを指定出来るようにする
#バージョンが引数にあった場合にversionをセット
if [ $1 != "" ]; then
version="-$1"
else
version=""
fi
yum install mysql-community-server$version -y
これでバージョン指定でインストールが可能になりました
今回作ったものは下記に置いておきます
https://github.com/swing-by/init_mysql
コメント