ホームページ >バックエンド開発 >PHPチュートリアル >PHP で SSH 経由で MySQL に接続するときの「mysqli_connect() はパラメータ 6 が文字列であることを期待しており、リソースが指定されています」エラーを解決するにはどうすればよいですか?

PHP で SSH 経由で MySQL に接続するときの「mysqli_connect() はパラメータ 6 が文字列であることを期待しており、リソースが指定されています」エラーを解決するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-21 22:32:02486ブラウズ

How to Resolve

PHP で SSH 経由で MySQL サーバーに接続する

問題:

SSH を使用してデータベースに接続中にエラーが発生しました。 ssh2ライブラリ。具体的には、エラーは「mysqli_connect() はパラメータ 6 が文字列であることを期待しており、リソースが指定されています。」です。

問題の説明:

上記のエラー メッセージは、間違った型を mysqli_connect() に渡したことを示唆しています。 mysqli_connect 関数の 6 番目のパラメータ。

解決策:

この問題を解決するには、6 番目のパラメータとしてリソースの代わりに文字列を渡します。この場合、このパラメータは SSH トンネル ソケットへのパスであることが想定されます。

SSH トンネル セットアップ:

SSH 経由で MySQL サーバーに接続するには、次の設定を行う必要があります。次の手順を使用して SSH トンネルを作成します。

1. SSH トンネル コマンド:

ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 
  • '-f': バックグラウンドで実行
  • '-N' : リモート コマンドを実行しない
  • '-L': ローカル ポート フォワーディングを有効にする
  • '3307': マシン上のローカル ポート
  • '10.3.1.55': リモート MySQL サーバー アドレス
  • '3306': リモート MySQL サーバー ポート
  • '[email protected]': SSH プロキシ ホストとユーザー名

2. MySQL クライアント接続:

トンネルが設定されたら、ローカル MySQL クライアントを使用して MySQL サーバーに接続できます:

mysql -h 127.0.0.1 -P 3307 -u dbuser -p passphrase
  • '- h': ローカル MySQL サーバー アドレス
  • '-P': ローカル ポート番号
  • '-u': MySQL ユーザー名
  • '-p': MySQL パスワード

3. PHP 接続:

最後に、PHP アプリケーションで MySQL サーバーに接続します:

<code class="php"><?php
$smysql = mysql_connect("127.0.0.1:3307", "dbuser", "passphrase");
mysql_select_db("db", $smysql); 
?></code>

セキュリティに関するメモ:

拡張版セキュリティを確保するには、MySQL サーバーに直接接続する代わりに、SSH プロキシとして要塞ホスト (Jumpbox) を使用します。

以上がPHP で SSH 経由で MySQL に接続するときの「mysqli_connect() はパラメータ 6 が文字列であることを期待しており、リソースが指定されています」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。