简体   繁体   中英

MySQL via SSH Tunnel Access Denied

I want to use SSH tunnel to connect to MySQL DB on remote host.

I've set up the tunnel with command:

ssh user@host -L 3307:remote_mysql_hostname:3306

I can successfull connect with HeidiSQL using this settings:

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

But when i use PDO in PHP to connect, i get:

Access denied for user 'remote_mysql_user_login'@'localhost' (using password: YES)

My PDO Dns is sth like this:

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

Where is the trick?


Solution:

@symcbean thanks!

The problem was (as suggested by @symcbean) in hostname.

Changing to '127.0.0.1' fix the problem.**

I borrowed from your example and was able to connect to a remote host using your same SSH tunnel setup. Can you share the PHP script you are using to get some more info about your setup?

You may try a hostname other than 'localhost' for your remote database you are connecting to.

setup ssh tunnel - I setup an entry in /etc/hosts for my_db_host_name instead of using 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";

?>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM