13.4 mysql用户管理

场景,为了安全,新建的站点,创建新的用户,或者给予使用已有账户,给予权限

MySQL创建用户以及授权

grant all on *.* to 'user1' identified by 'passwd';

grant all on *.* to 'user1'@'127.0.0.1' identified by 'passwd';

grant 授权
all (查看,创建,删除等等)
'user1'@'127.0.0.1' 指定用户@指定来源IP (指定用户可以写%,表示所有的IP)如果指定了来源IP,那么只能通过来源IP登录
. 所有库,所有表

命令输错,直接输入“ ; ”分号退出

grant SELECT,UPDATE,INSERT on db1.* to 'user2'@'192.168.133.1' identified by 'passwd';

grant all on db1.* to 'user3'@'%' identified by 'passwd';

查看所有的授权

show grants;   //默认用root
show grants for user2@192.168.133.1;

13.5 常用sql语句

查看表的行数
select count(*) from mysql.user; //库和标有个 .分割

查看所有的内容

select * from mysql.db;

查看db库的所有内容

select db from mysql.db;

查看表,用户

select db,user from mysql.db;

模糊查询

select * from mysql.db where host like '192.168.%';

插入1, 'abc'到db1.t1表

insert into db1.t1 values (1, 'abc');

更改db1.t1 的字符串为name 的数据 和 字符串为id 的数据

update db1.t1 set name='aaa' where id=1;

清空表数据

truncate table db1.t1;

drop 会把表的框架也丢掉

drop table db1.t1;

丢掉表

drop database db1;

myisam引擎的库的好处是,能自动去统计行数

尽量少用 * 这样操作,如果是大表会很耗时

13.6 mysql数据库备份恢复

备份库

mysqldump -uroot -p123456 mysql > /tmp/mysql.sql

恢复库 //恢复是,必须保证目录一致

mysql -uroot -p123456 mysql < /tmp/mysql.sql

备份表

mysqldump -uroot -p123456 mysql user > /tmp/user.sql

恢复表

mysql -uroot -p123456 mysql < /tmp/user.sql

备份所有库

mysqldump -uroot -p -A >/tmp/123.sql

只备份表结构

mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql

myisam 常用于比较小的库进行备份,大数据的备份时间会很长

答疑:xtrabackup备份innodb 引擎的数据库

xtrabackup 只能用于备份 innodb 引擎的数据库 ,但也想备份myisam引擎的 需要通过脚本perl

假设: 数据库已经运行

ls/ data/mysql/ 查看MySQL下有多少个数据

使用

xtrabackup 会把磁盘的数据块备份一份

这个工具用perl写的

安装一个yum源

rpm -ivh http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

安装" percona-xtrabackup" 包

使用命令备份

innobackupex

备份前需要创建一个用户,在mysql里面创建,并授权备份权限

grant RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'bakuser'@localhost identified by 'aming-linux';

创建完需有一个刷权限的操作

flush privileges;

创建备份的目录

mkdir /data/backup

开始备份

innobackupex --defaults-file=/etc/my.cnf --user=bakuser --password='aming-linux' -S /tmp/mysql.sock  /data/backup
             指定默认的配置文件            指定用户            指定密码             指定sock           指定备份的目录

每次备份都会生成一个目录,目录大小和库文件大小差不多

恢复数据

==首先停掉mysql服务==

清空mysql 目录下原有数据

初始化

innobackuupex --user-memory=512M --apply-log [备份的时间目录]
              指定恢复数据的内存            指定恢复日志

指定恢复数据的内存,有助于对库的备份减少时间,但前提需要考虑内存情况

例:

innobackupex --use-memory=512M --apply-log 2017-08-22_20-44-37

恢复

nnobackupex --defaults-file=/etc/my.cnf --copy-back  .[备份的时间目录].
               指定默认的配置文件            指定恢复

例:

innobackupex --defaults-file=/etc/my.cnf --copy-back ./2017-08-22_20-44-37/

恢复日志就是backup下的备份的时间的目录

mysql 真正存储的数据 是ibdatal
备份数据的时候,会锁表