SSH如何连接MYSQL数据库
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSH如何连接MYSQL数据库相关的知识,希望对你有一定的参考价值。
求个高手教我如何用SSH连接到mysql数据库,谢谢,可私信我联系方式
下载navicat或者别的工具。windows需要下载freesshd安装ssh服务。linux自带,需要启动ssh服务。然后用navicat进行连接,需要注意的是,常规连接的是mysql这个数据库,ssh连接的是ssh服务器所在的地址。具体操作百度即可 参考技术A 在hibernate的配置文件中有关于数据库连接的设置(DataSource那项),里面有范例设置,你只要把 <!-- --> 删除掉,然后把数据库连接到 driver,username,password,url等信息设置成你的数据库服务器即可追问- -我看的不是很明白,我是SSH的初学者,你能不能私信我一下,我把我的联系发给你,或者你留你的联系方式也行,拜托了
追答http://www.linuxidc.com/Linux/2012-09/70040.htm可以看一下
追问网页打不开呀
追答不会啊。可以啊
追问我试了里面的方法了,还是不行,可不可以私信留个联系方式说下,拜托了
本回答被提问者和网友采纳 参考技术B 配置xml文件就可以!使用 SSH 的 Laravel MySql 数据库连接
【中文标题】使用 SSH 的 Laravel MySql 数据库连接【英文标题】:Laravel MySql DB Connection with SSH 【发布时间】:2014-10-19 03:52:44 【问题描述】:我有几个想要访问的远程数据库,但它们位于只能通过带有密钥的 SSH 访问的服务器上。
在 Sequel Pro 中,我连接到这个远程数据库,如下所示:
如何配置我的 Laravel 应用程序以连接到这样的数据库?
'mysql_EC2' => array(
'driver' => 'mysql',
'host' => '54.111.222.333',
'database' => 'remote_db',
'username' => 'ubuntu',
'password' => 'xxxxxxxxxxxxxxxxxxxx',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
【问题讨论】:
【参考方案1】:如果 ssh 服务器只是隧道并且数据库不位于那里。你可以用这个。
ssh -i ~/path/your-key.pem -N -L 13306:your-db-hostname.com:3306 your-ssh-tunnel-username@your-tunnel-hostname.com
并将 laravel .env 或数据库配置文件中的 db 主机名设置为 127.0.0.1
端口 13306
【讨论】:
【参考方案2】:我写了一个 Laravel 包来为我们处理。 stechstudio/laravel-ssh-tunnel
composer require stechstudio/laravel-ssh-tunnel
注册TunnelerServiceProvider::class
并在您的.env
中设置配置。
【讨论】:
非常易于使用并且按预期工作,感谢您的软件包。 ?【参考方案3】:这是一个可行的解决方案,通过带有密钥的 SSH 使用托管在 EC2 实例上的数据库。
首先,在您的数据库配置中设置相应的连接:
'mysql_EC2' => array(
'driver' => 'mysql',
'host' => '127.0.0.1:13306',
'database' => 'EC2_website',
'username' => 'root',
'password' => 'xxxxxxxxxxxxxxxx',
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),
其次,建立隧道:
ssh -i ~/dev/awskey.pem -N -L 13306:127.0.0.1:3306 ubuntu@54.111.222.333
(我们将 SSH 密钥传递给 i 参数并建立 SSH 连接,绑定到端口 13306)
第三,像在 Laravel 应用程序中一样使用 DB:
$users = DB::connection('mysql_EC2')
->table('users')
->get();
var_dump($users);
【讨论】:
隧道命令由于某种原因不适用于我的 -N 选项。还有一种用于本地主机的类型。这个命令(-L 是否加入远程端口,没关系)对我有用:ssh -i PATH_TO_YOUR_KEY -L13306:127.0.0.1:3306 remoteuser@111.222.111.222
有没有办法自动执行脚本?或者创建一个工匠命令,比如“工匠隧道”?
这对我有用,但我必须使用'port' => '13306'
单独设置端口。使用 Laravel 5.1,谢谢!
谢谢!这个答案让我走上了正轨。我终于在这里弄清楚了:***.com/questions/464317/…
为我节省了很多挫败感。只是给以后阅读这篇文章的任何人做个说明,您也可以使用相同的方法将其用于 postgres(当然,使用适当的端口)以上是关于SSH如何连接MYSQL数据库的主要内容,如果未能解决你的问题,请参考以下文章
MySQL 通过 SSH 隧道连接 - 如何指定其他 MySQL 服务器?