2025-12-30 11:18:56
1583
今天遇到一个挺有意思的问题:
Linux 服务器上没有安装 MySQL(或 MariaDB),但我想用
mysqldump导出远程数据库。
1)这是很常见的场景 —— 比如你的数据库在另一台服务器(如阿里云 RDS、腾讯云 CDB 或其他 DB 服务器),而当前这台 Linux 机器只是跳板机或应用服务器。
2)部分客户端工具导出的sql文件每个insert就是一条数据,数据量大的情况下速度相当慢。
mysqldump是 MySQL 客户端工具的一部分,即使本地没有 MySQL 服务,只要安装了 MySQL 客户端(包含mysqldump),就可以连接远程数据库并导出数据。
所以:你不需要在本机运行 MySQL 服务,只需要安装 MySQL 客户端工具包。
安装后即可使用:
1mysqldump -h<远程IP> -u<用户名> -p<密码> 数据库名 > backup.sql
安装
mariadb包也会提供mysqldump命令(MariaDB 的版本,但完全兼容 MySQL)。
mysqldump(不推荐,复杂)你可以从 MySQL 官网下载 MySQL Shell 或 MySQL Client Utilities 的 tar 包,解压后直接使用 bin/mysqldump。
但这种方式需要手动处理依赖(如 libncurses、libssl),不如用包管理器方便。
若你当前服务器已安装过docker,可以方便的使用该方法。 该方法首次会拉取镜像,创建容器用完之后自动删除容器,确保服务器的环境的干净。
⚠️ 注意:
•
-p后直接跟密码(无空格)可避免交互输入,但有安全风险(建议用配置文件或交互式输入)• 如果密码含特殊字符,用单引号包裹:
-p'P@ss!w0rd'
| 误区 | 正确理解 |
|---|---|
| 必须安装 MySQL 服务才能用 mysqldump | ❌ 只需客户端工具 |
| mysqldump 只能导出本地数据库 | ❌ 支持 -h 远程连接 |
| 没有 root 权限就不能安装 | ❌ 普通用户可通过 --prefix 编译安装,但用包管理器最简单 |
| 每次必须导入数据库的所有表 | ❌ 可以--ignore-table参数忽略不需要的表 |