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

Barbara Streisand
リリース: 2024-10-21 22:30:02
オリジナル
738 人が閲覧しました

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] 
ログイン後にコピー
  • Replace '3307 ' を優先するローカル ポート番号に置き換えます。
  • '10.3.1.55:3306' を MySQL データベース サーバーの IP アドレスとポートに置き換えます。
  • '[email protected]' をジャンプボックスに置き換えます。ログイン認証情報。

データベースへの接続:

  1. PHP スクリプトで、mysqli_connect():
<code class="php">$mysqli = mysqli_connect("127.0.0.1:3307", "DB_USERNAME", "DB_PASSWORD", "dbname");</code>
ログイン後にコピー
    SSH トンネル設定で指定されたローカル ポート番号 (この例では 3307) を使用します。

追加の考慮事項:

    SSH トンネリング サポートを備えた GUI MySQL クライアント (Visual Studio Code など) を使用すると、セットアップ プロセスを簡素化できます。
  • 秘密キー認証によりセキュリティを強化できます。 SSH コマンドで「-i」スイッチを使用して、秘密キーのパスを指定します。
  • Jumpbox/Bastion ホストを介してトラフィックをトンネルし、データベースへの直接アクセスの脆弱性を軽減します。

以上がPHP を使用して SSH 経由で MySQL に接続するときに発生する mysqli_connect() パラメータの問題を修正する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート