リポジトリの準備と既存パッケージの削除
システムのパッケージ管理を最新化し、既存のデータベース関連パッケージとの競合を防ぐため、事前に確認と削除を行います。
# 既存のMySQL/MariaDB確認
rpm -qa | grep -E 'mysql|maria'
# 競合パッケージの削除
sudo yum remove -y mariadb-libs次に、YumリポジトリをAliyunミラーに変更し、ローカルキャッシュを更新します。
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum clean all && sudo yum makecacheMySQL 5.7のインストール
MySQLの公式リポジトリを追加し、デフォルトで有効になっている新しいバージョンを無効化して5.7系を有効にした後、インストールを実行します。
# 公式リポジトリの追加
sudo yum localinstall -y https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
# 8.0を無効化し5.7を有効化
sudo yum-config-manager --disable mysql80-community
sudo yum-config-manager --enable mysql57-community
# インストール実行
sudo yum install -y mysql-community-serverサービスの起動と初期設定
インストール完了後、サービスを起動し自動起動を有効にします。初回起動時には証明書の有効期限切れエラーを防ぐため、システム全体のアップデートを実施しておくことを推奨します。
sudo yum update -y
sudo systemctl start mysqld
sudo systemctl enable mysqldルートパスワードの変更とリモート接続設定
ログファイルから初期パスワードを取得し、ログイン後にセキュリティ設定を調整します。
# 初期パスワードの抽出
TEMP_PASS=$(sudo grep 'temporary password' /var/log/mysqld.log | tail -n 1 | awk '{print $NF}')
mysql -u root -p"$TEMP_PASS"MySQLにログインしたら、パスワードポリシーを緩和し、新しいパスワードを設定します。
SET GLOBAL validate_password_policy=LOW;
SET GLOBAL validate_password_length=6;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ss1234';外部ホストからのアクセスを許可するユーザーを作成します(セキュリティの観点からrootではなく専用ユーザーを作成します)。
CREATE USER 'remote_admin'@'%' IDENTIFIED BY 'P@ss1234';
GRANT ALL PRIVILEGES ON *.* TO 'remote_admin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;文字コードの設定
デフォルトの文字コードをUTF-8に変更するため、設定ファイルを編集します。
# /etc/my.cnf の編集
[mysqld]
character-set-server=utf8mb4
[client]
default-character-set=utf8mb4設定を反映させるため、MySQLサービスを再起動します。
sudo systemctl restart mysqld