流程介绍:

[ ] 安装 innobackupex [ ] 备份数据[ ] 创建并授权备份用户

看了网上很多的 innobackupex 备份的实例,发现很多都是直接使用 “root” 用户进行对数据进行备份;然而,这样的备份方式是非常不安全的,mysql 数据库的 “root" 密码直接暴露在屏幕前;说白了这和 ”裸奔“ 有啥区别;如果数据库的密码落在了别人的手里,那么后果可.....(这个靠自己想吧)。这篇文章就是解决这个问题而生的!

一、安装 innobackup

安装依赖包

# yum -y install rsync perl-DBD-MySQL numactl libaio-devel perl-Digest perl-Digest-MD5# wget https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libev-4.15-3.el7.x86_64.rpm# rpm -ivh libev-4.15-3.el7.x86_64.rpm# wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.11/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm# rpm –ivh percona-xtrabackup-24-2.4.11-1.el7.x86_64.rpm二、备份数据

# innoxtrabackupex --defaults-file=/etc/my.cnf --socket=/data/mysql/mysql.sock --user=root --password=123456 /mnt/xtra

在最后有这个提示就是备份成功

到备份好的目录查看,数据已经备份好了

温馨提示:

如果在企业里面对数据这样来进行备份得话,那么 root 用户的密码直接就暴露出去了,这样和 “裸奔” 有什么区别,这也太不安全了吧!
所以用进行对用户进行授权登陆,进行权限的控制,用授权的用户进行备份.......

三、创建并授权备份用户

Mysql> grant reload,lock tables,replication client,create tablespace,process,super on *.* to 'xtrabackup'@'localhost' identified by '123456';Mysql> flush privileges;

不使用( grant all on . to 'root-text1'@'%' indentified by '123456'; ) 创建的原因是为了控制权限的利用,避免权限的滥用
注意: 尝试用 “xtrabackup” 用户登陆 mysql ,可以正常登陆,对库/表/用户只有查看的权限,不能进行删除修改

用 “xtrabackup” 用户进行备份数据库

# innoxtrabackupex --defaults-file=/etc/my.cnf --socket=/data/mysql/mysql.sock --user=xtrabackup --password=123123 /mnt/xtra

备份成功

登陆 mysql ,对用户权限的查看

Mysql> select user,host,Reload_priv from user;

正因为授权给 “xtrabackup” 用户有了 “Reload”重加载的权限才能对数据库进行备份

在数据库上尝试用 “back” 用户进行备份,会发现报错。如下图所示

温馨提示: 如果是没有 “Reload” 权限的用户无法执行备份

总结(两步走):

对备份用户授权

Mysql> grant reload,lock tables,replication client,create tablespace,process,super on *.* to 'xtrabackup'@'localhost' identified by '123456';

备份

# innoxtrabackupex --defaults-file=/etc/my.cnf --socket=/data/mysql/mysql.sock --user=xtrabackup --password=123123 /mnt/xtra附上 mysql 用户常用权限详解权限权限级别权限说明CREATE数据库、表或索引数据库、表或索引权限DROP数据库表删除数据库或表权限GRANT OPTION数据库、表或保存的程序赋予权限选项REFERENCES数据库或表ALTER表更改表,比如添加字段、索引等DELETE表删除数据权限INDEX表索引权限INSERT表插入权限SELECT表查询权限UPDATE表更新权限CREATE VIEW视图创建视图SHOW VIEW视图查看视图ALTER ROUTINE存储过程更改存储过程权限CREATE ROUTINE存储过程创建存储过程权限EXECUTE存储过程执行存储过程权限FILE服务器主机上的文件访问文件访问权限CREATE TEMPORARY TABLES服务器管理创建临时表权限LOCK TABLES服务器管理锁表权限CREATE USER服务器管理创建用户权限PROCESS服务器管理查看进程权限RELOAD服务器管理执行flush-hosts, flush-logs, flush-privileges, flush-status, flush-tables, flush-threads, refresh, reload等命令的权限REPLICATION CLIENT服务器管理复制权限REPLICATION SLAVE服务器管理复制权限SHOW DATABASES服务器管理查看数据库权限SHUTDOWN服务器管理关闭数据库权限SUPER服务器管理执行kill线程权限

MYSQL的权限如何分布,就是针对表可以设置什么权限,针对列可以设置什么权限等等,这个可以从官方文档中的一个表来说明

权限分布配置的权限表权限'Select', 'Insert', 'Update', 'Delete', 'Create', 'Drop', 'Grant', 'References', 'Index', 'Alter'列表权限'Select', 'Insert', 'Update', 'References'过程权限'Execute', 'Alter Routine', 'Grant'