web-dev-qa-db-ja.com

PHP Laravel:ターゲットマシンが積極的に拒否したため、接続できませんでした

Laravel 5.でWebアプリケーションを構築しています。アプリケーションは、MySQLデータベースに保存されている「カテゴリ名」を取得し、新しい「カテゴリ名」を追加するフォームを表示するはずです。コマンドphp artisan servehttp:// localhost:8000/admin/categories / に移動すると、次のエラーメッセージが表示されます。

PDOException in Connector.php line 50:
SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.

スタックオーバーフローに関するいくつかの投稿によると、このエラーが発生した多くのユーザーは.envファイルを適切に構成しなかったため、PHP Data Object(PDO)のデフォルト設定を上書きします。 database.phpファイル.envファイルは以下で定義されます。

DB_Host=localhost
DB_DATABASE=Homestead
DB_USERNAME=Homestead
DB_PASSWORD=secret

また、database.phpファイル内のmysqlキーは次のように指定されます。

 'mysql' => [
            'driver'    => 'mysql',
            'Host'      => env('DB_Host', 'localhost'),
            'database'  => env('DB_DATABASE', 'Homestead'),
            'username'  => env('DB_USERNAME', 'Homestead'),
            'password'  => env('DB_PASSWORD', 'secret'),
            'charset'   => 'utf8',
            'collation' => 'utf8_unicode_ci',
            'prefix'    => '',
            'strict'    => false,

奇妙なことに、仮想マシンにSSH接続してmysql -uhomestead -psecret Homestead、データベースに接続できます。問題は、Laravelが同じパラメーターで直接MySQLに接続できるのにMySQLに接続できないのはなぜですか?Laravelへのアクセスを拒否できるものは他にありますか?

14
jstein

Homestead.yamlで指定されたIPアドレスをlocalhostから192.168.10.10に変更しました。次に、Homestead provisionそしてそれは問題を解決するように思われた。ホストマシンは、ローカルホストまたは127.0.0.1が既にマップされているため、それを解決できません。

6
jstein

Wampserverでも同じ問題が発生しています。それは私のために働いた:

このファイルを変更する必要があります: "C:\ wamp\bin\mysql [mysql_version]\my.ini"例: "C:\ wamp\bin\mysql [mysql5.6.12]\my.ini"

そして、デフォルトのポート3306を80に変更します(両方の行20と27、)port = 3306 To port = 80

これがお役に立てば幸いです。

次に、コントロールパネルに移動して、ApacheとMySQLサービスを開始します。

2
Jigs Virani

なぜLaravel同じパラメーターで直接接続できるのにMySQLに接続できないのですか?

さあ、env('DB_Host', 'localhost')NULLと同じではなく、env('DB_USERNAME', 'Homestead')Homesteadと同じではありません

明示的に提供されたリテラル、不在のパラメーター、または何らかの関数の結果のような、同じような異なる事項を「同じ」と呼ぶことはできません!それは3つです異なる問題!

どちらの場合もliterally同じパラメーターを指定した場合にのみ、「同じ」と言うことができます。

mysql -hlocalhost -uhomestead -psecret Homestead

シェル用

'mysql' => [
        'driver'    => 'mysql',
        'Host'      => 'localhost',
        'database'  => 'Homestead',
        'username'  => 'Homestead',
        'password'  => 'secret',

ララヴェルの。

2

私は同じ問題に直面し、インターネットですべての答えを読みましたが、誰も助けませんでした!最終的に答えを見つけたと私はこのソリューションが誰かを助けることを願っています。

DB_PORTを33060に設定しただけで、問題は解決しました。

1
Moslem Deris

理由は次のとおりです。

異なるサーバーからDBにアクセスしようとする場合、直面するconmanの問題のほとんどはDBアクセスはlocalhost/127.0.0.1のみに制限されます

解決策:my.cnf(Ubuntuでは再び/etc/mysql/my.cnf)にあり、以下を変更できます:

bind-address   = 0.0.0.0

または

bind-address   = SERVER_PUBLIC_IP_ADDRESS

Rootユーザーで任意のIPからDBアクセスを提供することは安全ではないため、rootの代わりにdbユーザーを作成し、rootの使用を削除することをお勧めします。

同じサーバーからDBに接続しようとしている場合:

解決策:Unixソケットの代わりにTCP/IPを使用してください。接続時に、localhostの代わりに127.0.0.1を使用してこれを行います。ただし、Unixソケットはより高速で安全に使用できます。

変更後、mysqlサービスを再起動します

Sudo service mysql restart
1

私が変更され

DB_Host = localhost

DB_Host = localhost:3307

.envファイル内

1
Raja ji

同じ問題が一度発生しましたが、私自身の場合、ローカルサーバーで実行していました。私は後でエラーを発見しました:

"PDOException with a message 'SQLSTATE[HY000] [2002]ターゲットマシンが積極的に拒否したため、接続できませんでした。」

私が開始していないからでしたApache and MySQL in Xamppコントロールパネル。このため、アプリケーションは、結合がなかったため、目的の結果を取得できませんでした。

すぐに両方を開始しましたApache and MySQL Xamppコントロールパネル、the error was fixed。これがあなたのために働くことを願っています

0
iMichaelOwolabi

Windowsでは、ユーザーアクセス許可(UAC)をオフにします。

プロンプトが表示されたら、ファイアウォールの通過を許可することを忘れないでください。

0
Henry

私の場合、DB_Hostの-​​。envファイルに、VM Homesteadのデフォルト(192.168.10.10)のようなアドレス)に書き込みました。 artisan migrateに対してのみ機能しますが、アプリを使用してこのデータベースを「リモート」で接続するには、127.0.0.1のIPを使用する必要があります。

それが誰かを助けることを願っています。

0
Paul Burilichev

XAMPPを確認します(使用している場合)。 xamppが有効になっていないかオフラインになっていることに気付くまで同じエラーが何度も発生したため、xamppを有効にすると、ようやく機能しました。

0
Justin Herrera

SQLiteデータベースでこのエラーが発生しました。 Laravelでは、データベースファイルが存在しない場合に作成される他の環境とは異なり、データベースファイルを手動で作成する必要がありました。作成しましたサーバーを実行しています。そして、これはこのエラーに私を導きます。サーバーの再起動後は問題ありませんでした。

0
Jan Bodnar

時々キャッシュの問題:

    php artisan config:clear
0
joun