mysqldump命令完成跨机器的备份还原

本文介绍如何在MySQL中创建新用户并授予权限,以及如何通过命令将一个数据库的内容备份到另一个数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建新的用户,授予权限;
   创建用户:CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'password';
   localhost 作为 % :可以访问一切ip
2、赋予用户权限:
1)赋予用户和root一样的权限:
     GRANT ALL PRIVILEGES ON * . * TO 'newuser'@'localhost';
创建新用户:xxxx  ;密码:xxxxx;
3.本地登录其他主机,进入mysql,创建新的数据库,作为备份空间;

注意:远程登录时,无法直接登录其他主机 创建的新mysql 用户;

4.进入本地账户,命令进行将需要的数据库备份至其他主机的指定数据库zxfnew内;

mysqldump --host=localhost -u源端数据库用户 -p源端数据库用户密码 --opt 要备份的数据库 | mysql --host=目标机器ip  -u目标机器数据库用户名 -p目标机器数据库用户密码 -C 目标机器目标数据库
mysqldump --host=183.134.100.46 -uroot -pecsemir.com --opt member_marking  2017_1to12_zi  | mysql --host=10.10.X.249  -uxx -p123456 -C mmtest

### 在 Linux 环境下还原 MySQL 数据库备份文件的方法 在 Linux 系统中,可以通过多种方式来还原 MySQL 的数据库备份文件。以下是具体方法: #### 方法一:使用 `mysql` 命令行工具 这是最常见的方法之一,适合大多数场景下的数据库恢复操作。 假设有一个名为 `/root/mysql-bak-2023-07-27.sql` 的备份文件,可以按照以下方式进行恢复: ```bash mysql -u用户名 -p密码 数据库名 < /路径/到/备份文件.sql ``` 例如,如果要将备份文件导入到名为 `mydatabase` 的数据库中,则命令如下[^2]: ```bash mysql -uroot -p mydatabase < /root/mysql-bak-2023-07-27.sql ``` 需要注意的是,在执行上述命令之前,目标数据库必须已经存在。如果没有预先创建数据库,可以根据实际情况手动创建或者直接使用带有 `CREATE DATABASE` 语句的全量备份文件[^5]。 --- #### 方法二:针对全量备份(含所有数据库) 当备份文件是由 `mysqldump --all-databases` 参数生成时,可以直接忽略具体的数据库名称部分。此时无需提前创建任何单独的目标数据库实例,因为备份文件本身会包含必要的 `CREATE DATABASE` 和 `USE` 语句。 相应的命令形式简化为: ```bash mysql -u用户名 -p < /路径/到/备份文件.sql ``` 例如: ```bash mysql -uroot -p < /root/all_dbs_backup_2023-08-01.sql ``` --- #### 方法三:通过远程服务器恢复 如果需要从另一台远程机器上的 MySQL 实例加载数据,也可以利用 `-h` 参数指定主机地址[^4]。例如: ```bash mysql -h 远程主机IP -u 用户名 -p 密码 数据库名 < /路径/到/备份文件.sql ``` 这允许管理员灵活处理网络环境的数据迁移需求。 --- #### 注意事项 1. **权限管理** 执行这些操作前,请确认当前登录账户具有足够的权限访问并修改对应资源。 2. **字符集匹配** 如果源端与目的端之间可能存在编码差异问题,则建议显式声明 charset 设置以避免乱码现象发生。比如添加额外参数如 `--default-character-set=utf8mb4` 给相关指令调用。 3. **大文件优化策略** 对于特别庞大的 SQL 文档来说,默认管道输入可能会遇到性能瓶颈甚至失败风险。这时可考虑分批读取内容再逐条提交给服务进程完成整个过程;又或者是借助其他专门设计用来应对这种情况的应用软件辅助实现高效传输效果。 --- ### 示例代码片段展示 这里给出一段简单的 Python 脚本来自动化批量导入多个 .sql 文件至不同命名空间内的例子供参考: ```python import os import subprocess def restore_mysql(dump_file, db_name, user='root', password=''): command = f'mysql -u{user} ' if password: command += f'-p{password} ' command += f'{db_name} < {dump_file}' try: result = subprocess.run(command, shell=True, check=True) print(f'Successfully restored {dump_file}') except Exception as e: print(f'Failed to restore {dump_file}: {e}') if __name__ == '__main__': base_dir = '/path/to/dumps' files = ['file1.sql', 'file2.sql'] for file in files: dump_path = os.path.join(base_dir, file) dbname = file.split('.')[0] restore_mysql(dump_path, dbname) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瞬间动力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值