| この記事の要点 |
|
エラー内容
mysqld: Can't change dir to '...\MySQL\MySQL Server X.X\data\' (OS errno 2 - No such file or directory)
多くの場合、続けて [ERROR] Aborting が表示され、mysqld はすぐに終了します。OS errno 2 は Windows の「指定されたファイル(フォルダ)が見つからない」に相当するエラー番号です。
原因: data フォルダが見つからない
mysqld.exe は起動時に、設定ファイルの datadir、指定が無ければ basedir\data(インストール先直下の data)をデータディレクトリとして開きます。そのフォルダが存在しないとこのエラーになります。よくあるパターンは次の通りです。
| パターン | 状況 |
|---|---|
| ZIP 版を展開しただけ | MySQL 5.7 以降の ZIP アーカイブには data フォルダが入っていない。初期化を実行していない |
| インストーラ版で mysqld を直接実行 | インストーラ版のデータは通常 C:\ProgramData\MySQL\MySQL Server X.X\Data にあり、my.ini もそこにある。設定ファイルを指定せずに起動すると、Program Files 側の data を探して失敗する |
| my.ini のパスの誤り | datadir のフォルダ名の打ち間違い、存在しないドライブを指定している |
| data フォルダの移動・削除 | アンインストールや手作業の整理で data が消えた |
対処法 1: ZIP 版で初めて使う場合(初期化する)
データディレクトリは「空フォルダ」ではなく、システムテーブル(mysql データベースなど)が入った状態でなければ起動できません。初期化コマンドで作成します。管理者として起動したコマンドプロンプトで実行してください。
- MySQL の bin フォルダへ移動する
(フォルダ名は実際のバージョン・展開先に合わせる)cd "C:\Program Files\MySQL\MySQL Server 8.4\bin" - データディレクトリを初期化する
data フォルダが自動で作られ、root の一時パスワードがコンソールに表示されます。メモしておきます。パスワード無しの root で始めたい開発用途ならmysqld --initialize --console--initialize-insecureを使います。 - 起動する
「ready for connections」と表示されれば成功です。別のコマンドプロンプトからmysqld --consolemysql -u root -pで接続し、一時パスワードを使った場合は最初にALTER USERでパスワードを変更します。
手順 2 の前に data フォルダを自分で作る場合は、中身が完全に空である必要があります。何かファイルが入っていると初期化は失敗します。
対処法 2: インストーラ版・設定ファイルを使う場合
my.ini で場所を指定しているなら、起動時にその設定ファイルを読み込ませます。
mysqld --defaults-file="C:\ProgramData\MySQL\MySQL Server 8.0\my.ini" --console
my.ini 側では、パスを正しく書けているか確認します。Windows のパスはスラッシュで書くか、バックスラッシュを 2 つ重ねると安全です。
[mysqld]
basedir="C:/Program Files/MySQL/MySQL Server 8.0"
datadir="C:/ProgramData/MySQL/MySQL Server 8.0/Data"
普段は Windows サービスとして動かしている場合、コマンドから mysqld を直接起動する必要はありません。「サービス」画面か net start MySQL80(サービス名は環境による)で起動します。
落とし穴
- 既存データがあるのに初期化しない: 以前のデータが別の場所に残っているなら、
--initializeで新しく作るのではなくdatadirをそこに向ける。初期化すると空の DB から始まる - ProgramData は隠しフォルダ: エクスプローラーで見えない場合は、アドレスバーに直接パスを入力するか、隠しファイルの表示を有効にする
- 権限不足: Program Files 配下に data を作る場合、管理者権限のないコマンドプロンプトでは書き込みに失敗する
- バージョン違いの data を流用: 異なるメジャーバージョンの data フォルダをコピーして使うと、別のエラーで起動しないことがある
確認方法
- data フォルダの中に
mysql・performance_schema・sysなどのフォルダやibdata1があるか - data フォルダ内の
ホスト名.err(エラーログ)に新しいエラーが出ていないか - 接続後に次の SQL で、実際に使われているデータディレクトリを確認できる
SHOW VARIABLES LIKE 'datadir';
関連
- MySQL の起動方法 (Windows)
- MySQL/MariaDB 初期設定 (my.cnf) 完全ガイド
- MySQL root ユーザーの初期パスワード確認方法完全ガイド
- Windowsサービス一覧の確認方法
子ページ
子ページはありません
同階層のページ
- 1071 Specified key was too long; max key length is 767 bytes
- ERROR 1063 (42000): Incorrect column specifier for column '~'
- mysqld: Can't change dir to '...\MySQL\MySQL Server X.X\data\' (OS errno 2 - No such file or directory)
- Install/Remove of the Service Denied!
- Datetime 型が NULL に見える
- Warning: World-writable config file '/etc/mysql/my.cnf' is ignored
- ERROR 1698 (28000): Access denied for user 'root'@'localhost'
- Exception: Wrong MySQL configuration
- [Warning] TIMESTAMP with implicit DEFAULT value is deprecated.
- ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
- ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
- Incorrect column specifier for column 'カラム名'
- BLOB/TEXT column 'description' used in key specification without a key length
- ERROR: /bin/sh: mysql_config: コマンドが見つかりません
- Host '...' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
- CSVエクスポート時に「ERROR 1045 (28000): Access denied for user 'username'@'localhost'」エラーが表示される
- Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT
- SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect string value: ~
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38