CentOS 7でMySQL 8.0をバイナリアーカイブからインストールする手順

このガイドでは、CentOS 7環境にMySQL 8.0をバイナリ圧縮ファイルから手動でインストールする方法を解説します。

1. 既存のMariaDBを削除

# インストール済みパッケージを確認
rpm -qa | grep mariadb

# 存在する場合のみアンインストール
sudo rpm -e --nodeps $(rpm -qa | grep mariadb)

2. MySQLバイナリアーカイブの取得

公式サイトより、glibcバージョンに合ったバイナリをダウンロードしてください。
現在のglibcバージョンは以下のコマンドで確認できます:

rpm -q glibc

ダウンロード後、サーバーに転送して準備します。

3. インストール手順

※ 以前のMySQLインストールが存在する場合は、関連ディレクトリ・ユーザー・設定ファイルを事前に完全削除してください。

3.1 アーカイブ展開

sudo mkdir -p /opt/mysql8
sudo tar --strip-components=1 -xJf mysql-*.tar.xz -C /opt/mysql8

3.2 専用ユーザーとグループ作成

sudo groupadd dbadmin
sudo useradd -r -g dbadmin -s /bin/false dbadmin

3.3 権限設定

cd /opt
sudo chown -R dbadmin:dbadmin mysql8
cd mysql8
sudo mkdir -p storage/logs storage/data
sudo chown -R dbadmin:dbadmin storage

3.4 設定ファイル作成

sudo tee /etc/my.cnf > /dev/null <<'EOF'
[mysqld]
port=3306
basedir=/opt/mysql8
datadir=/opt/mysql8/storage/data
socket=/tmp/mysql.sock
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default-storage-engine=InnoDB
max_connections=300
max_connect_errors=20
skip-name-resolve
lower_case_table_names=1
log-error=/opt/mysql8/storage/logs/error.log
pid-file=/opt/mysql8/storage/mysql.pid
max_allowed_packet=128M
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

[client]
default-character-set=utf8mb4
EOF

3.5 初期化

cd /opt/mysql8
sudo -u dbadmin ./bin/mysqld --initialize --user=dbadmin --basedir=/opt/mysql8 --datadir=/opt/mysql8/storage/data

3.6 サービス登録

sudo cp support-files/mysql.server /etc/init.d/mysqld8
sudo chmod +x /etc/init.d/mysqld8
sudo chkconfig --add mysqld8
sudo chkconfig mysqld8 on
sudo ln -sf /opt/mysql8/bin/mysql /usr/local/bin/

4. MySQLサービス起動

sudo service mysqld8 start
sudo service mysqld8 status

5. 初期パスワード取得とログイン

sudo grep 'temporary password' /opt/mysql8/storage/logs/error.log
mysql -u root -p

6. パスワード変更

ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourNewSecurePassword123!';
FLUSH PRIVILEGES;

7. リモート接続許可(必要時)

USE mysql;
CREATE USER 'admin'@'%' IDENTIFIED BY 'StrongRemotePassword456!';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

※ ファイアウォールまたはクラウドセキュリティグループでポート3306の受信を許可してください。本番環境では強力なパスワードを使用することを推奨します。

タグ: MySQL CentOS glibc

7月10日 02:11 投稿