我想使用 shell 脚本定期将数据库转储到我的远程托管站点上。不幸的是,服务器被锁定得很紧,没有mysqldump安装,二进制文件不能被普通用户/在主目录中执行(所以我不能自己“安装”它)并且数据库位于一个单独的服务器上,所以我不能直接抓取文件。
我唯一能做的就是通过 SSH 登录到网络服务器并使用mysql命令行客户端建立到数据库服务器的连接。如何将内容转储到mysqldumpSQL 格式的文件中?
奖励:如果可能,我如何将内容直接转储到 SSH 连接的一端?
我喜欢下面提出的 SSH 隧道的想法,但是,我需要双隧道它。
localhost -> remote web server -> remote database server
Run Code Online (Sandbox Code Playgroud)
这工作正常:
$ ssh -f -L 3306:mysql.example.com:3306 user@ssh.example.com -N
Run Code Online (Sandbox Code Playgroud)
但是,尝试登录mysql失败:
$ mysqldump -P 3306 -h localhost -u user -p db
Enter password:
mysqldump: Got error: 1045: Access denied for user 'user'@'localhost'
(using password: YES) when trying to connect
Run Code Online (Sandbox Code Playgroud)
我猜它希望用户凭据是'user'@'mysql.example.com'. 我怎样才能哄它使用它而不是“真正的”主机?
好的,我通过添加127.0.0.1 mysql.example.com到我的主机文件并通过mysqldump -P 3306 -h mysql.example.com -u user -p db. 问题解决了!我仍然对不需要我编辑主机文件的解决方案感兴趣。
chm*_*eee 15
您可以设置 ssh 隧道并mysqldump在本地计算机上使用。
ssh -f -L 3306:localhost:3306 user@remoteserver -N
mysqldump -P 3306 -h localhost -u dbuser dbname
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17957 次 |
| 最近记录: |