「LinuxでMySQLを使いたいけど、どうやって入れるの?」「UbuntuとCentOSで手順が違うって本当?」「エラーが出て困っている…」
LinuxでのMySQLインストールは、ディストリビューション(Linux の種類)によって手順が異なります。
でも、基本的な流れを理解すれば、どの環境でも安心してインストールできます。
この記事では、主要なLinuxディストリビューションでMySQLをインストールする方法を、初心者にもわかりやすく、ステップバイステップで解説します。
インストール前の準備

対象読者と前提条件
この記事が対象とする方
- Linux初心者だが、基本的なターミナル操作ができる
- MySQL の基本的な知識がある
- ウェブアプリケーション開発でデータベースが必要
- 学習目的でMySQLを使いたい
必要な前提条件
- Linuxマシンへのアクセス権限(root権限またはsudo権限)
- インターネット接続環境
- 基本的なコマンドライン操作の理解
システム情報の確認
インストールを始める前に、使用しているLinuxディストリビューションを確認しましょう。
ディストリビューションの確認方法
# 方法1:OSリリース情報の確認
cat /etc/os-release
# 方法2:ディストリビューション情報の確認
lsb_release -a
# 方法3:カーネル情報の確認
uname -a
実行例と結果
$ cat /etc/os-release
NAME="Ubuntu"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
ID=ubuntu
ID_LIKE=debian
システムの更新
安全で確実なインストールのために、システムを最新の状態に更新します。
Ubuntu/Debian系の場合
# パッケージリストの更新
sudo apt update
# インストール済みパッケージの更新
sudo apt upgrade -y
# システムの再起動(必要に応じて)
sudo reboot
CentOS/RHEL/AlmaLinux/Rocky Linux系の場合
# パッケージの更新
sudo dnf update -y
# または古いバージョンでは
sudo yum update -y
# システムの再起動(必要に応じて)
sudo reboot
必要なポートの確認
MySQLはデフォルトで3306番ポートを使用します。
ポートの使用状況確認
# 3306番ポートの使用状況をチェック
sudo netstat -tlnp | grep 3306
# 何も表示されなければポートは空いています
Ubuntu/Debian系でのMySQLインストール

パッケージマネージャーを使用したインストール
基本的なインストール手順
# 1. パッケージリストの更新
sudo apt update
# 2. MySQLサーバーのインストール
sudo apt install mysql-server -y
# 3. インストール状況の確認
dpkg -l | grep mysql-server
インストール結果の確認
$ dpkg -l | grep mysql-server
ii mysql-server-8.0 8.0.35-0ubuntu0.22.04.1 amd64 MySQL database server binaries and system database setup
ii mysql-server-core-8.0 8.0.35-0ubuntu0.22.04.1 amd64 MySQL database server binaries
MySQLサービスの起動と設定
サービスの起動・有効化
# 1. MySQLサービスの開始
sudo systemctl start mysql
# 2. システム起動時の自動起動を有効化
sudo systemctl enable mysql
# 3. サービス状態の確認
sudo systemctl status mysql
サービス状態の確認結果例
$ sudo systemctl status mysql
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2025-01-20 10:30:15 JST; 2min ago
Main PID: 12345 (mysqld)
Status: "Server is operational"
初期セキュリティ設定
mysql_secure_installation の実行
sudo mysql_secure_installation
設定項目の詳細説明
このコマンドを実行すると、以下の設定を順番に行えます:
- VALIDATE PASSWORD COMPONENT の設定
Would you like to setup VALIDATE PASSWORD component? (Press y|Y for Yes, any other key for No): y
y
を選択すると、強力なパスワード要件が設定されます- 初心者は
y
を選択することをおすすめします
- パスワード強度レベルの選択
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
- LOW (0): 8文字以上
- MEDIUM (1): 8文字以上 + 数字、大小文字、特殊文字
- STRONG (2): MEDIUMの条件 + 辞書ファイルチェック
- rootパスワードの設定
Please set the password for root here. New password: [強力なパスワードを入力] Re-enter new password: [同じパスワードを再入力]
- 匿名ユーザーの削除
Remove anonymous users? (Press y|Y for Yes, any other key for No): y
- セキュリティのため
y
を選択します
- セキュリティのため
- rootのリモートログイン禁止
Disallow root login remotely? (Press y|Y for Yes, any other key for No): y
- セキュリティのため
y
を選択します
- セキュリティのため
- testデータベースの削除
Remove test database and access to it? (Press y|Y for Yes, any other key for No): y
y
を選択して不要なデータベースを削除します
- 権限テーブルの再読み込み
Reload privilege tables now? (Press y|Y for Yes, any other key for No): y
- 必ず
y
を選択します
- 必ず
CentOS/RHEL/AlmaLinux/Rocky Linux系でのインストール
標準リポジトリからのインストール
基本的なインストール手順
# 1. 利用可能なMySQLパッケージの確認
sudo dnf search mysql-server
# 2. MySQLサーバーのインストール
sudo dnf install mysql-server -y
# 3. インストール状況の確認
rpm -qa | grep mysql-server
公式リポジトリからのインストール(推奨)
公式MySQLリポジトリの追加
# 1. MySQL公式リポジトリの追加
sudo dnf install https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm -y
# 2. リポジトリの確認
sudo dnf repolist | grep mysql
# 3. MySQLサーバーのインストール
sudo dnf install mysql-community-server -y
GPGキーのインポート(必要な場合)
# MySQLの公式GPGキーをインポート
sudo rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
サービスの起動と設定
MySQLサービスの管理
# 1. MySQLサービスの開始
sudo systemctl start mysqld
# 2. システム起動時の自動起動を有効化
sudo systemctl enable mysqld
# 3. サービス状態の確認
sudo systemctl status mysqld
初期パスワードの確認と変更
CentOS系では、初期インストール時に一時的なrootパスワードが自動生成されます。
一時パスワードの確認
# ログファイルから初期パスワードを確認
sudo grep 'temporary password' /var/log/mysqld.log
実行結果例
2025-01-20T10:30:15.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: aB3#fG8$mK2!
rootパスワードの変更
# MySQLに接続(一時パスワードを使用)
mysql -u root -p
# パスワード変更(MySQL内で実行)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'あなたの強力な新パスワード';
exit;
セキュリティ設定の実行
# 初期セキュリティ設定の実行
sudo mysql_secure_installation
インストール後の確認と基本設定

