2017-10-23 2 views
1

私たちのデータベースサーバーは、ユーザーrootを持つすべてのローカルIPに対して許可アクセス権を持ち、すべてのローカルIPでcli経由でアクセスします。しかし、私たちのWebサーバ(別のマシン)で、Laravelはまだデータベースに接続されていないことができ、ここでエラーがあります:リモートMySQLはLaravel Configと連携していません

Error PHP

私は、キャッシュをクリアLaravelを再インストール(作曲をインストールし、新しいキーを生成しようとしました等)db configのドライブをsqliに変更すると、それでもリモートのデータベースに接続する際にエラーが発生しますが、そのマシン上のtinkerを使用してDBにクエリを実行するとDBが動作する理由はとても珍しいです。

+1

https://stackoverflow.com/questions/4078205/php-cant-connect-to-mysql-with-error-13-but-command-line-can – Mihai

+1

webseverを再起動しましたか? –

+1

ファイアウォールがファイアウォールをブロックしている可能性があります。ファイアウォール内に外部接続用に3306を開いていない可能性があります。 – Option

答えて

0

セキュリティ強化Linux(SELinux)は、米国国防総省の強制アクセス制御(MAC)を含むアクセス制御セキュリティポリシーをサポートするためのメカニズムを提供するLinuxカーネルセキュリティモジュールです。

httpd_can_network_connect(HTTPDサービス) :: HTTPDスクリプトとモジュールをネットワークに接続できるようにします。ルートとして

ラン:

# setsebool -P httpd_can_network_connect 1 
3

MySQLデータベースがリモートサーバー上にある場合はそれも次の問題のいずれかを指定できます。

ファイアウォールのブロックは、MySQLサービスを持つサーバーが外部からのアクセスをブロックするように設定されているファイアウォールの背後にありMySQLが動作するポートに接続します。

MySQLユーザ権限 MySQLサービスがファイアウォールの内側にない場合、次の原因は、ユーザにローカルホストアクセス権のみがあることです。

リモートサーバーにログインして、そこからシェルコマンドを使用してデータベースに接続して、実際にできることを確認する必要があります。

+0

私はさらに、データベースサーバーからiptablesを停止しようとしますが、sqlを他のマシンとWebサーバーマシン自体をcli経由で停止せずに接続することもできます。それはPDOの問題だと思いますか? –

+1

あなたのマシンにpdoがインストールされていない可能性もあります。 phpinfo()ページまたはPHPスクリプトからインストールされているかどうかを確認することができます if(extension_loaded( 'pdo')){ echo "Extension PDOが読み込まれています。 } – AlexR1712

0

は解決:setsebool httpd_can_network_connect=1をデータベース・サーバーに:php can't connect to mysql with error 13 (but command line can)

を今Laravelは実行することにより、DBを接続することができます。しかし、私はまだなぜそれを理解していない。合理的な説明はありますか?

関連する問題