Linuxサーバーに自前でMySQLを導入する手順|公式リポジトリの登録から初期セキュア設定・自動起動まで

運営:リナックスマスター.JP(代表 宮崎智広)
HOME > Linux技術 リナックスマスター.JP(Linuxマスター.JP) > Linuxtips > MySQL > Linuxサーバーに自前でMySQLを導入する手順|公式リポジトリの登録から初期セキュア設定・自動起動まで
「MySQLをLinuxサーバーに自前で入れたいが、どのリポジトリを使えばよいか分からない」「aptやdnfでインストールしたら古いバージョンが入ってしまった」

こういった経験は珍しくありません。MySQLのインストール自体は難しくありませんが、リポジトリ選択・GPGキーの確認・初期セキュア設定と、現場で詰まりやすいポイントが複数あります。ディストリビューションのデフォルトリポジトリに頼ると、MySQL本体ではなくMariaDBが入ったり、MySQL 8.0のままEOL後も使い続けるはめになったりします。

この記事では、MySQL公式リポジトリを使ったMySQL 8.4 LTS(Long Term Support)の導入手順を、Rocky Linux 9(dnf系)とUbuntu 24.04 LTS(apt系)の両OSに対応する形で解説します。初期セキュア設定(mysql_secure_installation)からsystemctlによる自動起動設定・文字コード確認まで、実際のコマンド出力を交えて一通りカバーします。

この記事のポイント

・MySQL公式リポジトリを使えば最新の8.4 LTSを確実に導入できる
・Rocky Linux 9はdnf、Ubuntu 24.04 LTSはapt、手順は違うが考え方は同じ
・mysql_secure_installationで匿名ユーザーとテストDBを必ず削除する
・systemctl enable --now mysqldで起動と自動起動を1コマンドで同時に設定できる


Linuxサーバーに自前でMySQLを導入する手順|公式リポジトリの登録から初期セキュア設定・自動起動まで

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

MySQLの公式リポジトリとは何か・なぜ使うべきか

LinuxディストリビューションはRocky Linux(RHEL系)もUbuntuも、標準リポジトリにデータベースパッケージを含んでいます。ただし、その内容が一癖あります。

Rocky Linux 9のデフォルトAppStreamリポジトリにはMySQLではなくMariaDB 10.5.xが含まれており、何も考えずに`dnf install mysql-server`と打つと、MariaDBがインストールされます。Ubuntu 24.04 LTSでは`apt install mysql-server`でMySQL 8.0.xが入りますが、MySQL 8.0は2026年4月にEOL(サポート終了)を迎えており、これから新規に構築するサーバーに選ぶのは得策ではありません。

MySQL公式リポジトリを使うメリット:

・最新の安定版(MySQL 8.4 LTS)を確実に入手できる
・MySQLが直接メンテナンスするパッケージのため品質が安定している
・セキュリティパッチが即日適用される
・ディストリビューションのMariaDBとの競合を明示的に回避できる

MySQL 8.4 LTSは2024年4月にリリースされた、MySQLの新バージョン体系で最初のLTSリリースです。2032年までの長期サポートが予定されています。MySQL 8.4以降はInnovationリリース(短期)とLTSリリース(長期)の2トラックに分かれており、本番環境では必ずLTSトラックを選択してください。新規サーバーを構築するなら、迷わず8.4 LTSを選択してください。

動作環境と前提条件(Rocky Linux 9 / Ubuntu 24.04 LTS 対応)

本記事で検証した環境は以下のとおりです。

OS バージョン パッケージマネージャー
Rocky Linux 9.5(Kernel 5.14.0-503.el9.x86_64) dnf
Ubuntu 24.04 LTS(Noble Numbat, Kernel 6.8.0-51-generic) apt
MySQL 8.4.5 LTS MySQL公式リポジトリ
前提条件:

・sudoまたはroot権限を持つユーザーでログインしていること
・インターネット接続が確立されていること(パッケージダウンロードに必要)
・Rocky Linux 9ではfirewalldが有効になっていること(デフォルト状態)

Rocky Linux 9では、AppStreamリポジトリにMariaDBが含まれており、MySQLと競合する場合があります。作業前に既存のMariaDB関連パッケージを確認しておきます。

# MariaDB関連パッケージの確認(Rocky Linux) dnf list installed | grep -i mariadb

MariaDBがインストールされている場合は、事前に削除するか、MySQLリポジトリの優先度を設定して競合を回避してください。

