PHPの致命的なエラー:キャッチされない例外「PDOException」とメッセージ「SQLSTATE [HY000] [2002]接続が拒否されました

ハナネゴバディ

データベース用に別のサーバーがあります。

PDOを使用してデータベースに接続するとき、ホストパラメーターにデータベースVMのIPアドレスを使用しました。

$dbh = new pdo("mysql:host=192.168.56.103;port=3306;dbname=data",'root','root')

しかし、接続が拒否されます(PDOException 'とメッセージ' SQLSTATE [HY000] [2002] ')。そこにMySQLが見つからなかったと思います。ただし、そのIPを持つVMを見つけることができます。

s1mmel

次に、mysqlが実際に実行されていないかどうかを確認します。

sudo aptitude install nmap

その後:

sudo nmap -sS <ipofdbserverhere>

ツールをmysqlサーバーにインストールすることもできます。コマンドは次のようになります。

sudo nmap -sS localhost

どちらの場合も、答えは次のようになります。

[simmel]@[mars]$ sudo nmap -sS 172.16.1.41

Starting Nmap 6.40 ( http://nmap.org ) at 2015-04-08 15:09 CEST

Nmap scan report for 172.16.1.41
Host is up (0.010s latency).
Not shown: 996 closed ports
PORT     STATE SERVICE
3306/tcp open  mysql

Nmap done: 1 IP address (1 host up) scanned in 33.17 seconds

ポート3306が表示されている場合は、実際に開いており、接続の準備ができています。その場合は、コンピューターからコマンドラインからmysqlを使用してください。

mysql -u<USER> -p<PASSWORD> -h<ipofdbserverhere> <databasename>

同じメッセージが表示されますか?接続拒否?次に、ユーザーはおそらく間違った権限を持っています。

これのもう1つの理由は、mysqlサーバーが127.0.0.1などの特定のアドレスにバインドされている場合です。

調べるには、以下からの出力を確認してください。

sudo netstat -tlpen

mysqlがリッスンして0.0.0.0:3306ないがリッスンしている場合は127.0.0.1:3306、localhostからのみ接続できます。

これを変更/etc/mysql/my.cnfするには、次の行に移動してコメントアウトします。

bind-address            = 127.0.0.1

コメントアウトする方法は、先頭の#文字を追加することです。

#bind-address            = 127.0.0.1

ファイルを保存し、mysqlサービスを再起動します

sudo service mysql restart

これで、接続できるようになります。

ポートを変更するには、次のように入力します。

port = 8888

/etc/mysql/my.cnf

ファイルを保存し、mysqlサービスを再起動します。

sudo service mysql restart

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