インストール成功の確認
MySQLバージョンの確認
# MySQLクライアントのバージョン確認
mysql --version
# MySQLサーバーのバージョン確認
mysqladmin -u root -p version
実行結果例
$ mysql --version
mysql Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL)
MySQL への接続テスト
基本的な接続
# rootユーザーでMySQLに接続
mysql -u root -p
# 接続できた場合の表示例
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.35 MySQL Community Server - GPL
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
基本的なSQL操作テスト
-- データベース一覧の表示
SHOW DATABASES;
-- 現在の日時を表示
SELECT NOW();
-- 現在のユーザーを表示
SELECT USER();
-- MySQL設定の確認
SHOW VARIABLES LIKE 'version%';
-- 接続終了
exit;
文字セットの設定(日本語対応)
設定ファイルの編集
# MySQLの設定ファイルを編集
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# または
sudo nano /etc/my.cnf
追加する設定内容
[mysqld]
# 文字セット設定
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[mysql]
# クライアント側の文字セット
default-character-set=utf8mb4
[client]
# クライアント接続時の文字セット
default-character-set=utf8mb4
設定変更後の再起動
# MySQLサービスの再起動
sudo systemctl restart mysql # Ubuntu系
sudo systemctl restart mysqld # CentOS系
# 設定確認
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set%';"
ファイアウォール設定
Ubuntu/Debian系(ufw)
ファイアウォールの設定
# UFWの状態確認
sudo ufw status
# MySQL用ポート(3306)の開放
sudo ufw allow 3306
# 特定のIPアドレスからのみ接続を許可(より安全)
sudo ufw allow from 192.168.1.100 to any port 3306
# 設定の確認
sudo ufw status numbered
CentOS/RHEL系(firewalld)
ファイアウォールの設定
# firewalldの状態確認
sudo systemctl status firewalld
# MySQL用ポート(3306)の開放
sudo firewall-cmd --permanent --add-port=3306/tcp
# MySQL用サービスの開放(推奨)
sudo firewall-cmd --permanent --add-service=mysql
# 設定の再読み込み
sudo firewall-cmd --reload
# 設定の確認
sudo firewall-cmd --list-all
データベースとユーザーの作成