公式リポジトリの登録手順(dnf/apt両対応)

1. Rocky Linux 9 — MySQL Yumリポジトリの登録

MySQLが提供するYumリポジトリ設定RPMパッケージをインストールします。

# MySQL公式リポジトリパッケージのインストール sudo rpm -Uvh https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm

実行結果:

Retrieving https://dev.mysql.com/get/mysql84-community-release-el9-1.noarch.rpm Verifying... ################################# [100%] Preparing... ################################# [100%] Updating / installing... 1:mysql84-community-release-el9-1 ################################# [100%]

次にGPGキーをインポートします。これを省略すると、パッケージインストール時に署名検証エラーが発生します。

# GPGキーのインポート sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023

リポジトリが正しく登録されたか確認します。

# リポジトリの確認 dnf repolist | grep mysql

実行結果:

mysql-8.4-lts-community MySQL 8.4 LTS Community Server mysql-tools-8.4-lts-community MySQL Tools 8.4 LTS Community

「mysql-8.4-lts-community」が表示されれば登録完了です。rpmコマンドの詳細はrpm コマンドの使い方も参照してください。

2. Ubuntu 24.04 LTS — MySQL APTリポジトリの登録

Ubuntu 24.04 LTSでは、MySQL APTリポジトリ設定パッケージを使います。

# wgetがない場合はインストールしておく sudo apt install -y wget # MySQLリポジトリ設定パッケージのダウンロード wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb

# リポジトリ設定パッケージのインストール sudo dpkg -i mysql-apt-config_0.8.32-1_all.deb

実行後、インタラクティブなメニューが表示されます。「MySQL Server & Cluster」の選択肢で「mysql-8.4」を選び、「OK」を選択して終了します。

# リポジトリ情報の更新 sudo apt update

実行結果(抜粋):

Get:1 http://repo.mysql.com/apt/ubuntu noble InRelease [21.9 kB] Get:2 http://repo.mysql.com/apt/ubuntu noble/mysql-8.4 amd64 Packages [10.3 kB] Get:3 http://repo.mysql.com/apt/ubuntu noble/mysql-tools-8.4 amd64 Packages [4.1 kB] ... Reading package lists... Done

「mysql-8.4」のパッケージ情報が取得できれば登録完了です。

MySQLのインストール(dnf/apt両対応)

1. Rocky Linux 9(dnf)でのインストール

# MySQLサーバーのインストール sudo dnf install -y mysql-community-server

実行結果(抜粋):

Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: mysql-community-server x86_64 8.4.5-1.el9 mysql-8.4-lts 64 M Installing dependencies: mysql-community-client x86_64 8.4.5-1.el9 mysql-8.4-lts 16 M mysql-community-libs x86_64 8.4.5-1.el9 mysql-8.4-lts 1 M mysql-community-icu-data-files x86_64 8.4.5-1.el9 mysql-8.4-lts 2 M Installed: mysql-community-client-8.4.5-1.el9.x86_64 mysql-community-icu-data-files-8.4.5-1.el9.x86_64 mysql-community-libs-8.4.5-1.el9.x86_64 mysql-community-server-8.4.5-1.el9.x86_64 Complete!

2. Ubuntu 24.04 LTS(apt)でのインストール

# MySQLサーバーのインストール sudo apt install -y mysql-server

実行結果(抜粋):

Reading package lists... Done Building dependency tree... Done The following NEW packages will be installed: mysql-client-8.4 mysql-common mysql-server mysql-server-8.4 ... Setting up mysql-server-8.4 (8.4.5-1ubuntu24.04) ... Processing triggers for systemd (255.4-1ubuntu8.5) ...

インストール中にrootパスワードを設定するダイアログが表示される場合があります。表示された場合は強度の高いパスワードを設定してください。後で`mysql_secure_installation`でも変更できます。

MySQLの初期セキュア設定(mysql_secure_installation)

インストール直後のMySQLは、セキュリティ的に甘い状態です。匿名ユーザーやテストデータベースが残っており、そのまま本番運用に投入するのは危険です。`mysql_secure_installation`コマンドで一括して初期設定を行います。

1. Rocky Linux 9での初期rootパスワード取得

Rocky Linux 9では、MySQLサービスを初回起動すると`/var/log/mysqld.log`に一時的なrootパスワードが書き込まれます。まずサービスを起動してからパスワードを確認します。

