我有一个由两个单独的服务器组成的托管环境:web-server 和 db server。Web 服务器只能通过 SSH 访问(当然还有端口 80)。DB 服务器无法从 Internet 访问,只能通过 Web 服务器访问。
网络服务器没有 mysqldump 并且硬盘上的空间不允许在网络服务器上进行数据库转储。
我想使用我的本地 mysqldump 并通过网络服务器将其连接到数据库服务器。我不确定如何让 bash 命令正常工作。我试过这个:
SSH 隧道
ssh -f -L 3312:localhost:3306 user@web-server -i ~/.ssh/key-file -c cipher -N
mysql转储
mysqldump -P 3312 -h 127.0.0.1 -u user -p database > /tmp/db.sql
我知道数据库服务器需要以某种方式包含在命令中,但我不确定如何以及在何处包含数据库服务器的 IP。
SSH的
-L
参数具有三个值。从你的例子:3312
是 SSH 在执行 SSH 的计算机上侦听的本地端口localhost
是远程 SSH 守护进程打开隧道的目标主机3306
是 repot SSH 守护进程打开隧道的目标端口为了
mysqldump
通过 localhost 端口 3312 连接到 DB 服务器的端口 3306,SSH 命令需要是:可能我不明白问题,但是 -h 127.0.0.1 -MySQL 服务器所在的主机,你必须更改为数据库主机