開発用データベースの作成
MySQLに接続してデータベース作成
-- MySQLに接続
mysql -u root -p
-- 新しいデータベースの作成
CREATE DATABASE myapp_development CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- データベース一覧の確認
SHOW DATABASES;
-- 作成したデータベースの使用
USE myapp_development;
-- テーブル作成例
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- テーブル構造の確認
DESCRIBE users;
アプリケーション用ユーザーの作成
専用ユーザーの作成(セキュリティベストプラクティス)
-- 新しいユーザーの作成
CREATE USER 'appuser'@'localhost' IDENTIFIED BY '強力なパスワード';
-- データベースへの権限付与
GRANT ALL PRIVILEGES ON myapp_development.* TO 'appuser'@'localhost';
-- 権限の適用
FLUSH PRIVILEGES;
-- ユーザー一覧の確認
SELECT User, Host FROM mysql.user;
-- 権限の確認
SHOW GRANTS FOR 'appuser'@'localhost';
作成したユーザーでの接続テスト
# 新しいユーザーで接続
mysql -u appuser -p myapp_development
# 接続確認
SELECT DATABASE(), USER();
よくあるトラブルと解決方法
インストール関連のトラブル
パッケージが見つからない場合
# 問題: E: Unable to locate package mysql-server
# 解決方法:
sudo apt update
sudo apt search mysql-server
# 利用可能なパッケージの確認
apt list --upgradable | grep mysql
依存関係の問題
# 問題: 依存関係の競合
# 解決方法:
sudo apt --fix-broken install
sudo apt autoremove
sudo apt autoclean
サービス起動関連のトラブル
MySQLサービスが起動しない場合
# サービス状態の詳細確認
sudo systemctl status mysql -l
# ログファイルの確認
sudo journalctl -u mysql -f
# エラーログの確認
sudo tail -f /var/log/mysql/error.log
ポート競合の問題
# 3306番ポートの使用状況確認
sudo netstat -tlnp | grep 3306
sudo lsof -i :3306
# 他のMySQLプロセスの確認
ps aux | grep mysql
接続関連のトラブル
パスワード認証エラー
# 問題: Access denied for user 'root'@'localhost'
# 解決方法:
# 1. MySQLをセーフモードで起動
sudo systemctl stop mysql
sudo mysqld_safe --skip-grant-tables &
# 2. パスワードなしで接続
mysql -u root
# 3. パスワードをリセット
USE mysql;
UPDATE user SET authentication_string=PASSWORD('新しいパスワード') WHERE User='root';
FLUSH PRIVILEGES;
exit;
# 4. 通常モードで再起動
sudo systemctl restart mysql
ソケットファイルの問題
# 問題: Can't connect to local MySQL server through socket
# 解決方法:
# ソケットファイルの場所確認
sudo find / -name "mysql.sock" 2>/dev/null
# 設定ファイルでソケットパスを確認
grep socket /etc/mysql/mysql.conf.d/mysqld.cnf
パフォーマンス関連のトラブル
メモリ不足の警告
# 問題: MySQL使用メモリの警告
# 解決方法: 設定ファイルの調整
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 以下の設定を追加/調整
[mysqld]
innodb_buffer_pool_size = 512M # 利用可能メモリの70-80%
max_connections = 100 # 同時接続数の制限
query_cache_size = 64M # クエリキャッシュサイズ
セキュリティ強化設定

ネットワークセキュリティ
ローカル接続のみに制限
# 設定ファイルの編集
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# bind-address の設定
[mysqld]
bind-address = 127.0.0.1 # ローカルホストのみ
# bind-address = 0.0.0.0
# すべてのIPから接続可能(注意)
SSL/TLS暗号化の有効化
-- SSL設定の確認
SHOW VARIABLES LIKE 'have_ssl';
-- SSL証明書の状態確認
SHOW STATUS LIKE 'Ssl_cipher';
ログ設定の強化
一般ログとスロークエリログの有効化
# 設定ファイルに追加
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
# 一般ログ
general_log = 1
general_log_file = /var/log/mysql/general.log
# スロークエリログ
slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2
# バイナリログ
log-bin = /var/log/mysql/mysql-bin.log expire_logs_days = 7
バックアップとメンテナンス
基本的なバックアップ設定
mysqldumpを使用したバックアップ
# 単一データベースのバックアップ
mysqldump -u root -p myapp_development > myapp_backup_$(date +%Y%m%d).sql
# 全データベースのバックアップ
mysqldump -u root -p --all-databases > all_databases_backup_$(date +%Y%m%d).sql
# 構造のみのバックアップ
mysqldump -u root -p --no-data myapp_development > myapp_structure.sql
自動バックアップスクリプトの作成
# バックアップスクリプトの作成
sudo nano /usr/local/bin/mysql_backup.sh
#!/bin/bash
# MySQL自動バックアップスクリプト
BACKUP_DIR="/var/backups/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
MYSQL_USER="root"
MYSQL_PASSWORD="your_password" # より安全な方法:.my.cnfファイルの使用
# バックアップディレクトリの作成
mkdir -p $BACKUP_DIR
# データベースのバックアップ
mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD --all-databases > $BACKUP_DIR/all_db_$DATE.sql
# 古いバックアップの削除(7日以上古いもの)
find $BACKUP_DIR -name "*.sql" -mtime +7 -delete
echo "Backup completed: $BACKUP_DIR/all_db_$DATE.sql"
実行権限の付与とcron設定
# スクリプトに実行権限を付与
sudo chmod +x /usr/local/bin/mysql_backup.sh
# crontabの編集(毎日午前2時に実行)
sudo crontab -e
# 以下の行を追加
0 2 * * * /usr/local/bin/mysql_backup.sh
まとめ
LinuxでのMySQLインストールは、ディストリビューションごとに手順が異なりますが、基本的な流れは共通しています。
ディストリビューション別対応
- Ubuntu/Debian系:
apt install mysql-server
- CentOS/RHEL系:
dnf install mysql-server
または公式リポジトリ使用 - 共通操作:
systemctl
でのサービス管理
セキュリティ設定の重要性
mysql_secure_installation
による初期設定- 強力なパスワードの設定
- 不要なユーザーとデータベースの削除
- ファイアウォール設定による接続制限
運用面での配慮
- 文字セット設定による日本語対応
- 専用ユーザーの作成
- 定期的なバックアップ設定
- ログ監視とメンテナンス
トラブル対応
- よくある問題の事前把握
- ログファイルの確認方法
- サービス管理のコマンド
- パスワードリセット手順
コメント