# MySQLサービスの起動 sudo systemctl start mysqld # 一時パスワードの取得 sudo grep 'temporary password' /var/log/mysqld.log

実行結果:

2026-06-15T03:42:17.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: Axb8!kP#mL3q

末尾の文字列(この例では`Axb8!kP#mL3q`)が一時パスワードです。この文字列をコピーしておき、次のステップで使います。

2. Ubuntu 24.04 LTSでのrootログイン方法

Ubuntu 24.04 LTSでインストールされるMySQLは、デフォルトでrootユーザーがauth_socket認証(OSのsudoユーザーと連動)を使います。パスワード入力なしで`sudo mysql`でログインできます。

# Ubuntu では sudo mysql で直接ログイン可能 sudo mysql

実行結果:

Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.4.5 MySQL Community Server - GPL Copyright (c) 2000, 2026, Oracle and/or its affiliates. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>

3. mysql_secure_installationの実行

sudo mysql_secure_installation

実行中に以下の質問が順に表示されます。推奨する回答を示します。

Would you like to setup VALIDATE PASSWORD component?
パスワード強度検証コンポーネントを有効にするかどうかの確認です。本番環境では`y`を推奨します。

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG
パスワード強度のレベルを選択します。本番環境では`2`(STRONG)を選択してください。STRONGは「8文字以上、大小英字・数字・記号を含む」という要件です。

Change the password for root?
Rocky Linux 9では一時パスワードから本番用パスワードに変更するため`y`を入力します。Ubuntuではauth_socket認証を維持する場合は`n`でよいです。

Remove anonymous users?
匿名ユーザーの削除です。必ず`y`を入力してください。これをスキップすると、パスワードなしでMySQLにアクセスできるユーザーが残ります。

Disallow root login remotely?
rootアカウントのリモートログインを禁止します。本番環境では必ず`y`を入力してください。rootでのリモート接続を許可するのはセキュリティリスクになります。アプリケーションからの接続には別途専用ユーザーを作成してください。

Remove test database and access to it?
テスト用データベースの削除です。本番環境では不要なので`y`を入力します。

Reload privilege tables now?
権限テーブルを今すぐリロードするかの確認です。`y`を入力します。

Success. All done!

「All done!」が表示されれば初期セキュア設定は完了です。

systemctlによる自動起動設定と動作確認

1. 自動起動の有効化

サーバーが再起動してもMySQLが自動起動するよう設定します。Rocky LinuxとUbuntuでサービス名が異なる点に注意してください。`--now`オプションを付けると、enableと同時にサービスを起動できるため、2コマンドを1つにまとめられます。

# Rocky Linux 9 の場合(サービス名: mysqld) # --now で起動と自動起動の有効化を同時に実施できる sudo systemctl enable --now mysqld # Ubuntu 24.04 LTS の場合(サービス名: mysql) sudo systemctl enable --now mysql

実行結果(Rocky Linux の場合):

Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service -> /usr/lib/systemd/system/mysqld.service.

このシンボリックリンクが作成されることで、次回以降のサーバー起動時にMySQLが自動的に起動します。個別に起動・停止する場合は`systemctl start mysqld`/`systemctl stop mysqld`(Ubuntuは`mysql`)を使います。

2. サービス動作確認

# Rocky Linux の場合 sudo systemctl status mysqld # Ubuntu の場合 sudo systemctl status mysql

実行結果:

* mysqld.service - MySQL Server Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; preset: disabled) Active: active (running) since Sat 2026-06-15 12:30:22 JST; 2min 14s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Process: 1248 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS) Main PID: 1335 (mysqld) Status: "Server is operational" Tasks: 37 (limit: 10951) Memory: 450.5M CPU: 4.318s CGroup: /system.slice/mysqld.service └─1335 /usr/sbin/mysqld Jun 15 12:30:17 server01 systemd[1]: Starting MySQL Server... Jun 15 12:30:22 server01 systemd[1]: Started MySQL Server.

「Status: "Server is operational"」と「Active: active (running)」が表示されれば正常に起動しています。systemdのサービス管理や起動時間計測についてはsystemd-analyze で起動時間計測も参照してください。

3. ポート待ち受けの確認

MySQLはデフォルトでTCPポート3306で待ち受けます。`ss`コマンドで確認します。

ss -tlnp | grep 3306

実行結果:

LISTEN 0 70 0.0.0.0:3306 0.0.0.0:* users:(("mysqld",pid=1335,fd=21))

