この記事では、MySQLのバージョンを確認する様々な方法を詳しく解説します。
SQL文での確認からコマンドライン操作まで、状況に応じた最適な確認方法をマスターしましょう。
MySQLバージョン確認の重要性

MySQLのバージョンを把握することは、以下の理由で重要です:
なぜバージョン確認が必要か
互換性の確認
- アプリケーションとの対応関係の把握
- 使用可能な機能やSQL構文の確認
- プラグインやライブラリとの互換性チェック
セキュリティ管理
- セキュリティパッチの適用状況確認
- 既知の脆弱性への対策状況把握
- サポート期間内かどうかの確認
パフォーマンス最適化
- バージョン固有の最適化機能の活用
- 新機能による性能向上の検討
- 設定パラメータの調整判断
トラブルシューティング
- 問題発生時の原因特定
- サポートへの問い合わせ時の情報提供
- バグ情報との照合
SQL文でのバージョン確認

方法1:VERSION()関数を使用
最も基本的で確実なバージョン確認方法です。
基本構文
SELECT VERSION();
実行例
mysql> SELECT VERSION();
+-------------------------+
| VERSION() |
+-------------------------+
| 8.0.33-0ubuntu0.22.04.2 |
+-------------------------+
1 row in set (0.00 sec)
返される情報の読み方
- 8.0.33:MySQLバージョン(メジャー.マイナー.パッチ)
- 0ubuntu0.22.04.2:ディストリビューション固有の情報
方法2:@@version変数を使用
システム変数を直接参照する方法です。
構文
SELECT @@version;
実行例
mysql> SELECT @@version;
+-------------------------+
| @@version |
+-------------------------+
| 8.0.33-0ubuntu0.22.04.2 |
+-------------------------+
1 row in set (0.00 sec)
VERSION()関数との違い
- 機能的には同じ結果を返す
- @@version はシステム変数への直接アクセス
- VERSION()は専用関数
方法3:SHOW VARIABLES文を使用
より詳細なバージョン情報を確認できます。
基本的な確認
SHOW VARIABLES LIKE 'version';
実行結果
mysql> SHOW VARIABLES LIKE 'version';
+---------------+-------------------------+
| Variable_name | Value |
+---------------+-------------------------+
| version | 8.0.33-0ubuntu0.22.04.2 |
+---------------+-------------------------+
1 row in set (0.01 sec)
バージョン関連の全変数を確認
SHOW VARIABLES LIKE '%version%';
詳細な実行結果
mysql> SHOW VARIABLES LIKE '%version%';
+-------------------------+-------------------------+
| Variable_name | Value |
+-------------------------+-------------------------+
| innodb_version | 8.0.33 |
| protocol_version | 10 |
| slave_type_conversions | |
| tls_version | TLSv1.2,TLSv1.3 |
| version | 8.0.33-0ubuntu0.22.04.2 |
| version_comment | (Ubuntu) |
| version_compile_machine | x86_64 |
| version_compile_os | Linux |
+-------------------------+-------------------------+
8 rows in set (0.00 sec)
各変数の説明
version
- MySQLサーバーのメインバージョン
- 最も重要な情報
version_comment
- ディストリビューションやビルド情報
- (Ubuntu)、(MySQL Community Server)など
version_compile_machine
- コンパイル時のアーキテクチャ
- x86_64、arm64など
version_compile_os
- コンパイル時のOS
- Linux、Win64など
innodb_version
- InnoDBストレージエンジンのバージョン
- 通常はMySQLバージョンと同じ
protocol_version
- MySQL通信プロトコルのバージョン
- クライアント接続で使用
tls_version
- サポートされているTLSバージョン
- セキュリティ関連で重要
コマンドラインでのバージョン確認

