Linux環境におけるMySQL 5.7のバイナリインストールと初期設定手順

環境確認とパッケージ取得

本ガイドでは、64ビットLinux環境へのMySQL 5.7(バイナリ版)の導入手順を解説します。まず、アーキテクチャを確認し、公式アーカイブから直接パッケージを取得します。

# 64ビット環境であることを確認
getconf LONG_BIT

# 作業ディレクトリに移動し、MySQL 5.7.38をダウンロード
cd /tmp
wget https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz

展開とディレクトリ構成の整備

ダウンロードしたアーカイブを展開し、所定のインストールパスへ配置します。

# アーカイブを展開
tar -zxvf mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz -C /usr/local/

# ディレクトリ名を簡潔に変更
cd /usr/local/
mv mysql-5.7.38-linux-glibc2.12-x86_64 mysql

専用ユーザーとデータディレクトリの作成

セキュリティ向上のため、MySQL専用のシステムユーザーとグループを作成し、データ保存用のディレクトリを準備します。

# グループとユーザーの作成(ログイン不可の設定)
groupadd -r mysqlgrp
useradd -r -g mysqlgrp -s /sbin/nologin mysqlusr

# データディレクトリの作成と権限付与
mkdir -p /usr/local/mysql/data
chown -R mysqlusr:mysqlgrp /usr/local/mysql

設定ファイル(my.cnf)の構成

サーバーの動作を制御するため、/etc/my.cnf を作成し、以下の内容を記述します。

[mysqld]
port = 3306
basedir = /usr/local/mysql
datadir = /usr/local/mysql/data
max_connections = 500
max_connect_errors = 100
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-storage-engine = INNODB
default_authentication_plugin = mysql_native_password

[mysql]
default-character-set = utf8mb4

[client]
port = 3306
default-character-set = utf8mb4

データベースの初期化

データディレクトリを初期化し、システムデータベースを構築します。この際、一時的なルートパスワードが生成されるため、必ず控えておきます。

# 初期化コマンドの実行
cd /usr/local/mysql/bin
./mysqld --defaults-file=/etc/my.cnf --user=mysqlusr --initialize

# 生成された一時パスワードを確認
grep 'temporary password' /usr/local/mysql/data/*.err

サービスの起動とセキュリティ設定

MySQLサーバーを起動し、初期パスワードの変更およびリモート接続用のユーザー設定を行います。

# サーバーの起動
/usr/local/mysql/support-files/mysql.server start

# クライアントツールでログイン(一時パスワードを入力)
./mysql -u root -p

ログイン後、以下のSQLを実行してパスワードを更新し、リモートアクセス用のアカウントを新規作成します。rootユーザーのホストを直接変更するよりも、専用アカウントを作成する方がセキュリティ上推奨されます。

-- ルートパスワードの変更と期限無効化
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewSecurePassword123!';
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;

-- リモート接続専用ユーザーの作成と権限付与
CREATE USER 'admin_remote'@'%' IDENTIFIED BY 'RemotePass456!';
GRANT ALL PRIVILEGES ON *.* TO 'admin_remote'@'%' WITH GRANT OPTION;

-- 権限の反映
FLUSH PRIVILEGES;
EXIT;

systemdを用いた自動起動設定

モダンなLinux環境に合わせて、systemd を利用したサービス管理と自動起動を設定します。/etc/systemd/system/mysql.service を作成し、以下の内容を記述します。

[Unit]
Description=MySQL 5.7 Community Server
After=network.target

[Service]
Type=forking
User=mysqlusr
Group=mysqlgrp
ExecStart=/usr/local/mysql/support-files/mysql.server start
ExecStop=/usr/local/mysql/support-files/mysql.server stop
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target

ユニットファイルを作成したら、デーモンをリロードしてサービスを有効化します。

# デーモンのリロードとサービス有効化
systemctl daemon-reload
systemctl enable mysql
systemctl start mysql

# ステータスの確認
systemctl status mysql

タグ: MySQL linux DatabaseAdministration systemd bash

8月27日 10:08 投稿