`0.0.0.0:3306`でLISTEN状態になっていれば問題ありません。ssコマンドをはじめとしたポート確認コマンドの詳細はLinux ポート確認の全コマンドも参照してください。

4. MySQLへのログイン確認

# Rocky Linux の場合(パスワード入力を求められる) mysql -u root -p # Ubuntu(auth_socket使用)の場合 sudo mysql -u root

ログイン後、バージョンを確認します。

mysql> SELECT VERSION(); +-----------+ | VERSION() | +-----------+ | 8.4.5 | +-----------+ 1 row in set (0.00 sec) mysql> exit Bye

「8.4.5」と表示されれば、MySQL 8.4 LTSが正常に動作しています。

文字コードの確認(utf8mb4)

MySQL 8.0以降、デフォルトの文字セットはutf8mb4に変更されています。utf8mb4はUTF-8の完全な実装であり、絵文字(4バイト文字)も正しく扱えます。旧来の`utf8`(内部的にはutf8mb3、最大3バイト)では絵文字が保存できないため、utf8mb4であることを確認しておきましょう。

mysql> SHOW VARIABLES LIKE 'character%';

実行結果:

+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8mb3 | +--------------------------+----------------------------+ 7 rows in set (0.00 sec)

`character_set_server`がutf8mb4であれば問題ありません。`character_set_system`だけutf8mb3と表示されますが、これはMySQL内部のメタデータ用変数のため変更不要です。

万一`character_set_server`がutf8mb4以外になっている場合は、設定ファイルを確認して修正します。Rocky Linux 9の設定ファイルは`/etc/my.cnf.d/mysql-server.cnf`、Ubuntu 24.04 LTSは`/etc/mysql/mysql.conf.d/mysqld.cnf`の`[mysqld]`セクションに以下を追記します。

[mysqld] character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci

追記後にサービスを再起動して反映します。

# Rocky Linux の場合 sudo systemctl restart mysqld # Ubuntu の場合 sudo systemctl restart mysql

照合順序(collation)についても確認しておきましょう。

mysql> SHOW VARIABLES LIKE 'collation%'; +----------------------+--------------------+ | Variable_name | Value | +----------------------+--------------------+ | collation_connection | utf8mb4_0900_ai_ci | | collation_database | utf8mb4_0900_ai_ci | | collation_server | utf8mb4_0900_ai_ci | +----------------------+--------------------+ 3 rows in set (0.00 sec)

`utf8mb4_0900_ai_ci`(大文字小文字・アクセント無視)がMySQL 8.4のデフォルト照合順序です。日本語の全文検索を用途によって使い分ける場合は、テーブル作成時に`COLLATE utf8mb4_ja_0900_as_cs`を指定する方法もあります。

よくあるトラブルと対処(接続エラー・サービス起動失敗など)

「Failed to start mysqld.service: Unit not found」が出る

サービス名を間違えている可能性があります。Rocky Linuxのサービス名は`mysqld`、Ubuntuは`mysql`です。実際のサービス名は以下で確認できます。

# インストールされているMySQLサービスの確認 systemctl list-units | grep -i mysql

実行結果(Rocky Linuxの場合):

mysqld.service loaded active running MySQL Server

「ERROR 2002 (HY000): Can't connect to local MySQL server through socket」

MySQLサービスが起動していない状態でmysqlコマンドを実行すると発生します。まずサービスの状態を確認します。

# 起動状態の確認 sudo systemctl status mysqld # Rocky Linux sudo systemctl status mysql # Ubuntu # 起動していなければ起動する sudo systemctl start mysqld # Rocky Linux sudo systemctl start mysql # Ubuntu

起動に失敗する場合はjournalctlでエラーログを確認します。直近のエラーを手早く確認するには以下が便利です。

# systemdのエラーログを確認(Rocky Linux) sudo journalctl -u mysqld --no-pager | tail -30 # systemdのエラーログを確認(Ubuntu) sudo journalctl -u mysql --no-pager | tail -30 # MySQLのエラーログを直接確認(Rocky Linux) sudo tail -50 /var/log/mysqld.log # MySQLのエラーログを直接確認(Ubuntu) sudo tail -50 /var/log/mysql/error.log

「ERROR 1045 (28000): Access denied for user 'root'@'localhost'」

パスワードを間違えているか、mysql_secure_installation後に設定したパスワードを忘れた場合に発生します。Rocky Linuxでのパスワードリセット手順の概要は以下のとおりです。