方法1:mysql –versionコマンド
MySQLクライアントツールのバージョンを確認します。
基本構文
mysql --version
実行例
$ mysql --version
mysql Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
短縮形
mysql -V
実行例
$ mysql -V
mysql Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
方法2:mysqld –versionコマンド
MySQLサーバーデーモンのバージョンを確認します。
構文
mysqld --version
実行例
$ mysqld --version
mysqld Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
注意点
- サーバーが起動していなくても実行可能
- root権限が必要な場合がある
方法3:パッケージマネージャーでの確認
Ubuntuの場合
# インストール済みパッケージの確認
dpkg -l | grep mysql-server
# 詳細情報の確認
apt show mysql-server
CentOS/RHELの場合
# インストール済みパッケージの確認
rpm -qa | grep mysql
# 詳細情報の確認
yum info mysql-server
macOS(Homebrew)の場合
# インストール済みバージョンの確認
brew list --versions mysql
# 詳細情報の確認
brew info mysql
接続後の詳細確認方法
MySQLサーバーへの接続
基本的な接続方法
mysql -u ユーザー名 -p
実行例
$ mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.33-0ubuntu0.22.04.2 (Ubuntu)
Copyright (c) 2000, 2023, 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:サーバーバージョン
- connection id:接続ID
- Copyright情報
STATUS コマンドでの詳細確認
\s
または
STATUS;
実行結果例
mysql> \s
--------------
mysql Ver 8.0.33-0ubuntu0.22.04.2 for Linux on x86_64 ((Ubuntu))
Connection id: 8
Current database:
Current user: root@localhost
SSL: Cipher in use is TLS_AES_256_GCM_SHA384
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 8.0.33-0ubuntu0.22.04.2 (Ubuntu)
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: 1 hour 23 min 45 sec
Threads: 2 Questions: 15 Slow queries: 0 Opens: 137 Flush tables: 3 Open tables: 56 Queries per second avg: 0.003
--------------
リモートサーバーでのバージョン確認
リモート接続でのバージョン確認
基本的なリモート接続
mysql -h サーバーのIPアドレス -u ユーザー名 -p
実行例
mysql -h 192.168.1.100 -u admin -p
ポート指定での接続
mysql -h サーバーのIPアドレス -P ポート番号 -u ユーザー名 -p
実行例
mysql -h 192.168.1.100 -P 3306 -u admin -p
接続せずにバージョンを確認
TCPポートスキャンでの確認
nmap -sV -p 3306 サーバーのIPアドレス
telnetでの確認
telnet サーバーのIPアドレス 3306
プログラミング言語からのバージョン確認

PHP(MySQLi)
<?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
die("Connection failed: " . $mysqli->connect_error);
}
$result = $mysqli->query("SELECT VERSION()");
$row = $result->fetch_row();
echo "MySQL Version: " . $row[0];
$mysqli->close();
?>
Python(PyMySQL)
import pymysql
connection = pymysql.connect(
host='localhost',
user='username',
password='password',
database='database'
)
try:
with connection.cursor() as cursor:
cursor.execute("SELECT VERSION()")
result = cursor.fetchone()
print(f"MySQL Version: {result[0]}")
finally:
connection.close()
Java(JDBC)
import java.sql.*;
public class MySQLVersion {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/database";
String username = "username";
String password = "password";
try {
Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT VERSION()");
if (resultSet.next()) {
System.out.println("MySQL Version: " + resultSet.getString(1));
}
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
バージョン情報の詳細解析
バージョン番号の読み方
標準的なバージョン形式
8.0.33-0ubuntu0.22.04.2
構成要素の説明
- 8:メジャーバージョン(大きな変更)
- 0:マイナーバージョン(機能追加)
- 33:パッチバージョン(バグ修正)
- 0ubuntu0.22.04.2:ディストリビューション情報
MySQLバージョンの歴史
主要バージョンの特徴
MySQL 8.0系(2018年〜)
- JSONデータ型の強化
- Window関数のサポート
- CTEの実装
- パフォーマンスの大幅向上
MySQL 5.7系(2015年〜2023年)
- JSON関数の導入
- Generated Columnの追加
- パフォーマンススキーマの改善
MySQL 5.6系(2013年〜2021年)
- InnoDBのみでのレプリケーション
- パーティション改善
- オンラインDDL
サポート期間とライフサイクル
サポート期間の目安
- MySQL 8.0:2018年4月〜2026年4月(予定)
- MySQL 5.7:2015年10月〜2023年10月(終了)
- MySQL 5.6:2013年2月〜2021年2月(終了)
トラブルシューティング

よくある問題と解決方法
「command not found」エラー
原因:MySQLがインストールされていない、またはPATHが通っていない
解決方法:
# MySQLがインストールされているか確認
which mysql
# PATHの確認
echo $PATH
# MySQLの場所を探す
find / -name mysql 2>/dev/null
接続できない場合
原因:MySQLサーバーが起動していない、認証情報が間違っている
解決方法:
# MySQLサーバーの状態確認
systemctl status mysql
# MySQLサーバーの起動
sudo systemctl start mysql
# 接続テスト
mysql -u root -p --execute="SELECT 1"
権限がない場合
原因:実行ユーザーにMySQLへのアクセス権限がない
解決方法:
-- ユーザー権限の確認
SHOW GRANTS FOR 'username'@'localhost';
-- 必要に応じて権限付与
GRANT SELECT ON *.* TO 'username'@'localhost';
自動化スクリプト例
バージョン確認の自動化
Bashスクリプト例
#!/bin/bash
echo "=== MySQL Version Check ==="
# コマンドラインでのバージョン確認
echo "Client Version:"
mysql --version
echo ""
echo "Server Version (if accessible):"
mysql -u root -p -e "SELECT VERSION()" 2>/dev/null || echo "Server not accessible"
# 詳細情報の取得
echo ""
echo "Detailed Version Information:"
mysql -u root -p -e "SHOW VARIABLES LIKE '%version%'" 2>/dev/null || echo "Cannot retrieve detailed information"
Python監視スクリプト例
#!/usr/bin/env python3
import subprocess
import sys
def check_mysql_version():
try:
# クライアントバージョンの確認
result = subprocess.run(['mysql', '--version'],
capture_output=True, text=True)
if result.returncode == 0:
print(f"MySQL Client: {result.stdout.strip()}")
else:
print("MySQL client not found")
return False
# サーバーバージョンの確認
sql_result = subprocess.run([
'mysql', '-u', 'root', '-p',
'-e', 'SELECT VERSION()'
], capture_output=True, text=True)
if sql_result.returncode == 0:
lines = sql_result.stdout.split('\n')
if len(lines) > 1:
print(f"MySQL Server: {lines[1]}")
return True
except Exception as e:
print(f"Error: {e}")
return False
if __name__ == "__main__":
check_mysql_version()
セキュリティ考慮事項
バージョン情報の取り扱い注意
公開環境での注意点
- バージョン情報から既知の脆弱性が特定される可能性
- 不必要にバージョン情報を外部に公開しない
- セキュリティパッチの適用状況を定期確認
アクセス制御
- バージョン確認クエリの実行権限管理
- 監査ログでのバージョン確認履歴記録
- 不正アクセスの検出と対応
よくある質問

クライアントとサーバーのバージョンが違う場合の問題は?
基本的には問題ありませんが、以下の注意点があります:
- 後方互換性:新しいクライアントから古いサーバーへの接続は通常可能
- 機能制限:サーバーがサポートしていない機能は使用不可
- 推奨事項:可能な限りバージョンを揃える
本番環境でのバージョン確認時の注意点は?
安全な確認方法:
- 読み取り専用ユーザーでの接続
- スレーブサーバーでの確認(レプリケーション環境)
- メンテナンス時間での確認
- 監査ログの確認
バージョンアップの判断基準は?
アップデート検討のポイント:
- セキュリティパッチの有無
- 現在のサポート状況
- 新機能の必要性
- 互換性の影響範囲
- ダウンタイムの許容度
複数のMySQLインスタンスが動いている場合の確認方法は?
複数インスタンスでの確認:
# ポート別での確認
mysql -P 3306 -u root -p -e "SELECT VERSION()"
mysql -P 3307 -u root -p -e "SELECT VERSION()"
# プロセス一覧での確認
ps aux | grep mysqld
# ソケットファイル別での確認
mysql --socket=/tmp/mysql.sock -u root -p -e "SELECT VERSION()"
まとめ
MySQLのバージョン確認は、システム管理とセキュリティ維持の基本作業です。
重要なポイント
- SQL確認:
SELECT VERSION()
が最も確実 - コマンドライン:
mysql --version
で手軽に確認 - 詳細情報:
SHOW VARIABLES LIKE '%version%'
で包括的な情報取得 - 定期確認:セキュリティ管理のため定期的な確認が重要
用途別の推奨方法
用途 | 推奨方法 | 特徴 |
---|---|---|
基本確認 | SELECT VERSION() | 最も確実で詳細 |
簡易確認 | mysql --version | コマンドラインで手軽 |
詳細分析 | SHOW VARIABLES | 関連情報も含めて包括的 |
自動化 | スクリプト組み込み | 定期監視やレポート生成 |
コメント