HOWTO · MySQL
XAMPP MySQL コマンドライン
XAMPPのMySQL互換サーバーにコマンドラインから接続し、対象データベースを作成して、SQLファイルをそのデータベースにインポートする方法を説明します。
このページの内容
XAMPPからMySQLに接続するには、データベースサービスを起動し、ターミナルを開いて、接続情報を指定して付属のmysqlクライアントを実行します。次に、インポート先のデータベースを作成し、.sqlダンプをそのデータベースに読み込みます。XAMPPではMySQL互換サーバーとしてMariaDBが使われることがあるため、クライアントのプロンプトにMariaDBと表示される場合があります。
以下は未実行の手順で、インストール環境によって異なります。ローカルにXAMPPがインストールされ、データベースサービスが起動している必要があります。実行結果は提示されていません。
XAMPPのコマンドラインからMySQLに接続する
使用しているプラットフォームのXAMPPコントロールパネルまたはマネージャーで、データベースサービスを起動します。Windowsでは、MySQLの横にあるStartをクリックし、続けてShellまたはコマンドプロンプトを開きます。Apacheが必要なのは、任意のphpMyAdminブラウザー確認を行う場合だけです。ターミナル接続には必要ありません。
付属クライアントの場所を確認します。以下はインストール先の例です。実際の環境に合わせて変更してください。
| プラットフォーム | クライアントのディレクトリ | ディレクトリへ移動 | クライアントの起動方法 |
|---|---|---|---|
| Windowsコマンドプロンプト | C:\xampp\mysql\bin |
cd /d "C:\xampp\mysql\bin" |
mysql.exe |
| macOSネイティブインストール | /Applications/XAMPP/xamppfiles/bin |
cd /Applications/XAMPP/xamppfiles/bin |
./mysql |
| Linux | /opt/lampp/bin |
cd /opt/lampp/bin |
./mysql |
Windowsではクライアントのディレクトリからmysql.exe -u root -p -h 127.0.0.1 -P 3306を実行します。macOSまたはLinuxでは、mysql.exeの代わりに./mysqlを使います。rootと3306は、設定しているアカウント名とポートに置き換えてください。
-uはユーザー、-pはパスワード入力プロンプト、-hはホスト、大文字の-Pはポートを指定します。プロンプトが表示されたら、アカウントのパスワードを入力します。パスワードが設定されていないと分かっている場合に限り、何も入力せずEnterキーを押してください。パスワードをコマンドに直接書くとシェルの履歴に残る可能性があるため、避けてください。
127.0.0.1はローカルのTCP接続を指定します。Unix系システムでは、localhostを使うか-hを省略すると、ローカルソケット接続が選ばれることがあります。これらの接続方式は常に同じように動作するとは限りません。この手順では、ホストとポートを一貫して使用してください。
クライアントが見つからない場合は、インストール先を確認するか、そのディレクトリをPATHに追加します。接続に失敗した場合は、サービスとポートを確認してください。アクセス拒否のメッセージが表示された場合は、アカウント、パスワード、接続元として許可されたホストを確認します。接続後は、プロンプト自体をコピーせず、クライアントの入力欄にSQLを入力してください。
MySQLでデータベースを作成する
データベースクライアントのプロンプトでCREATE DATABASE example_Db;を入力し、続けてUSE example_Db;を実行します。最初の文でデータベースを作成し、次の文でそのセッションの後続の文に使うデータベースを選択します。各SQL文の末尾にはセミコロンを付けてください。
作成に成功すると、通常はクライアントにQuery OKと表示されます。表示までの時間や形式は環境によって異なります。選択状態はSELECT DATABASE();で確認できます。この文は選択中のデータベース名を返します。example_Dbがすでに存在する場合は、再作成せずに選択してください。データベースの作成には、アカウントに適切な権限が必要です。データベース名の大文字と小文字は一貫させてください。
既存のデータベースにSQLファイルをインポートする
インポートでは、SQLファイル内の文を対象データベースに対して実行します。ダンプにはデータを削除する文が含まれていることがあり、ファイル内のUSE文によって対象データベースが変わる場合もあります。先に内容を確認し、保持が必要な既存データはバックアップしてください。
exitを入力してデータベースクライアントを終了します。Windowsコマンドプロンプトで、mysql.exe -u root -p -h 127.0.0.1 -P 3306 example_Db < "E:\example\example_Db.sql"を実行します。引用符で囲まれたパスは、実際のダンプファイルのパスに置き換えてください。アカウント、ホスト、ポートには、先ほどの接続と同じ設定を使います。
macOSまたはLinuxでは、付属クライアントのディレクトリから./mysql -u root -p -h 127.0.0.1 -P 3306 example_Db < "/path/to/example_Db.sql"を実行します。Windows PowerShellはこの<構文をサポートしていないため、Windowsの例にはコマンドプロンプトを使ってください。
シェルの<演算子がファイルをクライアントに渡します。このコマンドをMySQLまたはMariaDBのプロンプトで入力してはいけません。上記のどちらのコマンドでも、クライアントの初期データベースとしてexample_Dbを指定しているため、このデータベースがあらかじめ存在している必要があります。存在しない場合は接続の初期化に失敗し、ダンプ内のCREATE DATABASEやUSE文は実行されません。ダンプがデータベースを作成して選択する場合は、インポートコマンドから位置引数のexample_Dbを省略し、ダンプ内の文に必要な権限がアカウントにあることを確認してください。ファイルが見つからない場合はローカルのダンプパスを修正し、データベースが見つからない場合は対象を作成するか指定を修正します。
インポート後、同じ接続コマンドで再接続し、USE example_Db;を入力してからSHOW TABLES;を実行します。ダンプに記載された想定テーブルとデータを確認してください。ダンプにuser_detailsが定義されている場合は、DESCRIBE user_details;とSELECT COUNT(*) FROM user_details;で確認できます。定義されていない場合は、実際に含まれているテーブル名に置き換えてください。シェルに戻っただけでは、必要なデータがすべて読み込まれたとは確認できません。
任意の画面上での確認には、Apacheを起動し、設定済みのWebサーバーポートを使ってhttp://localhost/phpmyadmin/を開きます。example_Dbを選択し、想定されるテーブルのStructureまたはBrowseビューを確認してください。