SSH를 통해 원격 MySQL 서버에 연결하려면 로컬 간에 보안 터널을 설정해야 합니다. 머신과 MySQL 데이터베이스 서버. 이 가이드에서는 SSH 터널을 설정하고 PHP를 사용하여 데이터베이스에 연결하는 단계를 간략하게 설명합니다.
"mysqli_connect()에서는 매개변수 6이 문자열, 리소스가 제공되어야 합니다." 오류가 발생합니다. mysqli_connect()의 여섯 번째 매개변수가 MySQL 터널을 나타내는 문자열이 아닐 때 발생합니다. 이 문제를 해결하려면 아래와 같이 여섯 번째 매개변수를 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 터널을 설정하는 것입니다. 터널 설정을 위한 두 가지 옵션은 다음과 같습니다.
내장 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>
데이터베이스 서버가 인터넷에 직접 노출되는 것을 방지하려면 Jumpbox 서버를 통해 터널을 설정하는 것이 중요합니다. 또한 보안 강화를 위해 비밀번호 인증 대신 SSH 키 인증을 사용하는 것을 고려해 보세요.
위 내용은 PHP에서 SSH를 통해 MySQL 서버에 연결하는 방법: 문제 해결 및 모범 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!