MySQLを使用する際、バージョンを確認する必要がある場面は意外と多いものです。
- 新しい機能が使えるか知りたい
- トラブルシューティングで情報が必要
- アップデートの必要性を判断したい
- 開発環境と本番環境のバージョンを揃えたい
この記事では、MySQLのバージョンを確認する4つの方法を、初心者の方にもわかりやすく解説します。どの方法も簡単にできるので、状況に応じて使い分けてください。
MySQLのバージョン確認が必要な理由
MySQLは継続的にアップデートされており、バージョンによって使える機能が異なります。
主な理由:
- 機能の利用可否: JSON型(MySQL 5.7.8以降)、ウィンドウ関数(MySQL 8.0以降)など
- セキュリティ: 古いバージョンには脆弱性がある可能性
- 互換性: アプリケーションとの互換性確認
- サポート: 公式サポートの対象バージョンか確認
バージョンを把握しておくことで、適切な開発・運用判断ができるようになります。
方法1: SQLクエリで確認する(最も簡単)
MySQLに接続している状態であれば、SQLクエリでバージョンを確認するのが最も簡単です。
SELECT VERSION()
SELECT VERSION();
実行結果の例:
+-------------------------+
| VERSION() |
+-------------------------+
| 8.0.35 |
+-------------------------+
この方法は最もシンプルで、初心者の方にもおすすめです。
メリット:
- 覚えやすい
- すぐに結果が表示される
- MySQLクライアントがあれば使える
デメリット:
- MySQLに接続している必要がある
SELECT @@version
もう一つの方法として、システム変数を参照する方法もあります。
SELECT @@version;
実行結果の例:
+-------------------------+
| @@version |
+-------------------------+
| 8.0.35 |
+-------------------------+
VERSION()関数と同じ結果が得られます。どちらを使っても問題ありません。
SHOW VARIABLES(詳細情報も確認)
より詳細な情報を確認したい場合は、SHOW VARIABLESコマンドを使用します。
SHOW VARIABLES LIKE 'version%';
実行結果の例:
+-------------------------+------------------------------+
| Variable_name | Value |
+-------------------------+------------------------------+
| version | 8.0.35 |
| version_comment | MySQL Community Server - GPL |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+------------------------------+
確認できる情報:
version: バージョン番号version_comment: MySQLのエディション(Community、Enterpriseなど)version_compile_machine: コンパイルされたアーキテクチャversion_compile_os: コンパイルされたOS
コンパイル情報まで知りたい場合に便利です。
方法2: コマンドラインで確認する
ターミナル(Windowsの場合はコマンドプロンプトやPowerShell)から、MySQLに接続せずにバージョンを確認できます。
mysql –version
mysql --version
実行結果の例:
mysql Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL)
短縮形: mysql -V
mysql -V
大文字の「V」を使うことで、同じ結果が得られます。
メリット:
- MySQLに接続する必要がない
- 素早く確認できる
- スクリプトに組み込みやすい
デメリット:
- mysqlコマンドにパスが通っている必要がある
- クライアントのバージョンが表示される(サーバーとは異なる場合がある)
mysqld –version(サーバー版)
MySQLサーバー自体のバージョンを確認したい場合は、以下のコマンドを使用します。
mysqld --version
実行結果の例:
mysqld Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL)
サーバープロセスのバージョンを直接確認できます。
方法3: ログイン時に確認する
MySQLにログインする際、ウェルカムメッセージにバージョン情報が表示されます。
mysql -u root -p
表示例:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.35 MySQL Community Server - GPL
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
「Server version:」の行にバージョン情報が表示されます。
メリット:
- ログインするたびに自動的に表示される
- 特別なコマンドを覚える必要がない
デメリット:
- メッセージが流れてしまうと見えなくなる
方法4: STATUSコマンドで確認する
MySQLに接続した状態で、サーバーの詳細情報を確認する方法です。
STATUS;
または短縮形
\s
実行結果の例:
--------------
mysql Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL)
Connection id: 8
Current database: testdb
Current user: root@localhost
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.35 MySQL Community Server - GPL
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: utf8mb4
Db characterset: utf8mb4
Client characterset: utf8mb4
Conn. characterset: utf8mb4
UNIX socket: /var/run/mysqld/mysqld.sock
Binary data as: Hexadecimal
Uptime: 2 hours 34 min 12 sec
Threads: 2 Questions: 45 Slow queries: 0 Opens: 120 Flush tables: 3 Open tables: 95 Queries per second avg: 0.004
--------------
確認できる情報:
- サーバーバージョン
- 接続方法(TCP/IP、UNIXソケット)
- 文字コード設定
- サーバーの稼働時間(Uptime)
- 現在のデータベース
- 接続ユーザー
バージョンだけでなく、サーバーの状態も一緒に確認したい場合に便利です。
状況別:どの方法を使うべきか
確認方法がたくさんあって迷うかもしれません。状況別におすすめの方法をまとめました。
| 状況 | おすすめの方法 | コマンド |
|---|---|---|
| MySQLに接続中 | SQLクエリ | SELECT VERSION(); |
| MySQLに接続していない | コマンドライン | mysql --version |
| 詳細情報も確認したい | SHOW VARIABLES | SHOW VARIABLES LIKE 'version%'; |
| サーバーの状態も確認 | STATUS | STATUS; または \s |
| スクリプトで使用 | コマンドライン | mysql -V |
初心者の方へのおすすめ:
MySQLに接続してSELECT VERSION();を実行する方法が最もわかりやすく、確実です。
MySQLバージョン番号の見方
MySQLのバージョン番号は、通常「8.0.35」のような形式で表示されます。それぞれの数字の意味を理解しておきましょう。
バージョン番号の構成
8.0.35
│ │ └─ リリースバージョン(パッチバージョン)
│ └─── マイナーバージョン
└───── メジャーバージョン
メジャーバージョン(8)
- 大きな機能追加や仕様変更
- アップグレード時に互換性の問題が起きる可能性がある
- 例: MySQL 5.x → MySQL 8.x
マイナーバージョン(0)
- 新機能の追加や改善
- 基本的に後方互換性あり
- 例: MySQL 8.0.x → MySQL 8.1.x
リリースバージョン(35)
- バグ修正やセキュリティパッチ
- 安全にアップグレード可能
- 例: MySQL 8.0.35 → MySQL 8.0.36
主要なバージョンと特徴
MySQL 5.7系
- JSON型のサポート開始(5.7.8以降)
- Generated Columnのサポート
- 2023年10月にサポート終了
MySQL 8.0系(現在の主流)
- ウィンドウ関数のサポート
- CTE(共通テーブル式)のサポート
- デフォルトの文字コードがutf8mb4
- パフォーマンスの大幅な向上
MySQL 8.4系(LTS)
- 2024年にリリースされた長期サポート版
- より安定した運用が可能
バージョンを確認すべきタイミング
以下のような場面では、必ずバージョンを確認しましょう。
- 新しい機能を使う前
- JSON型を使いたい → MySQL 5.7.8以降が必要
- ウィンドウ関数を使いたい → MySQL 8.0以降が必要
- エラーが発生したとき
- サポートフォーラムで質問する際、バージョン情報が必要
- 環境を構築するとき
- 開発環境と本番環境でバージョンを揃える
- セキュリティアップデート時
- 脆弱性情報を確認する際にバージョンが必要
よくあるトラブルと対処法
バージョン確認時によくある問題と解決方法を紹介します。
トラブル1: 「mysql: command not found」エラー
症状:
$ mysql --version
-bash: mysql: command not found
原因:
- MySQLがインストールされていない
- パスが通っていない
対処法:
- MySQLがインストールされているか確認
# Linuxの場合
which mysql
dpkg -l | grep mysql # Debian/Ubuntu
rpm -qa | grep mysql # RedHat/CentOS
# macOSの場合
brew list | grep mysql
- パスを通す(インストール済みの場合)
# 一時的にパスを通す
export PATH=$PATH:/usr/local/mysql/bin
# 恒久的にパスを通す(.bashrcや.zshrcに追記)
echo 'export PATH=$PATH:/usr/local/mysql/bin' >> ~/.bashrc
source ~/.bashrc
トラブル2: 接続エラーが発生する
症状:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'
原因:
- MySQLサーバーが起動していない
対処法:
- サーバーの状態を確認
# Linuxの場合
sudo systemctl status mysql
# macOSの場合
brew services list
- サーバーを起動
# Linuxの場合
sudo systemctl start mysql
# macOSの場合
brew services start mysql
トラブル3: クライアントとサーバーのバージョンが異なる
症状: mysql --versionとSELECT VERSION();の結果が異なる
説明:
mysql --version: クライアントツールのバージョンSELECT VERSION();: サーバーのバージョン
これは正常な状態です。通常、サーバーのバージョンが重要なので、SELECT VERSION();の結果を参照してください。
トラブル4: 権限エラーで確認できない
症状:
ERROR 1045 (28000): Access denied for user 'user'@'localhost'
対処法:
- 正しいユーザー名とパスワードで接続
mysql -u root -p
- または、コマンドラインから確認(接続不要)
mysql --version
バージョンアップを検討すべきケース
以下のような場合は、MySQLのバージョンアップを検討しましょう。
1. サポートが終了している
MySQL 5.7は2023年10月にサポート終了しました。セキュリティリスクがあるため、MySQL 8.0以降へのアップグレードを強く推奨します。
2. セキュリティ脆弱性が発見されている
古いバージョンには既知の脆弱性があります。定期的にセキュリティ情報を確認し、必要に応じてアップデートしましょう。
3. 新機能を使いたい
以下のような新機能を使いたい場合は、バージョンアップが必要です。
- ウィンドウ関数(MySQL 8.0以降)
- CTE – Common Table Expressions(MySQL 8.0以降)
- JSON関数の拡張(MySQL 8.0以降)
- より高速なレプリケーション(MySQL 8.0以降)
4. パフォーマンスを改善したい
MySQL 8.0では、以下のような大幅なパフォーマンス改善が行われています。
- クエリの実行速度が向上
- インデックスの効率化
- メモリ使用量の最適化
バージョンアップ前の注意点
ただし、バージョンアップには注意が必要です。
必ず行うべきこと:
- データベースの完全バックアップ
- 互換性の確認(特にメジャーバージョンアップ時)
- テスト環境での動作確認
- アプリケーションコードの互換性チェック
推奨される手順:
- 現在のバージョンを確認
- 移行先バージョンのリリースノートを確認
- テスト環境でアップグレード
- アプリケーションの動作確認
- 問題なければ本番環境へ適用
まとめ
MySQLのバージョン確認方法について解説しました。
4つの確認方法:
- SQLクエリ:
SELECT VERSION();(最も簡単) - コマンドライン:
mysql --version(接続不要) - ログイン時: ウェルカムメッセージで確認
- STATUSコマンド:
STATUS;(詳細情報も表示)
推奨される方法:
初心者の方には、MySQLに接続してSELECT VERSION();を実行する方法がおすすめです。シンプルで確実に確認できます。
重要なポイント:
- バージョンによって使える機能が異なる
- セキュリティのため、サポート終了したバージョンは使わない
- 定期的にバージョンを確認し、必要に応じてアップデート
MySQLのバージョンを正しく把握することで、適切な開発・運用判断ができるようになります。この記事を参考に、ぜひご自身の環境のバージョンを確認してみてください。
よくある質問(FAQ)
Q1: クライアントとサーバーのバージョンが違うのは問題ですか?
A: 基本的には問題ありません。ただし、大きく異なる場合(例: クライアントがMySQL 5.x、サーバーがMySQL 8.x)は、一部の機能が使えない可能性があります。できるだけバージョンを揃えることを推奨します。
Q2: MySQLとMariaDBのバージョン確認方法は同じですか?
A: はい、同じコマンドで確認できます。ただし、MariaDBの場合は「MariaDB」という表記が含まれます(例: 10.6.12-MariaDB)。
Q3: バージョン8.0.35と8.0.36の違いは大きいですか?
A: リリースバージョン(パッチバージョン)の違いなので、主にバグ修正やセキュリティパッチが中心です。基本的に互換性があり、安全にアップグレードできます。
Q4: どのバージョンを使うべきですか?
A: 2024年現在、MySQL 8.0系の最新版を使用することを推奨します。MySQL 8.4はLTS(長期サポート版)なので、安定した運用を重視する場合はこちらも選択肢です。
Q5: バージョン確認コマンドが動かない場合は?
A: まず、MySQLが正しくインストールされているか、サーバーが起動しているかを確認してください。それでも解決しない場合は、パスの設定やインストール方法を見直す必要があります。
Q6: Docker環境でのバージョン確認方法は?
A: Dockerコンテナ内で確認する場合は、以下のコマンドを使用します。
docker exec -it <コンテナ名> mysql --version
または、コンテナ内に入ってから確認します。
docker exec -it <コンテナ名> bash
mysql --version