[英]R SSH tunnel to MySQL database via Shiny App Access Denied or Can't connect to MySQL server on '127.0.0.1'
[英]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.