# MySQLを停止する sudo systemctl stop mysqld # --skip-grant-tablesで一時起動(一時的な措置・完了後は必ず通常起動に戻す) sudo mysqld_safe --skip-grant-tables & # rootでパスワードなしログイン mysql -u root # パスワードのリセット(この順序が重要) mysql> FLUSH PRIVILEGES; mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '新しいパスワード'; mysql> exit # 通常モードで再起動 sudo kill $(sudo cat /var/run/mysqld/mysqld.pid) sudo systemctl start mysqld

`--skip-grant-tables`で起動中はネットワーク接続も無効化されます(MySQL 8.0以降の仕様)。リセット作業はローカルのソケット接続のみで行ってください。

「GPG key retrieval failed」が出た場合(Rocky Linux)

GPGキーが正しくインポートされていない可能性があります。以下の手順で再インポートします。

# GPGキーの再インポート sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023 # DNFキャッシュのクリアと再生成 sudo dnf clean all sudo dnf makecache

SELinuxによるサービス起動失敗(Rocky Linux)

Rocky Linux 9ではSELinuxが有効です。MySQLのデータディレクトリをデフォルト(`/var/lib/mysql`)以外に変更した場合、SELinuxのコンテキストが合わず起動できないことがあります。

# SELinuxの拒否ログ確認 sudo ausearch -m avc -ts recent | grep mysqld # データディレクトリを変更した場合のコンテキスト修正 sudo semanage fcontext -a -t mysqld_db_t "/新しいデータパス(/.*)?" sudo restorecon -Rv /新しいデータパス

デフォルトパス(`/var/lib/mysql`)を変更していなければ、SELinuxが原因でMySQLが起動しないケースは基本的に発生しません。

まとめ

本記事で解説した手順をまとめます。

やりたいこと Rocky Linux 9(dnf) Ubuntu 24.04 LTS(apt)
リポジトリ登録 sudo rpm -Uvh mysql84-community-release-el9-1.noarch.rpm sudo dpkg -i mysql-apt-config_*.deb
インストール sudo dnf install -y mysql-community-server sudo apt install -y mysql-server
初期rootPW確認 sudo grep 'temporary password' /var/log/mysqld.log sudo mysql -u root(PW不要)
初期セキュア設定 sudo mysql_secure_installation sudo mysql_secure_installation
起動+自動起動 sudo systemctl enable --now mysqld sudo systemctl enable --now mysql
状態確認 sudo systemctl status mysqld sudo systemctl status mysql
文字コード確認 SHOW VARIABLES LIKE 'character%'; SHOW VARIABLES LIKE 'character%';
ポート確認 ss -tlnp | grep 3306 ss -tlnp | grep 3306
MySQLのインストール自体は、公式リポジトリを使えば30分以内に完了します。ただし、`mysql_secure_installation`をスキップして匿名ユーザーやテストDBをそのままにしておくのは、本番環境では絶対に避けてください。自動起動(`systemctl enable`)の設定もサーバー再起動後の稼働維持に欠かせません。

MySQLの導入が完了したら、次はアプリケーション接続用ユーザーの作成やGRANT権限の設定、定期バックアップ(mysqldump)の仕組み作りなど、本番運用に向けた設定を進めていきましょう。

MySQLを含むLinuxサーバー構築を「実務の型」として学びませんか?

公式リポジトリの登録からmysql_secure_installationまで、手順を知っていれば再現できます。でも「なぜ匿名ユーザーを削除するのか」「本番環境でのMySQL権限設計はどうすべきか」を説明できますか?
現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

<PR>手元に置いて学びを深める1冊

MySQL徹底入門 第5版 MySQL 8.4 LTS対応

まず無料メルマガで学ぶのが第一歩、加えてMySQL 8.4 LTSの体系的な知識を手元に置くなら本書。インストールから権限設計・バックアップまで実務の全体像を押さえられる。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は30秒、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

姓・名・メールの3つだけ/30秒/解除は3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

運営

リナックスマスター.JP(代表 宮崎智広)

株式会社イーネットマーキュリーが運営するLinux教育サイトです。代表の宮崎智広は現役のLinuxサーバー管理者として20年以上の実務経験を持ち、累計3,100名以上のエンジニアを指導してきました。実践型のLinuxセミナーや無料マニュアルの配布を通じてLinux人材の育成に取り組んでいます。