Skip to content

数据库备份账号建立

MySQL 中创建备份账户

1. 权限说明

MySQL 备份主要依赖两种方式:

  • mysqldump:需要 SELECTLOCK TABLESSHOW VIEW(视图备份)、RELOAD(刷新权限)等权限
  • mysqlpump/ 物理备份:核心权限同上,建议增加 PROCESS 权限(查看进程)

2. 创建步骤(以 root 账户登录)

sql
-- 1. 创建备份账户(仅允许从本地备份,更安全;如果需要远程,将 localhost 改为 %)
CREATE USER 'backup_user'@'%' IDENTIFIED BY 'K6nwp887yafybrn8';

-- 2. 授予备份所需的最小权限(所有数据库)
GRANT 
  SELECT,        -- 读取数据
  LOCK TABLES,   -- 备份时锁定表(避免数据不一致)
  SHOW VIEW,     -- 备份视图
  RELOAD,        -- 刷新权限/锁表
  PROCESS        -- 查看数据库进程(可选,用于备份排查)
ON *.* TO 'backup_user'@'%';

GRANT SELECT, LOCK TABLES, SHOW VIEW, RELOAD, PROCESS ON *.* TO 'backup_user'@'%';

-- 撤销 backup_user 的 RELOAD 权限
REVOKE RELOAD ON *.* FROM 'backup_user'@'%';

-- 3. 刷新权限使配置生效
FLUSH PRIVILEGES;

-- 验证权限(可选)
SHOW GRANTS FOR 'backup_user'@'localhost';

3. 备份测试(终端执行)

bash
# 使用创建的备份账户执行全库备份
mysqldump -u backup_user -p --all-databases > all_databases_backup.sql

PostgreSQL 中创建备份账户

1. 权限说明

PostgreSQL 备份主要用 pg_dump/pg_dumpall,核心权限:

  • CONNECT:连接数据库
  • SELECT:读取所有表 / 视图数据
  • USAGE:访问模式(schema)
  • pg_read_all_data(PostgreSQL 14+):内置角色,可读取所有数据(简化权限配置)

2. 创建步骤(以 postgres 超级用户登录)

方式 1:PostgreSQL 14+(推荐,内置角色)

sql
-- 1. 登录 PostgreSQL 命令行
-- sudo -u postgres psql

-- 2. 创建备份账户
CREATE ROLE backup_user WITH LOGIN PASSWORD 'K6nwp887yafybrn8';

-- 3. 授予内置的只读备份角色(覆盖所有数据库)
GRANT pg_read_all_data TO backup_user;

-- 4. 授予连接所有数据库的权限(pg_dumpall 需要)
GRANT CONNECT ON DATABASE postgres TO backup_user; -- 系统库
ALTER DEFAULT PRIVILEGES GRANT USAGE, SELECT ON SEQUENCES TO backup_user; -- 序列
ALTER DEFAULT PRIVILEGES GRANT SELECT ON TABLES TO backup_user; -- 表
bash
# 全库备份
pg_dumpall -U backup_user -h localhost > all_databases_backup.sql

# 单库备份
pg_dump -U backup_user -d 你的数据库名 > single_db_backup.sql

4. 额外配置(pg_hba.conf)

确保备份账户能正常连接,修改 PostgreSQL 的认证配置文件(路径通常为 /var/lib/pgsql/14/data/pg_hba.conf/etc/postgresql/14/main/pg_hba.conf):

上次更新时间:

最近更新