SSH 経由でリモート MySQL サーバーに接続するには、ローカルとの間に安全なトンネルを確立する必要があります。マシンと MySQL データベース サーバー。このガイドでは、SSH トンネルのセットアップと PHP を使用したデータベースへの接続に関連する手順の概要を説明します。
エラー「mysqli_connect() はパラメーター 6 が文字列であることを期待しており、リソースが指定されています」 mysqli_connect() の 6 番目のパラメータが MySQL トンネルを表す文字列ではない場合に発生します。この問題を解決するには、次に示すように、6 番目のパラメータを ssh2_tunnel 関数の出力になるように変更します。
<code class="php">$connection = ssh2_connect('SERVER IP', 22); ssh2_auth_password($connection, 'username', 'password'); $tunnel = ssh2_tunnel($connection, 'DESTINATION IP', 3307); $db = mysqli_connect('127.0.0.1', 'DB_USERNAME', 'DB_PASSWORD', 'dbname', 3307, stream_get_contents($tunnel)) or die ('Fail: '.mysql_error());</code>
MySQL サーバーに接続するための推奨ソリューションSSH は SSH トンネルを確立することです。トンネルを設定するための 2 つのオプションは次のとおりです。
組み込みの SSH トンネリング サポートを提供する Visual Studio Code や TablePlus などの GUI MySQL クライアントを使用します。
次のコマンドを使用してローカル ポート転送を設定します:
<code class="bash">ssh -fNg -L 3307:10.3.1.55:3306 [email protected] </code>
トンネルが確立されたら、PHP スクリプトのローカル ポート (3307) を介して MySQL サーバーに接続します。
<code class="php"><?php $smysql = mysql_connect( "127.0.0.1:3307", "dbuser", "passphrase" ); mysql_select_db( "db", $smysql ); ?></code>
データベース サーバーがインターネットに直接公開されるのを防ぐために、ジャンプボックス サーバーを介してトンネルを確立することが重要です。さらに、セキュリティを強化するために、パスワード認証の代わりに SSH キー認証を使用することを検討してください。
以上がPHP で SSH 経由で MySQL サーバーに接続する方法: トラブルシューティングとベスト プラクティスの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。