◀ 14.

mysql_configが見つからない|mysqlclientの旧ビルドとpkg-configの確認

▶

mysql_configが見つからないエラーは、mysqlclientの旧ソースビルドが必要なツールを実行できない状態です。DBへの接続やパスワード認証に進む前の問題なので、DB再起動・権限変更では切り分けません。

ビルドとインポート、DB接続を別の段階として診断する図

旧mysql_configと現行pkg-configを分ける

公式の変更履歴では2.2.0でPOSIXビルドの検出方式がmysql_configからpkg-configへ変わりました。2026年10月確認の2.3.0のsetup.pyもpkg-configを使います。掲載ログの1.4.2.post1と現行版を同じコマンドで直せるとは限りません。まず依存ファイルやpipログで、実際に選ばれた版とソース配布かwheelかを確認してください。

失敗した段階確認するもの
旧版のmysql_config未検出旧版の要件、開発ツールの実パス、ビルド時のPATH。ホストにあってもコンテナ内から見えるとは限らない
pkg-configがない / パッケージ未検出pkg-config本体と.pcファイル、開発ライブラリ、PKG_CONFIG_PATH。コマンドの存在だけでは検出成功にならない
コンパイル/リンク失敗Python用とDBクライアント用のヘッダー、コンパイラ、CPU/ABI、実際の最初のエラー
インポート時の共有ライブラリ不足実行コンテナにも対応ライブラリがあるか。ビルド用環境だけの導入では不十分な場合がある
インポート後の接続失敗接続先/ソケット/TLS/認証。ビルドの問題とは別に調べる

変更せずにPythonとツールの所在を確認する

次のPython 3用スクリプトは、実行したPythonとインストール済みの配布版、PATH上のツールを表示するだけです。DB接続・ドライバのインポート・インストール・サブプロセス実行はしません。未導入はnullになります。パスにはユーザー名等を含み得るため、出力をそのまま公開しないでください。

"""Print build-context metadata only; no installs, DB access or environment dump."""
import importlib.metadata
import json
import platform
import shutil
import sys


def inspect_build():
    try:
        version = importlib.metadata.version("mysqlclient")
    except importlib.metadata.PackageNotFoundError:
        version = None
    return {
        "python": platform.python_version(),
        "executable": sys.executable,
        "system": platform.system(),
        "machine": platform.machine(),
        "installed_mysqlclient": version,
        "mysql_config": shutil.which("mysql_config"),
        "pkg_config": shutil.which("pkg-config"),
    }


if __name__ == "__main__":
    print(json.dumps(inspect_build(), ensure_ascii=True, indent=2))

対象の仮想環境/ビルドコンテナ内で実行します。この結果は配布版メタデータと実行ファイルの所在であり、.pcファイルの発見・コンパイル・インポート・DB通信の成功を保証しません。

OS別の導入前提と安全な確認順

  1. OS/CPU、Pythonとmysqlclientの対象版、失敗したビルド環境を記録し、公式READMEと照合する。Pythonの版を変えるだけで依存関係全体が適合するとは限らない。
  2. LinuxではPython開発ヘッダー、クライアント開発ヘッダー/ライブラリ、コンパイラ、pkg-configの要否を確認する。公式READMEのDebian/Ubuntu例とRed Hat系の例を混在させず、実際のOSのパッケージ名・リポジトリを確認する。
  3. macOSの公式Homebrew例はmysql-clientだけを使う構成も案内する。DBサーバーの追加を必須とせず、.pcファイルのパスを確認する。Windowsは対応wheelの有無と、ソースビルド時のConnector/C・Visual Studioの条件を別に確認する。
  4. 変更は開発/検証環境で計画し、依存関係を記録する。不要な旧版固定、出所不明のwheel、TLS検証無効化を回避策にしない。
  5. 導入後は対象Pythonでのインポートと、権限を限定した接続試験を別々に確認する。接続成功だけでトランザクション/文字コード等のアプリ互換性まで保証しない。

