【MySQL接続エラー】SQLSTATE[HY000] [2002] Connection refusedが発生した

code coder coding computer 実践してみた
Photo by Pixabay on Pexels.com

今日はMySQL接続エラー「SQLSTATE[HY000] [2002] Connection refused」が発生した時の対処法を記載します。

環境

まずは発生した環境を記載します。

環境 バージョン
Windows10 HOME
Docker Docker version 20.10.11, build dea9396
PHP 7.4
MySQL
5.7

エラー内容

エラー発生時のファイル

PHPファイルにMySQLに接続するためのファイル

  • dbconnect.php
<?php

$dbn = 'mysql:dbname=test;host=127.0.0.1;charset=utf8';
$user = 'root';
$password = '***';

try {
    $db = new PDO($dbn, $user, $password);
} catch (PDOException $e) {
    echo 'DB connect error'.$e->getMessage();
    die();
}
?>
  • registration.php
<?php
    session_start();
    require('dbconnect.php');
---以下省略----
?>

「registration.php」ファイルを表示すると以下のようなエラーが発生。

DB connect errorSQLSTATE[HY000] [2002] Connection refused

エラーを見ると「SQLSTATE[HY000] [2002] Connection refused」と書いてありました。

MySQLに上手く接続できてないようです。

対処法

ググっていると以下のサイトに対処方法が書いてありました。

dockerでmysqlに接続するにはどうすればいいか

サイトによるとMySQLのIPアドレスをを入力することで解決できると書いてましたので試してみます。

MySQLにログインして以下コマンドを入力します。

cat /etc/hosts

コマンドを入力すると次のように表示されましたので、IPアドレスを確認します。

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.18.0.2      45338232747d

今回の場合「172.18.0.2」がMySQLのIPであるため、先ほどの「dbconnect.php」ファイルの「$dbn = ‘mysql:dbname=test;host=127.0.0.1;charset=utf8’;」のhost部分を書き換えます。

修正後のファイル

  • dbconnect.php
<?php

$dbn = 'mysql:dbname=test;host=172.18.0.2;charset=utf8';
$user = 'root';
$password = '***';

try {
    $db = new PDO($dbn, $user, $password);
} catch (PDOException $e) {
    echo 'DB connect error'.$e->getMessage();
    die();
}
?>

修正後「registration.php」を表示すると正常にMySQLに接続でき、表示することができました。

今回は以上となります。ありがとうございました。

 

コメント

タイトルとURLをコピーしました