CentOS Stream 8 にMySQL5.5.62をソースインストールする
篠原 隆司
アフィリエイト広告を利用しています
このページの内容が役に立ったら X (旧twitter) でフォローして頂けると励みになります
挨拶や報告は無しで大丈夫です
CentOS Stream 8 にMySQL5.5.62をソースインストールしていってみたいと思います。
今回のこだわりポイントは「複数バージョンの同居」です。
まずは第一弾としてMySQL5.5.62をインストールします。
なお本番環境で利用される場合はここにある内容だけを鵜呑みにせずセキュリティ専門家に相談されることをお勧めします。
環境
実施日 | 2021-08-12 |
サーバ | VMware ESXi 6.7 U3 |
OS | CentOS Stream 8 |
cat /etc/redhat-release
CentOS Stream release 8
MySQLをインストールする準備
事前準備がまだの場合は先に▼をご覧ください。
こちらが済んだ前提で進めていきます。
https://aulta.co.jp/archives/8811
ファイルのダウンロード
https://downloads.mysql.com/archives/community/
「Product Version」「5.5.62」を選択。
「Operating System」は「Source Code」を選択。
一番下「mysql-5.5.62.tar.gz」の欄にある「Download」を押さずにリンク先URLを取得します。
Google Chrome なら「Download」ボタンを右クリックして「リンクのアドレスをコピー」です。
で、URLがこちら▼。URLは後で使います。
https://downloads.mysql.com/archives/get/p/23/file/mysql-5.5.62.tar.gz
インストール
変数の設定
MYSQL_PORT_NO=55562
MYSQL_VERSION=5.5.62
MYSQL_CHARACTER_SET=utf8
MYSQL_COLLATION=utf8_general_ci
MYSQL_DATA_BASE_DIR=/usr/local/lib/mysql-$MYSQL_VERSION
# (開発用) MYSQL_DATA_BASE_DIR=/mnt/wd2tb/lib/mysql/mysql-$MYSQL_VERSION
インストール
# 確認
ls -la /usr/local/src
# インストールディレクトリ作成
mkdir -p /usr/local/src/mysql-$MYSQL_VERSION
# 移動
cd /usr/local/src/mysql-$MYSQL_VERSION
# ソースコード取得
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.5.62.tar.gz
# 解凍
tar xzf mysql-$MYSQL_VERSION.tar.gz
# 移動 (後から一気に飛んでくるためにフルパス)
cd /usr/local/src/mysql-$MYSQL_VERSION/mysql-$MYSQL_VERSION
# インストール
cmake . \
-DCMAKE_INSTALL_PREFIX=/usr/local/lib/mysql-$MYSQL_VERSION \
-DDEFAULT_CHARSET=$MYSQL_CHARACTER_SET \
-DWITH_EXTRA_CHARSETS=all \
-DDEFAULT_COLLATION=$MYSQL_COLLATION \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_PIC=1 \
-DSYSCONFDIR=/usr/local/lib/mysql-$MYSQL_VERSION \
-DMYSQL_DATADIR=/usr/local/lib/mysql-$MYSQL_VERSION/data
make
make test
make install
# クライアントのインストール
cd client
make
make test
make install
# オーナーを変更
chown -R mysql:mysql /usr/local/lib/mysql-$MYSQL_VERSION
# ディレクトリを作成
mkdir -p $MYSQL_DATA_BASE_DIR/data
mkdir -p $MYSQL_DATA_BASE_DIR/tmp
mkdir -p $MYSQL_DATA_BASE_DIR/logs
chown -R mysql:mysql $MYSQL_DATA_BASE_DIR
# ファイルの作成
touch $MYSQL_DATA_BASE_DIR/logs/mysqld.err
chown -R mysql:mysql $MYSQL_DATA_BASE_DIR/logs/mysqld.err
# データディレクトリの初期化
/usr/local/lib/mysql-$MYSQL_VERSION/scripts/mysql_install_db \
--user=mysql \
--basedir=/usr/local/lib/mysql-$MYSQL_VERSION \
--datadir=$MYSQL_DATA_BASE_DIR/data
# my.cnf
ls -la /usr/local/lib/mysql-$MYSQL_VERSION
# なかった cp /usr/local/lib/mysql-$MYSQL_VERSION/my.cnf /usr/local/lib/mysql-$MYSQL_VERSION/my.cnf.backup
cp /root/template_my.cnf /usr/local/lib/mysql-$MYSQL_VERSION/my.cnf
# 確認
cat /usr/local/lib/mysql-$MYSQL_VERSION/my.cnf
# my.cnf : ポートの変更
sed -i -e "s/\[_PORT_NO_\]/$MYSQL_PORT_NO/g" /usr/local/lib/mysql-$MYSQL_VERSION/my.cnf
# my.cnf : バージョンの変更
sed -i -e "s/\[_MYSQL_VERSION_\]/$MYSQL_VERSION/g" /usr/local/lib/mysql-$MYSQL_VERSION/my.cnf
# my.cnf : データディレクトリの変更
sed -i -e "s@\[_MYSQL_DATA_BASE_DIR_\]@$MYSQL_DATA_BASE_DIR@g" /usr/local/lib/mysql-$MYSQL_VERSION/my.cnf
# my.cnf : 文字コードの変更
sed -i -e "s/\[_CHARACTER_SET_\]/$MYSQL_CHARACTER_SET/g" /usr/local/lib/mysql-$MYSQL_VERSION/my.cnf
# 手作業での調整
vi /usr/local/lib/mysql-$MYSQL_VERSION/my.cnf
# リンク
ln -s /usr/local/lib/mysql-$MYSQL_VERSION/lib /usr/local/lib/mysql-$MYSQL_VERSION/lib64
とりあえず確認
/usr/local/lib/mysql-$MYSQL_VERSION/bin/mysql -V
/usr/local/lib/mysql-5.5.62/bin/mysql Ver 14.14 Distrib 5.5.62, for Linux (x86_64) using EditLine wrapper
バージョンアップのとき
# 念のため元ファイルをバックアップ
cp -a $MYSQL_DATA_BASE_DIR $MYSQL_DATA_BASE_DIR-backup
# (開発用) cp -a /mnt/wd2tb/lib/mysql /mnt/wd2tb/lib/mysql-backup
# ディレクトリのリネーム (バージョン変更)
mv /usr/local/lib/mysql-5.5.[以前のバージョン] $MYSQL_DATA_BASE_DIR
# (開発用) mv /mnt/wd2tb/lib/mysql/mysql-5.5.62 /mnt/wd2tb/lib/mysql/mysql-5.5.62
# 所有者の変更
chown -R mysql:mysql $MYSQL_DATA_BASE_DIR
# (開発用) chown -R mysql:mysql /mnt/wd2tb/lib/mysql
# /etc/rc.d/init.d に追加
cp /usr/local/lib/mysql-$MYSQL_VERSION/support-files/mysql.server /etc/rc.d/init.d/mysql-$MYSQL_VERSION
# 手動起動
/etc/rc.d/init.d/mysql-$MYSQL_VERSION
バージョンアップのときはここで終了
初期設定
cp /usr/local/lib/mysql-$MYSQL_VERSION/support-files/mysql.server /etc/rc.d/init.d/mysql-$MYSQL_VERSION
自動起動設定
複数バージョンの同居前提なので、自動起動はせず必要になったときに手動起動
chkconfig --add mysql-$MYSQL_VERSION
chkconfig --list mysql-$MYSQL_VERSION
手動起動
/usr/local/lib/mysql-$MYSQL_VERSION/bin/mysqld_safe --defaults-extra-file=/usr/local/lib/mysql-$MYSQL_VERSION/my.cnf &
起動したあとは使えなくなるので、もう一個ターミナルを起動して操作
rootで接続
/usr/local/lib/mysql-$MYSQL_VERSION/bin/mysql -u root
SET PASSWORD FOR root@localhost=PASSWORD('rootパスワード');
use mysql;
delete from user where user = '';
flush privileges;
show variables like 'character_set%';
quit;
rootユーザーをリモート接続できるようにする
とはいえどこからでもじゃなく、指定したIPアドレスからだけ許可します。
/usr/local/lib/mysql-$MYSQL_VERSION/bin/mysql -u root -p
use mysql;
# 確認
select user,host from mysql.user;
# 登録
grant all privileges on *.* to root@"192.168.xxx.xxx" identified by 'rootパスワード' with grant option;
# 確認
select user,host from mysql.user;
quit;
次の2カ所は変えてください
- root@"192.168.xxx.xxx"
- rootパスワード
CentOS7のファイアーウォールにmysqlのリモート接続を登録します。
firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="IPアドレス" port protocol="tcp" port="ポート番号" accept"
systemctl restart firewalld.service
次の2カ所は変えてください
- IPアドレス ・・・ 接続するPC (192.168.x.x)
- ポート番号 ・・・ MySQLのポート番号(55562)
手動起動を停止する
/usr/local/lib/mysql-$MYSQL_VERSION/support-files/mysql.server stop
よく使うコマンド
MYSQL_VERSION=5.5.62
MYSQL_DATA_BASE_DIR=/usr/local/lib/mysql-$MYSQL_VERSION
# (開発用) MYSQL_DATA_BASE_DIR=/mnt/wd2tb/lib/mysql/mysql-$MYSQL_VERSION
# 起動
/etc/init.d/mysql-$MYSQL_VERSION start
# 停止
/etc/init.d/mysql-$MYSQL_VERSION stop
# 手動起動
/usr/local/lib/mysql-$MYSQL_VERSION/bin/mysqld_safe --defaults-extra-file=/usr/local/lib/mysql-$MYSQL_VERSION/my.cnf &
# 手動停止
/usr/local/lib/mysql-$MYSQL_VERSION/support-files/mysql.server stop
# 設定確認
vi /usr/local/lib/mysql-$MYSQL_VERSION/my.cnf
# エラーログ
tail -n 100 $MYSQL_DATA_BASE_DIR/logs/mysqld.err
# 自動起動設定
chkconfig --list mysql-$MYSQL_VERSION
# 終了
quit;
# パスワード変更
ALTER USER 'root'@'localhost' IDENTIFIED BY 'rootパスワード';
# 文字コードの確認
show variables like 'character_set%';