CentOS Linux 7は2024年6月30日にEOLです。下の旧yum例を現行の推奨環境として復活させず、保守環境と移行先を分けて検討します。

PyMySQLへ変える場合の注意

PyMySQLは別のドライバです。pip installだけでMySQLdbを参照する既存コードやフレームワーク設定が書き換わるわけではありません。利用側が対応する接続指定と必要な認証依存を確認し、文字コード/TLS/トランザクション/例外処理を試験してください。本記事のビルド診断とは別の移行作業です。

一次資料: mysqlclient公式導入手順、検出方式の変更履歴、2.3.0のビルド検出処理、CentOS LinuxのEOL、PyMySQLの利用例。他のDBエラーは親のエラー一覧の子ページから選んでください。

この記事の要点
  • CentOS で mysql_config: コマンドが見つかりません(mysqlclient pip install エラー)
  • 原因候補: 開発用ツール/ヘッダーの不足、PATHやビルド環境の違い。未導入と即断しない
  • 対処: 対象のPython・mysqlclient版・OS・開発ライブラリを照合してから、配布元の導入手順を選ぶ
  • 別ドライバのPyMySQLは導入だけで自動置換されない。既存コード/フレームワークの対応確認が必要

 

エラー内容

下はmysqlclient 1.4.2.post1の旧ビルド記録です。現在のインストール手順や、全OSで同じ原因になる例ではありません。スタックは調査資料としてそのまま残します。

Collecting mysqlclient
  Using cached https://files.pythonhosted.org/packages/f4/f1/3bb6f64ca7a429729413e6556b7ba5976df06019a5245a43d36032f1061e/mysqlclient-1.4.2.post1.tar.gz
    ERROR: Complete output from command python setup.py egg_info:
    ERROR: /bin/sh: mysql_config: コマンドが見つかりません
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-install-cfwfxe_x/mysqlclient/setup.py", line 16, in <module>
        metadata, options = get_config()
      File "/tmp/pip-install-cfwfxe_x/mysqlclient/setup_posix.py", line 51, in get_config
        libs = mysql_config("libs")
      File "/tmp/pip-install-cfwfxe_x/mysqlclient/setup_posix.py", line 29, in mysql_config
        raise EnvironmentError("%s not found" % (_mysql_config_path,))
    OSError: mysql_config not found
    ----------------------------------------
ERROR: Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-cfwfxe_x/mysqlclient/

 

発生条件/原因/対処法

次の黒い表は当時のpipコマンドです。今の環境では対象の仮想環境を有効にし、そのPythonに対応するpython -m pipで導入先を確認します。sudoでシステムPythonへ一括導入する手順にはしません。

pip install mysqlclient

次のyum installは旧環境の変更コマンドで、一律に実行しません。 mysql-community-develが適合するかは有効なリポジトリと導入済みのMySQL/MariaDB・OS版次第です。まず開発ライブラリとツールの所在を確認し、競合する別配布版やDBサーバーを追加しないでください。

yum install mysql-community-devel

 

子ページ

子ページはありません

同階層のページ
  1. 1071 Specified key was too long; max key length is 767 bytes
  2. ERROR 1063 (42000): Incorrect column specifier for column '~'
  3. mysqld: Can't change dir to '...\MySQL\MySQL Server X.X\data\' (OS errno 2 - No such file or directory)
  4. Install/Remove of the Service Denied!
  5. Datetime 型が NULL に見える
  6. Warning: World-writable config file '/etc/mysql/my.cnf' is ignored
  7. ERROR 1698 (28000): Access denied for user 'root'@'localhost'
  8. Exception: Wrong MySQL configuration
  9. [Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
  10. ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
  11. ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
  12. Incorrect column specifier for column 'カラム名'
  13. BLOB/TEXT column 'description' used in key specification without a key length
  14. ERROR: /bin/sh: mysql_config: コマンドが見つかりません
  15. Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
  16. CSVエクスポート時に「ERROR 1045 (28000): Access denied for user 'username'@'localhost'」エラーが表示される
  17. Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT
  18. SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: ~

最近更新/作成されたページ