「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP を使用して SSH 経由で MySQL に接続するときに発生する mysqli_connect() パラメータの問題を修正する方法

PHP を使用して SSH 経由で MySQL に接続するときに発生する mysqli_connect() パラメータの問題を修正する方法

2024 年 11 月 6 日に公開
ブラウズ:678

How to Fix mysqli_connect() Parameter Issue When Connecting to MySQL over SSH with PHP?

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

PHP 関数を使用して SSH 経由でリモート Linux マシン上でホストされている MySQL データベースへの接続を確立するのは難しい場合があります。提供されたコードを使用すると、「mysqli_connect() はパラメータ 6 が文字列であることを期待しています、リソースが指定されています」というエラーが発生することがあります。

問題について

このコードは、mysqli_connect() 関数を使用して、 SSH トンネル経由でデータベースに接続します。ただし、mysqli_connect() 関数は 6 番目のパラメータとして文字列 (トンネルを示す) を期待しますが、ssh2_tunnel() 関数はリソースを返します。

SSH トンネルの問題の解決

解決するにはこの問題では、MySQL データベース サーバーへの SSH トンネルをセットアップします。効果的な方法の 1 つは、セキュリティ強化のために Jumpbox プロキシを使用することです。このアプローチには、SSH クライアントを使用してローカル ポート転送トンネルを作成し、ローカル マシンとデータベース サーバーの間に安全なチャネルを効果的に作成することが含まれます。

ステップバイステップ ガイド

使用方法コマンド ライン ツール (SSH トンネル セットアップ):

  1. ローカル端末から次の SSH コマンドを実行します:
ssh -fNg -L 3307:10.3.1.55:3306 [email protected] 
  • 「3307」を優先ローカル ポート番号に置き換えます。
  • 「10.3.1.55:3306」を IP アドレスとポートに置き換えます。
  • 「[email protected]」を Jumpbox ログイン認証情報に置き換えます。

データベースへの接続:

    ]
  1. PHP スクリプトで、mysqli_connect():
$mysqli = mysqli_connect("127.0.0.1:3307", "DB_USERNAME", "DB_PASSWORD", "dbname");
  • SSH トンネル設定で指定されたローカル ポート番号 (この例では 3307) を使用します。

追加の考慮事項:

  • SSH トンネリング サポートを備えた GUI MySQL クライアント (Visual Studio Code など) を使用すると、セットアップ プロセスを簡素化できます。
  • 秘密キー認証によりセキュリティを強化できます。 SSH コマンドで「-i」スイッチを使用して、秘密キーのパスを指定します。
  • Jumpbox/Bastion ホストを介してトラフィックをトンネルし、データベースへの直接アクセスの脆弱性を軽減します。
リリースステートメント この記事は次の場所に転載されています: 1729520899 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3