簡體   English   中英

MySQL通過SSH隧道訪問被拒絕

[英]MySQL via SSH Tunnel Access Denied

我想使用 SSH 隧道連接到遠程主機上的 MySQL 數據庫。

我已經用命令設置了隧道:

ssh user@host -L 3307:remote_mysql_hostname:3306

我可以使用以下設置成功連接 HeidiSQL:

hostname: localhost
user: remote_mysql_user_login
password: remote_mysql_user_password
port: 3307

但是當我在 PHP 中使用 PDO 進行連接時,我得到:

用戶 'remote_mysql_user_login'@'localhost' 訪問被拒絕(使用密碼:YES)

我的 PDO Dns 是這樣的:

mysql:type=Core_Db_Adapter_Pdo_Mysql;host=localhost;port=3307;dbname=db_name;

訣竅在哪里?


解決方案:

@symcbean謝謝!

問題出在主機名中(如@symcbean 所建議的那樣)。

更改為“127.0.0.1”可解決問題。**

我借鑒了您的示例,並且能夠使用您相同的 SSH 隧道設置連接到遠程主機。 您能否分享您正在使用的 PHP 腳本以獲取有關您的設置的更多信息?

您可以為要連接的遠程數據庫嘗試使用除 'localhost' 以外的主機名。

設置 ssh 隧道 - 我在 /etc/hosts 中為 my_db_host_name 設置了一個條目,而不是使用 localhost

ssh my_user@my_remote_host -L 3307:my_db_host_name:3306

<?php

$dsn = 'mysql:host=my_db_host_name;dbname=my_db;port=3307';
$username = 'my_user';
$password = 'my_pass';
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
); 

$dbh = new PDO($dsn, $username, $password, $options);

$result = $dbh->query("select * from my_table");

try {
    foreach($result as $row) {
        echo "column1: " . $row['column1'];
    }
} catch (PDOException $pde) {
    echo "PDO exception: $pde";
}

echo "done \n";

?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM