タイトル: mysqlのバージョン確認方法
SEOタイトル: MySQL バージョン確認方法完全ガイド
| この記事の要点 |
|
クライアント側のバージョン確認
OS にインストールされている mysql / mysqldump 等のクライアントのバージョンを見るだけです。接続先のサーバとは別物なので注意。
# Linux / Mac / Windows 共通
mysql --version
# → mysql Ver 8.0.35 for Linux on x86_64 (MySQL Community Server - GPL)
mysql -V
# mysqldump 等もそれぞれ
mysqldump --version
mysqladmin --version
# rpm / dpkg で
rpm -qa | grep mysql
dpkg -l | grep mysql
# Homebrew (Mac)
brew list --versions mysql
brew info mysql
サーバ側のバージョン確認 (本命)
実運用で本当に欲しいのは接続先サーバのバージョンです。SQL で確認します。
-- 接続中のサーバのバージョン
SELECT VERSION();
-- → 8.0.35
-- システム変数経由
SHOW VARIABLES LIKE 'version';
SHOW VARIABLES LIKE 'version%';
-- +-------------------------+--------------------------+
-- | Variable_name | Value |
-- +-------------------------+--------------------------+
-- | version | 8.0.35 |
-- | version_comment | MySQL Community Server |
-- | version_compile_machine | x86_64 |
-- | version_compile_os | Linux |
-- | version_compile_zlib | 1.2.13 |
-- +-------------------------+--------------------------+
-- @@ 構文 (グローバル変数)
SELECT @@version;
SELECT @@version_comment;
SELECT @@hostname, @@version, @@datadir;
-- ステータス情報全部
STATUS; -- mysql コンソール上のみ
\s -- 同上 (短縮)
-- Server version: 8.0.35 MySQL Community Server - GPL
-- Protocol version: 10
-- Connection: 127.0.0.1 via TCP/IP
シェルから直接 SQL を実行して確認
# -e オプションで SQL を渡す (パスワードはプロンプト)
mysql -h db.example.com -u root -p -e "SELECT VERSION();"
# パスワードを引数に (履歴に残るので非推奨)
mysql -h localhost -u root -ppassword -e "SELECT VERSION();"
# ~/.my.cnf に書いておけば -p 不要
cat ~/.my.cnf <<EOF
[client]
user=root
password=secret
host=db.example.com
EOF
chmod 600 ~/.my.cnf
mysql -e "SELECT VERSION();"
# 接続せずクライアントバージョンだけ
mysql --print-defaults
各環境での確認方法
| 環境 | 確認方法 |
|---|---|
| 素のローカル / VM | mysql -u root -p -e "SELECT VERSION();" |
| Docker コンテナ | docker exec mysql_container mysql --version |
| docker-compose | docker-compose exec mysql mysql --version |
| Kubernetes Pod | kubectl exec -it mysql-0 -- mysql --version |
| AWS RDS | コンソール → RDS → DB エンジンバージョン |
| AWS Aurora | SELECT AURORA_VERSION(); (Aurora MySQL のみ) |
| GCP Cloud SQL | コンソール → インスタンスの詳細 → データベースバージョン |
| Azure Database for MySQL | Azure Portal → 概要 → サーバーバージョン |
| phpMyAdmin | ホーム画面右上 → 「データベースサーバー: 8.0.35」 |
| MySQL Workbench | Server → Server Status |
Docker で詳細確認
# イメージのタグから (起動時に指定したバージョン)
docker ps --format "table {{.Names}}\t{{.Image}}"
# mysql_container mysql:8.0.35
# 動いているプロセスのバージョン
docker exec -it mysql_container mysql -u root -p -e "SELECT VERSION();"
# Compose の image スタックを全部
docker-compose images
# 全タグ一覧 (Docker Hub)
curl -s https://hub.docker.com/v2/repositories/library/mysql/tags/ | jq '.results[].name'
AWS RDS / Aurora
# AWS CLI で
aws rds describe-db-instances \
--db-instance-identifier mydb \
--query 'DBInstances[0].EngineVersion'
# "8.0.35"
# Aurora は別途バージョンあり (Aurora MySQL 3.x = MySQL 8.0 互換)
mysql -h aurora-cluster.example.com -u admin -p -e "SELECT AURORA_VERSION();"
# 3.04.1
# 同時に MySQL バージョンも
mysql -e "SELECT VERSION(), AURORA_VERSION();"
MariaDB との見分け方
MariaDB は MySQL からフォークしたため、mysql コマンドで接続できますが別物です:
SELECT VERSION();
-- MariaDB: 10.11.5-MariaDB
-- MySQL: 8.0.35
SHOW VARIABLES LIKE '%version%';
-- MariaDB は version_comment が 'MariaDB Server' になる
-- 確実な判別 (情報スキーマ)
SELECT @@version_comment, @@version;
-- MariaDB Server | 10.11.5-MariaDB
-- MariaDB 特有の関数で判別
SELECT @@version LIKE '%MariaDB%' AS is_mariadb;
複数 MySQL の同居 (Mac Homebrew)
開発環境で MySQL 5.7 と 8.0 を両方使いたい場合などのチェック:
# Homebrew でインストール済バージョン
brew list --versions | grep mysql
# mysql 8.0.35
# mysql@5.7 5.7.43
# 接続先別にバージョン
mysql -P 3306 -u root -p -e "SELECT VERSION();" # 8.0
mysql -P 3307 -u root -p -e "SELECT VERSION();" # 5.7
# どちらの mysql バイナリが PATH か
which -a mysql
ls -la /usr/local/opt/mysql/bin/mysql
ls -la /usr/local/opt/mysql@5.7/bin/mysql
サポート状況の確認
| バージョン | 状態 | サポート終了 |
|---|---|---|
| MySQL 5.6 | EOL | 2021-02 |
| MySQL 5.7 | EOL | 2023-10 |
| MySQL 8.0 | LTS | 2026-04 (延長サポート) |
| MySQL 8.4 | LTS | 2032-04 |
| MariaDB 10.5 | EOL | 2025-06 |
| MariaDB 10.11 | LTS | 2028-02 |
| MariaDB 11.4 | LTS | 2029-05 |
FAQ
Q: mysql --version と SELECT VERSION() が違う値を返す
A: 正常です。前者はローカルのクライアントツール、後者は接続中のサーバ。本番調査では必ず SELECT VERSION() を使ってください。
Q: アプリから取りたい
A: 接続後に SELECT VERSION() を発行するだけ。PHP なら $pdo->getAttribute(PDO::ATTR_SERVER_VERSION) でも可。
Q: MySQL 5.7 のまま運用していて大丈夫?
A: 既に EOL なのでセキュリティリスク。8.0 への移行を強く推奨。Aurora 等の互換レイヤを使うのも一手。