CentOS 7 と Ubuntu 16.04 に MySQL 5.7 をインストールして設定する

目的と概要
MySQL はオラクル社が開発するオープンソースの関係データベース管理システム(RDBMS)です。GPL で公開されるコミュニティ版に加え、有償の拡張機能を含むエディションも存在します。MySQL は LAMP/LEMP スタックの要として広く利用されています。
この記事では次の手順を行います。
- 最新 MySQL を含むリポジトリを追加する
- MySQL 5.7 をインストールする
- ブート時に自動起動するように設定する
- 初期の root パスワードを確認してリセットする
- テスト用に新規ユーザーとデータベースを作成する
前提条件
- CentOS 7 または Ubuntu 16.04 に root または sudo 権限でログインできること
- インターネット接続があること
Step 1 - 新しいリポジトリを追加する
MySQL は rpm/deb ベースそれぞれに対応する公式リポジトリパッケージを提供しています。まずはシステムに MySQL リポジトリを追加します。
CentOS 7 に対しては以下を実行します。
yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
プロンプトで新しいリポジトリを追加するか尋ねられたら ‘y’ と入力して Enter を押します。
Ubuntu の場合は deb リポジトリパッケージをダウンロードして dpkg でインストールし、リポジトリ情報を更新します。
wget https://dev.mysql.com/get/mysql-apt-config_0.8.3-1_all.deb
dpkg -i mysql-apt-config_0.8.3-1_all.deb
apt-get update
インストール時にどの MySQL バージョンや追加ツールを有効にするか尋ねられます。デフォルトのまま進める場合は ‘Ok’ を選択して Enter を押してください。
新しいリポジトリがシステムに追加されました。
Step 2 - MySQL 5.7 をインストールする
リポジトリが追加されたら、リポジトリ経由で mysql-community-server パッケージをインストールします。
CentOS:
yum -y install mysql-community-server
Ubuntu:
apt-get install -y mysql-community-server
重要: Ubuntu ではインストール中に MySQL root パスワードの入力を求められます。強力なパスワードを入力して再入力してください。
インストールが完了すると MySQL 5.7 がシステムに導入されます。
Step 3 - MySQL を起動しブート時に自動起動するよう設定する
インストール後はサービスを起動して、systemd による自動起動を有効にします。
CentOS(サービス名: mysqld):
systemctl start mysqld
systemctl enable mysqld
Ubuntu(サービス名: mysql):
systemctl start mysql
systemctl enable mysql
MySQL は通常ポート 3306 を使用します。接続ポートを確認するには次のコマンドを利用します。
netstat -plntu
ブート時に自動起動するか確認するには is-enabled を使います。
CentOS:
systemctl is-enabled mysqld
Ubuntu:
systemctl is-enabled mysql
結果が enabled ならブート時に自動的に起動されます。
Step 4 - MySQL root パスワードを設定する
MySQL のインストール直後に root のパスワード設定状態はディストリビューションにより異なります。Ubuntu ではインストール時に対話的に設定されるため、追加設定は不要なことが多いです。一方 CentOS 7 では mysqld 起動時に強力な初期パスワードが自動生成され、/var/log/mysqld.log に出力されます。
CentOS で初期パスワードを確認するには次のコマンドを使用します。
grep 'temporary' /var/log/mysqld.log
ログに表示された一時パスワードで MySQL にログインしてから、必ず新しい強力なパスワードへ変更してください。
mysql -u root -p
TYPE DEFAULT PASSWORD
パスワードを変更する SQL は以下です(例として Newhakase-labs123@ を示しています。必ず固有の強いパスワードを使用してください)。
ALTER USER 'root'@'localhost' IDENTIFIED BY 'Newhakase-labs123@';
flush privileges;
パスワードを変更したら安全のためログを整理し、生成された一時パスワードは残さないでください。
注記: 上記の ALTER USER クエリは CentOS と Ubuntu の両方で root パスワードのリセットに利用できます。
Step 5 - テストと基本操作
新しいパスワードで MySQL に接続し、テスト用データベースとユーザーを作成して権限を付与します。
root で接続:
mysql -u root -p
TYPE NEW PASSWORD: Newhakase-labs123@
データベース作成(例: hakaselabs):
create database hakaselabs;
ユーザー作成(例: hakase):
create user hakase@localhost identified by 'Hakase123@';
データベースに対する権限付与:
grant all privileges on hakaselabs.* to hakase@localhost identified by 'Hakase123@';
flush privileges;
新ユーザーで接続してデータベース一覧を確認します。
mysql -u hakase -p
TYPE THE PASSWORD: Hakase123@
show databases;
以上で MySQL 5.7 の基本インストールと初期設定は完了です。
トラブルシューティングとよくあるケース
重要: 実運用前に必ず次の点を確認してください。特に root パスワード・ファイアウォール・リモート接続設定はセキュリティに直結します。
サービスが起動しない場合
- systemctl status mysqld または systemctl status mysql でログを確認する
- /var/log/mysqld.log または /var/log/mysql/error.log を参照する
- ポート 3306 が別サービスで占有されていないか確認する
パスワードがわからない場合
- CentOS の場合は /var/log/mysqld.log に一時パスワードがあるか確認する
- どうしても接続できない場合は –skip-grant-tables モードで起動して root パスワードをリセットする手順を検討する(その際はダウンタイムとリスクを考慮)
リモートから接続できない場合
- MySQL の bind-address 設定(通常 /etc/my.cnf または /etc/mysql/mysql.conf.d/)を確認して 0.0.0.0 または接続先 IP を許可する
- ファイアウォール(firewalld/ufw)でポート 3306 を開放する
インストールが失敗する場合
- 既存の旧バージョンが残っていると競合する場合がある。旧パッケージを削除してから再試行する
- パッケージの依存関係エラーはリポジトリ設定や apt/yum のキャッシュをクリアして再試行する
運用チェックリスト(役割別)
システム管理者
- systemctl の自動起動を確認する
- ログローテーションとログ保存先を設定する
- セキュリティパッチを定期的に適用する
DB 管理者(DBA)
- 適切なバックアップ(mysqldump / XtraBackup)を設定する
- ユーザー権限の最小化を実施する
- パフォーマンス監視(slow query log, mysqltuner 等)を導入する
開発者
- 接続情報(ホスト/ポート/ユーザー/パスワード)の管理方法を決める(環境変数やシークレットストア)
- マイグレーションやスキーマ変更の手順を文書化する
コマンドのチートシート
リポジトリ追加
- CentOS: yum localinstall https://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm
- Ubuntu: dpkg -i mysql-apt-config_0.8.3-1_all.deb && apt-get update
インストール
- CentOS: yum -y install mysql-community-server
- Ubuntu: apt-get install -y mysql-community-server
サービス管理
- systemctl start|stop|restart mysqld または mysql
- systemctl enable mysqld または mysql
- systemctl is-enabled mysqld または mysql
接続
- mysql -u root -p
パスワード変更
- ALTER USER ‘root’@’localhost’ IDENTIFIED BY ‘新しい強いパスワード’;
テストケースと受け入れ条件
インストール後に MySQL サービスが active (running) になっていること
- コマンド: systemctl status mysqld または systemctl status mysql
root でログインできること(パスワード変更後)
- コマンド: mysql -u root -p
新規ユーザーでデータベースに接続できること
- コマンド: mysql -u hakase -p で show databases; が hakaselabs を返す
ブート後に自動起動すること
- コマンド: systemctl is-enabled mysqld または systemctl is-enabled mysql が enabled を返す
移行時の注意点(CentOS と Ubuntu の違い)
- サービス名の違い: CentOS は mysqld、Ubuntu は mysql(systemd の単純な違い)
- 初期パスワードの扱い: CentOS は起動時に一時パスワードを生成する場合がある一方、Ubuntu はパッケージインストール時に対話で設定することが多い
- パッケージ管理: rpm/yum と deb/apt の違いにより、リポジトリ追加やパッケージ名の取り扱いが異なる
1行用語集
- RDBMS: 関係データベース管理システム。構造化されたテーブル形式でデータを扱うDB。
まとめ
- MySQL 5.7 を CentOS 7 と Ubuntu 16.04 にインストールするには、公式リポジトリを追加して mysql-community-server を導入します。
- サービスを起動・自動起動を有効にし、root パスワードを必ず安全なものに変更してください。
- 新規ユーザーとデータベースを作成して接続を検証すれば基本的な導入は完了です。
参考リンク
https://dev.mysql.com/doc/refman/5.7/en/linux-installation.html
重要: 本手順は試験環境や初期導入ガイドです。実運用ではバックアップ、アクセス制御、監視、TLS など追加の安全対策を必ず実施してください。