PHP接続を使用して、phpmyadminにあるMySQLデータベースに接続しようとしています。接続が成功したかどうかを確認しようとするだけでは、接続についての空想はありません。 MAMPを使用してデータベースをホストしていますが、使用しようとしている接続は次のとおりです。
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "root";
try {
$conn = new PDO("mysql:Host=$servername;dbname=AppDatabase", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Connected successfully";
}
catch(PDOException $e)
{
echo "Connection failed: " . $e->getMessage();
}
?>
接続が機能しているかどうかを確認するためにpostmanを使用してきましたが、次のエラーメッセージが引き続き表示されます。
接続に失敗しました:SQLSTATE [HY000] [2002]接続が拒否されました
次のエラーメッセージを受信する前に:
接続に失敗しました:SQLSTATE [HY000] [2002]そのようなファイルまたはディレクトリはありません
これは、接続を拒否したIPアドレスに変更することでサーバー名をlocalhostに設定したため、何が間違っているのかわかりません。
これに関するヘルプをいただければ幸いです。
接続が機能しなかった理由を見つけました。ポート8889に接続する必要があるときに、接続がポート8888に接続しようとしたためです。
$conn = new PDO("mysql:Host=$servername;port=8889;dbname=AppDatabase", $username, $password);
これにより問題が修正されましたが、サーバー名をlocalhostに変更してもエラーが発生します。
接続に失敗しました:SQLSTATE [HY000] [2002]そのようなファイルまたはディレクトリはありません
ただし、サーバー名にIPアドレスを入力すると、正常に接続されます。
私の場合、MySQLサーバーは実行されていませんでした。 MySQLサーバーを再起動し、問題は解決しました。
//on ubuntu server
Sudo /etc/init.d/mysql start
MySQL停止の問題を回避するには、Ubuntu 14.04 LTS Linuxの「initctl」ユーティリティを使用して、障害または再起動の場合にサービスが確実に再起動するようにします。データ保持の目的でこの操作を実行する前に、ルートボリュームのスナップショット(mysqlを停止した状態)を話すことを検討してください[8]。次のコマンドを使用して、「initctl」ユーティリティを使用して、停止および開始操作でmysqlサービスを管理できます。
$ Sudo initctl stop mysql
$ Sudo initctl start mysql
動作を確認するには、サービスのステータスを確認してプロセスID(PID)を取得し、「mysql」プロセスを強制終了して障害をシミュレートし、しばらくして(通常1分以内に)新しいプロセスIDで実行中のステータスを確認します次のコマンドを使用します。
$ Sudo initctl status mysql # get pid
$ Sudo kill -9 <pid> # kill mysql process
$ Sudo initctl status mysql # verify status as running after sometime
MAMPを使用して、Host=localhost
をHost=127.0.0.1
に変更しました。しかし、新しい問題が発生しました"connection refused"
'port' => '8889'
を'Datasources' => [
に入れることでこれを解決しました