精华内容
下载资源
问答
  • MySQL用户管理创建一个普通用户并且授权1.grant all on *.* to 'user1' identified by 'passwd';grant all on *.* to 'user1' identified by '...*.*,前面的*表示所有的数据库,后面的*表示所有的表;identified b...

    MySQL用户管理

    fd76453394d7cd151e566fa803a363d8.png

    创建一个普通用户并且授权

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

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

    (创建user1用户,all表示所有权限(读、写,增、删、改、查等);*.*,前面的*表示所有的数据库,后面的*表示所有的表;identified by后面跟密码,要用单引号''引起来)

    grant all on *.* to 'user1'@'指定来源ip' identified by 'passwd';

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

    (创建了一个user1的用户,并且指定了它只能通过127.0.0.1这个ip登录)

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

    (%表示通配,让所有ip都能连接)

    a0820df51ffda2cace658adc4feb680d.png

    创建用户,登录时使用sock登录,不用指定-h+ip:

    grant all on *.* to 'user1'@'localhost' identified by '123456';

    创建用户也可以指定数据库,和具体赋予用户什么权限:

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

    查看已创建的用户被赋予什么权限:

    (1)已经登录了创建的用户使用:show grants

    bd2cbedb387c5f42baf26f390f6dfc49.png

    (2)在其他用户下,查看指定的用户被赋予的权限:

    show grants for 用户名@'被指定的ip';

    show grants for user1@'127.0.0.1';

    878c807e1bf049ca06dd71bb0c588075.png

    c1c4c13e4cafcb1fcc65f772bb3a8fa2.png

    通过grants:

    show grants for user2@'192.168.136.133'; 出来的内容都在mysql命令中执行一遍,只修改ip,则同一个用户就可以有多个ip登录。(且密码不变)

    1e1ae389180e7f6df1df1a4663694ffa.png

    常用sql语句

    4b8d1cf7e09669dcbe0d84da97e6de79.png

    1.select count(*) from mysql.user;  //查看行数

    2.select * from mysql.db; //查看表的所有内容

    (这两条搜索所有内容 的命令少用,如果表的内容多,耗费资源。

    mysql的引擎:MyISAM (自动的统计(行))和InnoDB(不会自动统计(行))

    efcb039f42144735a828c2d949b4b9b9.png如果表中我们设置引擎为MyISAM则在搜索时会很快。

    )

    3.select db,user from mysql.db;//搜索mysql.db表中的字段

    4.select * from mysql.db where host like '192.168.%'; //模糊搜索

    5. insert into db1.t1 values (1, 'abc'); //向db1库t1表插入数据

    (插入内容有字符串要加单引号'')

    de02a06189c2bf671720bb99917f612c.png

    6. update db1.t1 set name='aaa' where id=1;//更新内容(改)

    7.truncate table db1.t1; //删除db1.t1表中的数据,但是表结构不变(创表的字段不删,仅删除内容)

    770b87cac232c12d83329dee80d750f7.png

    8.drop table db1.t1; //删除表

    9.drop database db1; //删除数据库

    在命令行下执行mysql里的命令:(如创建一个库)

    mysql -uroot -p123456 -e "create database mysql2"

    MySQL数据库备份恢复

    08f2f64d8487aa203356756b26d52bca.png

    (在linux命令行操作,非在mysql命令下)

    备份的命令:mysqldump

    1.备份库:(备份mysql下root用户的mysql库)

    mysqldump-uroot -p127.0.0.1 mysql >/tmp/mysqlbak.sql

    (mysqldump-uroot -p127.0.0.1 mysql 其实就是搜到内容)

    恢复库

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

    (备份和恢复库或者表,其实就是先把内容搜索出来,让后重定向或者反向重定向)

    2.备份表

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

    备份后查看备份文件:cat /tmp/user.sql

    66dd81e025401e301f610b1587918143.png

    (可以看到一些数据来源,和命令)

    恢复表(回复表时只需要指定库就行,不用加上表名)

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

    3.备份所有库

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

    (-A 表示所有)

    只备份表结构

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

    (-d 表示表结构)

    (只备份表结构就是可以把表的数据过滤,只备份表的结构,创建表时的)

    !!!!mysqldump 备份很大的数据量时,会显得很慢!

    展开全文
  • 假如我们现在要安装一个程序,做一个网站,那么这个网站肯定是要去连接MySQL, 连接MySQL就需要用户名和密码,MySQL里面可以跑多个库,每个库里面有很多个表,所以需要单独给用户做一些授权,只需要对某个数据库有...

    MySQL用户管理

    ▲ MySQL创建一个普通用户并授权

    说明 默认有一个root是超级管理员,不可能是所有的开发人员或者是某个网站.假如我们现在要安装一个程序,做一个网站,那么这个网站肯定是要去连接MySQL, 连接MySQL就需要用户名和密码,MySQL里面可以跑多个库,每个库里面有很多个表,所以需要单独给用户做一些授权,只需要对某个数据库有授权,或者是对数据库的某个表有权限.

    ●授权命令如下:

    mysql> grant all on *.* to 'user1'@'127.0.0.1' identified by '123456';

    Query OK, 0 rows affected (0.05 sec)

    说明 grant 是授权的意思;all 表示所有的权限(读、写、查询、删除); *.* 前者表示所有的数据库,后者表示所有的表;identified by后面跟密码,用单引号括起来;user1用户指定是127.0.0.1 IP的user1.

    ● user1 用户登录mysql

    [root@root-02 ~]# mysql -uuser1 -p123456 -h127.0.0.1

    Warning: Using a password on the command line interface can be insecure.

    Welcome to the MySQL monitor. Commands end with ; or \g.

    Your MySQL connection id is 13

    Server version: 5.6.35 MySQL Community Server (GPL)

    Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its

    affiliates. Other names may be trademarks of their respective

    owners.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    ● 查看用户指定授权

    查询用户指定授权命令如下:

    mysql> show grants for user1@'127.0.0.1';

    +-----------------------------------------------------------------------------------------------------------------------+

    | Grants for user1@127.0.0.1 |

    +-----------------------------------------------------------------------------------------------------------------------+

    | GRANT ALL PRIVILEGES ON *.* TO 'user1'@'127.0.0.1' IDENTIFIED BY PASSWORD '*6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9' |

    +-----------------------------------------------------------------------------------------------------------------------+

    1 row in set (0.01 sec)

    常用sql语句

    ● 查询语句

    说明 mysql.user表示MySQL库的user表,count(*)表示表中共有多少行.

    第一种形式:

    mysql> select count(*) from mysql.user;

    +----------+

    | count(*) |

    +----------+

    | 7 |

    +----------+

    1 row in set (0.00 sec)

    ● select * from mysql.db\G; ---表示查询MySQL库的db表中的所有数据,这种查询方式不建议经常使用,若数据库表行数非常多的话,查询起来会很慢,并且很耗费资源.

    第二种形式:

    mysql> select * from mysql.db\G;

    *************************** 1. row ***************************

    Host: %

    Db: test

    User:

    Select_priv: Y

    Insert_priv: Y

    Update_priv: Y

    Delete_priv: Y

    Create_priv: Y

    Drop_priv: Y

    Grant_priv: N

    References_priv: Y

    Index_priv: Y

    Alter_priv: Y

    Create_tmp_table_priv: Y

    Lock_tables_priv: Y

    Create_view_priv: Y

    Show_view_priv: Y

    Create_routine_priv: Y

    Alter_routine_priv: N

    Execute_priv: N

    Event_priv: Y

    Trigger_priv: Y

    *************************** 2. row ***************************

    Host: %

    Db: test\_%

    User:

    Select_priv: Y

    Insert_priv: Y

    Update_priv: Y

    Delete_priv: Y

    Create_priv: Y

    Drop_priv: Y

    Grant_priv: N

    References_priv: Y

    Index_priv: Y

    Alter_priv: Y

    Create_tmp_table_priv: Y

    Lock_tables_priv: Y

    Create_view_priv: Y

    Show_view_priv: Y

    Create_routine_priv: Y

    Alter_routine_priv: N

    Execute_priv: N

    Event_priv: Y

    Trigger_priv: Y

    2 rows in set (0.00 sec)

    ERROR:

    No query specified

    ● 查询mysql库的单个字段

    查询mysql库的单个字段命令如下:

    mysql> select db from mysql.db;

    +---------+

    | db |

    +---------+

    | test |

    | test\_% |

    +---------+

    2 rows in set (0.00 sec)

    ● 查询mysql多个字段

    查询mysql两个字段的命令如下:

    mysql> select db,user from mysql.db;

    +---------+------+

    | db | user |

    +---------+------+

    | test | |

    | test\_% | |

    +---------+------+

    2 rows in set (0.00 sec)

    ● 插入一行

    说明 创建了db1.tl表,t1表里面目前是没有数据的

    mysql> desc db1.t1;

    +-------+----------+------+-----+---------+-------+

    | Field | Type | Null | Key | Default | Extra |

    +-------+----------+------+-----+---------+-------+

    | id | int(4) | YES | | NULL | |

    | name | char(40) | YES | | NULL | |

    +-------+----------+------+-----+---------+-------+

    2 rows in set (0.00 sec)

    mysql> select * from db1.t1;

    Empty set (0.00 sec)

    现在在t1表插入一条数据,再查看t1表就有数据了

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

    Query OK, 1 row affected (0.02 sec)

    mysql> select * from db1.t1;

    +------+------+

    | id | name |

    +------+------+

    | 1 | abc |

    | 1 | quan |

    | 1 | dong |

    +------+------+

    3 rows in set (0.00 sec)

    ● 更改表的某一行

    说明 Mysql表里存放的数据支持更改某个字段.

    更改t1表的字段命令如下:

    mysql> update db1.t1 set name='anna' where id=1;

    Query OK, 3 rows affected (0.01 sec)

    Rows matched: 3 Changed: 3 Warnings: 0

    mysql> select * from db1.t1;

    +------+------+

    | id | name |

    +------+------+

    | 1 | anna |

    | 1 | anna |

    | 1 | anna |

    +------+------+

    3 rows in set (0.00 sec)

    ● 清空某个表的数据

    说明 有时候我们只是想清空表的数据,但并不想删除表

    清空t1表的数据命令如下:

    mysql> truncate table db1.t1;

    Query OK, 0 rows affected (0.08 sec)

    mysql> select * from db1.t1;

    Empty set (0.00 sec)

    ● 删除表

    说明 当某个表已经不需要了,就可以删除掉

    删除表的命令如下:

    mysql> drop table db1.t1;

    Query OK, 0 rows affected (0.01 sec)

    ● 删除数据库

    说明 能删除表,当然也能删除数据库

    删除数据库的命令如下:

    mysql> drop database db1;

    Query OK, 0 rows affected (0.00 sec)

    MySQL数据库备份恢复

    ▲ mysqldump 是数据库备份的命令 (可以备份一个库,也可以备份一个表)

    ● 备份库

    说明 /tmp/mysql.sql是mysql库备份文件.

    备份mysql库的命令如下:

    [root@root-02 ~]# mysqldump -uroot -p123456 mysql >/tmp/mysql.sql

    Warning: Using a password on the command line interface can be insecure.

    ● 恢复我mysql库数据

    [root@root-02 ~]# mysql -uroot -p123456 mysql < /tmp/mysql.sql

    Warning: Using a password on the command line interface can be insecure.

    ● 备份表

    说明 备份表前面写库名 然后跟表名

    备份表命令如下:

    [root@root-02 ~]# mysqldump -uroot -p123456 mysql user >/tmp/user.sql;

    Warning: Using a password on the command line interface can be insecure.

    ● 恢复表数据

    说明 恢复表数据,不需要加表名,只需库名即可

    恢复表数据命令如下:

    [root@root-02 ~]# mysql -uroot -p123456 mysql

    Warning: Using a password on the command line interface can be insecure.

    ● 备份所有的库

    说明 -A选项表示所有的意思

    备份所有库的命令如下:

    [root@root-02 ~]# mysqldump -uroot -p123456 -A > /tmp/mysql_all.sql

    Warning: Using a password on the command line interface can be insecure.

    ●只备份表的结构

    说明 假如我们有个需求,不需要表的数据,只需要创建表的语句. 加上-d选项

    备份表结构命令如下:

    [root@root-02 ~]# mysqldump -uroot -p123456 -d mysql > /tmp/mysql.sql

    Warning: Using a password on the command line interface can be insecure.

    展开全文
  • 笔记内容:13.4 mysql用户管理13.5 常用sql语句13.6 mysql数据库备份恢复笔记日期:2017-10-3113.4 mysql用户管理搭建一个网站时,后台的应用程序会连接mysql,连接mysql就需要一个用户密码,但是不能让它使用root...

    笔记内容:13.4 mysql用户管理

    13.5 常用sql语句

    13.6 mysql数据库备份恢复

    笔记日期:2017-10-31

    13.4 mysql用户管理

    35e567d4caca0f4d38bf9a61b874ec54.png

    搭建一个网站时,后台的应用程序会连接mysql,连接mysql就需要一个用户密码,但是不能让它使用root用户,root用户的权限太高不安全,所以需要创建一个用户,并授予这个用户一些权限,你可以具体的授予这些用户的某些权限,让它能操作什么不能操作什么。

    下面就来介绍一下如何创建mysql用户以及授权:创建用户,语句如下:

    grant all on *.* to 'user1'@'192.168.77.130' identified by '123456a';

    6d8c708ede366bdbb120073ee13e4e9f.png

    常识:这种grant语句是不会记录到命令历史里的,因为不安全。

    现在就创建好一个user1用户了,因为创建这个用户的时候是指定了来源IP的,所以在登录这个用户时需要使用-h指定IP:

    abda5271932113497c199d627d138fcc.png

    如果想要创建一个可以本地连接的mysql用户,在创建时指定localhost就可以了:

    grant all on *.* to 'user1'@'localhost' identified by '123456a';

    a37e0d1666cc2f614ec9143c1b7d3c75.png

    创建为可以本地连接的用户,登录时就不需要使用-h指定来源IP了:

    6bcca37363a337582adddce095e2afde.png

    使用show grants; 可以看到当前用户拥有哪些权限:

    10e0783072ce1f0b5c3cbde40d621887.png

    如果想看具体的某个用户的话,在命令后加上for 用户名@登录方式  即可,示例:

    show grants for user1@'localhost';

    fd4367c544b76c5d379f266232bd0828.png

    我们再创建一个用户,给这个用户授予具体对某个库的操作权限:

    7ef4cbd6edc07d8c1c57553b49b876b0.png

    现在我们查看一下user2的权限:

    1d4f85ae1dc93ad07665fde520b55585.png

    可以看到user2具体能执行的sql语句,和可以操作哪个库的哪些表。

    当你想增加用户的连接IP或者其他权限时,就可以直接复制show grants命令显示出来的语句,然后更改IP即可,例如我要让user2能使用192.168.77.139这个IP登录:

    00fdaeadd21d0cff088432d43c12788d.png

    然后再show grants看一下:

    ea5d12f967e0eb81eae07347971b1c6f.png

    原本的IP也能连接,这个操作是增加一个可以连接的IP:

    800ce025b6c5a3fcf8dd5e668a7c569a.png

    13.5 常用sql语句

    1d1dc12a96d0cf2b7c4fdb9ce96227fb.png

    下面简单介绍几个mysql中常用的增删查改语句:select count(*) from mysql.user;

    这条语句是查看mysql库中的user表有多少行,count是一个统计行数的函数:

    21544e4b2e6574e927c15fcdd04fc2e2.png

    select * from mysql.db\G;

    查看mysql库中的db表里的所有内容:

    519402429c6308d6f28be2bf0231fef0.png

    select db from mysql.db;

    查看mysql库中的db表里db字段的所有内容:

    f8ee96b85dc1477cc9ff62cec9f64b63.png

    select db,user from mysql.db;

    查看mysql库中的db表里db和user 字段的所有内容:

    eefbf9c015957c8a31ac98895f020bd0.png

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

    查看mysql库中的db表里host字段为192.168.开头的所有内容,like是模糊查询的关键字,where是指定的一个条件:

    6caa86c5c26bcaacd658de81c00c37e5.png

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

    insert 语句是用来插入数据的:

    79ef6f557e822d05b264a0d8a26d0fbd.png

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

    update 语句是用来修改或者说更新数据的:

    d9941e67606cc3be75fc0b412c7e2b68.png

    truncate table db1.t1;

    清空数据,能够把一个表格里的所有数据都清空:

    a3d855dfff3d894d8bc38f840ea72812.png

    drop table db1.t1;

    drop 是用来删除结构的,drop的删除不仅仅删除数据,会把结构也一并删除,以上这条drop就是把db1库中的t1表给删除掉:

    5fa19b416a37ad86b454df17feb1b704.png

    b442fa014bbaf4bcc14ac3429f72efbe.png

    10. drop database db1;

    这是删除数据库的,同样的也是删除结构:

    e5f8d9315d7ca574a1073a2f6e1b80ff.png

    drop和truncate、delete语句不同的是,前者删除在整个结构,后者仅仅删除结构中的数据。

    谨记一点,drop和truncate、delete等语句尽量不要使用,如果需要使用的话记得提前备份数据,并且使用时万分小心看仔细了别删错数据了,如果不小心误操作把一个线上跑的数据库给删了的话,而且又没有备份可恢复,那么就等着被开除或赔偿吧。

    13.6 mysql数据库备份恢复

    f8ef58dcd4feb99e7920fbb7bfce67bb.png

    因为数据的重要性,所以备份与恢复技术是非掌握不可的,在这里介绍一下,备份和恢复数据库的相关操作:

    mysqldump是一个备份的命令,可以备份一个库,也可以备份一个表:备份库,语法如下:

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

    e640f896625a2f7e560cd480276f9a95.png

    恢复库,将备份文件里的内容重定向到一个空的数据库中,语法如下:

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

    abe0523307cdecaf03c78eddc5cc9d54.png

    进入到mysql2中,可以看到数据已经恢复到这个库中了:

    2c91379150480954e9c8d396cfcbb83f.png

    从以上备份和恢复数据库可见,其实就是一个重定向的应用,重定向出去叫备份,重定向进来叫恢复。

    备份表,除了备份整个数据库之外,还能针对数据库中的某个表进行备份,指定库名和表名即可,语法如下:

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

    b98b8642b2c06093977d553501ed2359.png

    可以使用less命令查看一下user.sql文件,会发现里面都是些sql语句:

    a7619856023f1e1ab8a151a3ddcc85bd.png

    通过sql语句逐个把数据恢复回去。

    恢复表,和恢复库一样的,把备份的文件内容重定向回去,语法如下:

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

    aa5a417c0b3092d82d04174d34776f08.png

    备份所有的库,如果mysql中有很多数据库,一个个去备份太麻烦,所以需要能够备份所有数据库的语句,语法如下:

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

    -A是all,所有的意思

    c0560a2b3e096142a94885979915896e.png

    可以查看到这个备份文件就比较大了,有1.3M:

    25c6f5d07302c4ee0dbfa23595c50082.png

    只备份表结构,如果你不需要数据的情况下,就可以只备份表结构,使用-d选项,语法如下:

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

    489537118475c0ede243ab5631a43498.png

    然后你可以使用less查看备份文件的内容,会发现没有insert语句只有drop和create语句

    mysqldump 只适合数据量不大的备份,如果数据库中的数据库很大的话,就不适合使用mysqldump 了,使用mysqldump 的话备份会很慢,关于如何备份数量大的数据库可以参考以下扩展内容:

    扩展

    SQL语句教程

    https://blog.51cto.com/zt/206

    什么是事务?事务的特性有哪些?

    http://blog.csdn.net/yenange/article/details/7556094

    根据binlog恢复指定时间段的数据

    http://www.centoscn.com/mysql/2015/0204/4630.html

    mysql字符集调整

    http://xjsunjie.blog.51cto.com/999372/1355013

    使用xtrabackup备份innodb引擎的数据库innobackupex备份Xtrabackup增量备份:

    http://zhangguangzhi.top/2017/08/23/innobackex%E5%B7%A5%E5%85%B7%E5%A4%87%E4%BB%BDmysql%E6%95%B0%E6%8D%AE/#%E4%B8%89%E3%80%81%E5%BC%80%E5%A7%8B%E6%81%A2%E5%A4%8Dmysql

    展开全文
  • 数据库备份恢复和常用语句 目录 常用语句 备份数据库 方法一:mysqldump备份 方法二:复制数据库中的目录文件 方法三:mysqlhotcopy备份 数据还原 数据库日志 常用语句 show databases; 查看数据;表相同...

    数据库备份恢复和常用语句

    																			-来源于视频教学
    

    目录

    常用语句
    备份数据库
    	方法一:mysqldump备份
    	方法二:复制数据库中的目录文件
    	方法三:mysqlhotcopy备份 
    数据还原
    数据库日志
    

    常用语句

    show databases;     					查看数据;表相同(show tables;)
    

    在这里插入图片描述

    create database DBNAME;					创建数据库;
    

    在这里插入图片描述

    drop databale DBNAME;					删除数据库;表相同
    

    在这里插入图片描述

    use DBNAME;								使用数据库
    show tables;							查看使用数据库中的表
    

    在这里插入图片描述

    create table if not exists stu(
    年龄 varchar(20) not null,
    姓名 varchar(20) not null,
    性别 varchar(20) not null,
    primary key ( 年龄 )
    )engine=InnoDB default charset=utf8;

    desc stu;										查看stu这个表的表结构
    show create tables stu \G			查看创建时的语句
    

    在这里插入图片描述

    备注:
    create table if not exeist `aaa`	:`为反引号,1键。左边若aaa不存在则创建表 aaa。存在则直接写入内容。
    姓名` varchar(20) not null, 		:表结构, 分别是 字段名+数据类型(长度为20)+值
    primary key ( `姓名` )		   		:姓名为主键,其他为外键。----主键只可能有一个,但一个主键可以由多个字段组成。
    CHARSET=utf8; 						:CHARSET 设置字符编码
    
    insert into stu values ('18','cyx','man'); 			在表stu中写入相应的数据
    select * from stu;									查看表stu的内容
    

    在这里插入图片描述
    select count(*) from stu; 查看表stu中内容数量
    在这里插入图片描述

    备份数据库

    方法一:mysqldump(支持MyISAM引擎和innodb引擎)

    1、备份单个数据库的其中一个表
    mysqldump -uroot -p aaa stu > /root/stu.bak.sql    (将数据库aaa中的表stu备份到root下命名为stu.bak.sql。可查看版本,注释,备份日期等)
    2、备份一个或多个数据库:
    mysqldump -u username -p --databases dbname1 dbname2 > /root/stu.bak.sql    (username---例如:msyqldump -u root)
    3、备份所有数据库
    mysqldump -u username -p --all-databases > alldb.bak.sql
    

    在这里插入图片描述
    注意:如下图,若存在stu,则删除,再重新创建。即覆盖内容的意思
    在这里插入图片描述

    方法二:

    复制数据库中的目录文件(省略)
    优点:速度快
    缺点:必须停止服务器,确保数据一致性
      只对MyISAM存储引擎的表使用
      对数据库版本有要求
    

    方法三:(mysqlhotcopy只支持MyISAM引擎)

    使用工具mysqlhotcopy进行备份(需要下载)
    --	若备份时不能停止mairadb服务器,可使用nysqlhotcopy工具备份。比mysqldump	更快
    --	工作原理:mysqlhotcopy工具是一个Perl脚本,主要在linux环境使用,mysqlhotcopy	工具使用LOCK TABLES(锁表),FLUSH TABLES(刷新表)和cp进行快速备份。
    --	即先读锁操作,再FLUSH TABLES将内存中的数据写到硬盘上的数据库。最后把需要	备份的数据库文件复制到目标目录
    --	命令格式
    Mysqlhotcopy [option选项] dbname1 dbname2 dbname… backDir/
    BackDir代表备份到哪个目录(
    ‘--allowold’  :若备份目录下存在相同的备份文件,则将旧文件加上——old的标识
    ‘--keepold’  :若备份目录下存在相同的备份文件,不删除就的备份文件,而是改名
    ‘--flushlog’  :本次备份完成将对数据库的更新记录到日志)
    

    mysqlhotcopy对比mysqldump

    1.mysqlhotcopy

    • 优点
      - 速度快
    • 缺点
      - 只支持MyISAM引擎
      - 需要安装perl语言及配置支持环境,因为hotcopy由perl写成
      - 选项参数较少,功能不够强大,比如不提供–where选项,无法选取某部分数据备份
      - 只能运行在数据库目录所在的机器上

    2.mysqldump

    • 优点
      - 支持MyISAM和innodb引擎
      - 只要装了mysql就可以用,无需别的操作,不存在平台兼容问题
      - 参数较多,功能强大,可以备份整个数据库,也可以备份单个表,还可以备份单个表的部分数据
      - 可生成多种文件,还可以用于从一个MySQL服务器向另一个服务器复制数据
    • 缺点
      - 速度没有那么快

    数据还原

    • 使用mysql命令还原
      -mysqldump工具将数据库中的数据备份成一个文件,后最通常为.sql
      -还原通过mysql进行还原
      -备份一般包含create和insert语句

        mysql -u username -p [dbname] < back.sql
      

    在这里插入图片描述

    注意:如果使用–all-databases参数备份了所有数据库。还原时不需要指定数据库

    • 直接复制数据库目录
      -通过直接复制目录方式还原必须保持两个mariadb的数据库主版必须相同
      -只对MyISAM类型表生效
      -针对Innodb表不能直接复制,mysqlhotcopy工具也是这种方式还原
      -chown –R mysql:mysql dataDIR(修改属组)

    数据库迁移

    • 数据库迁移指的是数据库从一个系统移动到另一个系统上

    • 案例:
      -linux操做系统下的mysql向Mairadb迁移
      -卸载原有的mysql相关组件
      -安装mariadb软件包
      -执行升级命令mysql_upgrade –p
      -升级完成后查看数据库版本

        mysql -uroot -p -e "show global variables like 'version'"
      

    在这里插入图片描述

    数据库日志

    1、 二进制日志(变更日志)

    • 主要记录数据库的变化情况,可以查询mariadb的变化情况

    • binlog主要作用
      -mysql的主从复制
                -需要在master段开启binlog,将二进制日志发送给slave端达到主从数据一致
      -数据恢复

    • 启动和设置二进制
      -通过/etc/my.cnf开启二进制日志
      -需要将log-bin选项加入到my.cnf的[mysqld]组中(重启数据库)
      在这里插入图片描述

    • 重启一次多一个mysql-bin文件
      在这里插入图片描述

    • 查看binlog日志是否开启

        show variables like 'log%'\G
      

    在这里插入图片描述

    注意:二进制日志与数据库的数据文件最好不要放在同一个磁盘上防止磁盘被损坏,无法恢复。

    • 查看二进制日志
      -使用二进制格式可以查看部分信息
      -使用mysqlbinlog命令查看
               -语法格式:

        mysqlbinlog filename.number
      

                    -mysqlbinlog命令将在当前文件下查找指定日志,否则将无法查找

    	  mysqlbinlog /var/lib/mysql/mysql-bin.000001
    

    在这里插入图片描述

    • 查看所有日志列表

        show master logs;
      
    • 查看master状态,最后一个日志

        show master status;
      
    • 刷新日志,也会产生一个新的二进制日志

         flush logs;
      

    在这里插入图片描述

    • 更方便的查询命令
      -pos点

       show binlog events [ in 'bin_log_name']\G   (不指定从首个开始。\G:			  	 格式化数据。例:
       show binlog events in 'mysql-bin.000001'\G       			 					-show binlog events\G)
      

      -FROM pos : 指定从pos起始查询(不指定从首个开始)

       show binlog events in 'mysql-bin.000002' from 245\G (指定查询					 mysql-bin.000002文件,pos从245开始)
      

      -LIMIT [ offset, ] : 偏移量(不指定为0)

       show binlog events in 'mysql-bin.000002' from 4 limit 1,5\G
       指定查询mysql-bin.000002文件,pos从4开始,查询5条,偏移量为1,即隔1个,查询一个
      

    2、 删除二进制日志。

    1、删除所有二进制日志

    • 使用reset master 语句删除所有二进制日志

        reset master
      

    2、根据编号删除二进制日志

    • 使用purge master logs to 语句删除指定的二进制日志编号之前的日志

        purge master logs to 'mysql-bin.000003';	 (删除000003之前的)
        purge master logs before '2019-12-21 15:39:21'; (删除这个时间之前的		  简化日期:date '+%Y-%m-%d %H:%M:%S')
        reset master;(重置二进制日志,会重新记录一个新的的二进制日志)	
      

    3、二进制还原数据库

    • 还原过程
      -首先使用最近的备份文件来还原数据库
      -备份之后数据库可能进行一些更新,可以使用二进制日志还原
      -二进制还原命令

        mysqlbinlog filename.number | mysql –uroot –p
        
        原理:理由mysqlbinlog语句读出二进制然后用mysql语句进行还原
        注意:使用mysqlbinlog命令还原时,必须时编号小的先还原
      
      • 案例
        -创建cyx库,创建boy表
        例:

          MariaDB [cyx]> create table boy(
          -> id int(8) unsigned not null auto_increment,
          -> name varchar(10) not null,
          -> sex enum('m','w') not null default 'm',
          -> age int(10) unsigned not null,
          -> classid char(6) default null,
          -> primary key(id)
          -> )default charset=utf8;
        

        -写入内容:

          insert into member values(null,'a','m','8','c1'),(null,'b','w','9','c2')
        

        -创建任务,每天00:00备份

          crontab –e                  (crontab用法在最下面)
        

        -写入内容

          0 0 * * * /usr/bin/mysqldump -u root -p123456 -B -F -R -x --			 master0-data=2 cyx| gzip > /root/ops_$(date +%F).sql.gz  (注意是小写x,大写恢复时会报错)
          ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200401121855550.png)
        

        -查看内容:

          crontab -l
        

        -手动备份:

          mysqldump -uroot -p123456 -B -F -R -x --master-data=2 cyx | 					   gzip > /root/ops_$(date +%F).sql.gz
        

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200401121928546.png

    注释:
             -B 指定数据库
             -F 刷新日志
             -R 备份存储过程
             -x 锁表
             --master-Data 在备份语句添加change master 语句以及binlog文件位置 信息
    -更新数据

    		update boy set name='cyx' where id=1;
    

    在这里插入图片描述

    	**-并且删除了数据库cyx;**
    
    		drop database cyx;
    

    开始恢复

    1、

    cp -v mysql-bin.000004 /root/
    flush logs;
    - 读取log日志分析
    show binlog events in 'mysql-bin.000004'\G
    - 解压之前手动备份的数据
    gzip -d ops_2019-12-21.sql.gz
    mysql -uroot -p123456 -v < cyx_2019-12-21.sql
    恢复到备份这个数据时
    

    2、

    mysqlbinlog --stop-position=964 --database=cyx /var/lib/mysql/mysql-		  bin.000004 | mysql -uroot -p -v cyx
    

    contab注释及用法

    crontab (创建定时任务命令)

    • 注释:* * * * * /绝对路径/执行操作
      例:1 * * * * /etc/cyx.sh 意思就是每天00:01 执行一次etc下的cyx.sh

         * 	  *		   *	  	  * 		  * 
        分钟    小时   日期(1-30)  月份 	 	星期几(0-7,0或7为星期天)
      

    例1:让我的zabbix 214的入口流量增加 延迟是zabbix的反应时间

    26 17 * * * /usr/bin/ping -c 20 -s 40000 214agent
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200401122637390.png)
    

    在这里插入图片描述

    展开全文
  • mysql用户管理: grant all on *.* to 'user1'@'127.0.0.1' identified by '用户密码' = 创建一个新用户 查看当前用户授予的权限:show grants...常用sql语句: show tables; =查看当前数据库里面有哪些表select c...
  • oracle数据库备份恢复Data Pump Expdp/Impdp参数详解与案例介绍目 录1 Oracle数据泵的介绍 32 Oracle expdp/impdp参数使用介绍 32.1 Oracle EXPDP 命令参数及说明 32.2 Oracle EXPDP 使用方法介绍 62.3 Oracle IMPDP...
  • 根据binlog恢复指定时间段的数据mysql字符集调整使用xtrabackup备份innodb引擎的数据库innobackupex备份Xtrabackup增量备份13.4 MySQL用户管理登录mysql,默认root用户操作:1.创建mysql用户(user1),设置密码(123456...
  • 6月20日任务13.4 mysql用户管理13.5 常用sql语句13.6 mysql数据库备份恢复扩展SQL语句教程 http://www.runoob.com/sql/sql-tutorial.html什么是事务?事务的特性有哪些? ...
  • 新建普通用户在MySQL数据库中,建立用户有3种方式:使用CREATE USER语句来创建新的用户;直接在mysql.user表中INSERT用户;使用GRANT语句来新建用户;grant命令grant all on *.* to ‘user1‘@‘192.168.71.131‘ ...
  • 1.备份: USE master  GO  Backup DATABASE TEST1  To disk='D:\201504291415.bak' WITH mediapassword='1234567890' ,PASSWORD='1234567890'  GO 2:恢复:  RESTORE DATABASE TEST1  FROM DISK = 'D:\...
  • MySQL用户管理、常用SQL语句、MySQL数据库备份恢复 http://blog.51cto.com/taoxie/2061242 转载于:https://www.cnblogs.com/czlovezmt/p/9460284.html
  • 13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复 转载于:https://blog.51cto.com/13227377/2129895
  • 8月23日任务 13.4 mysql用户管理 13.5 常用sql语句 13.6 mysql数据库备份恢复 13.4 mysql用户管理 grant all on *.* to 'user1' identified by 'passwd'; grant SELECT,UPDATE,...
  • 备份数据库:关键字:backup database 被备份数据库名 to disk ='备份文件路径'; 恢复数据库:关键字:...restore database 被恢复数据库名 from disk = '备份文件路径';Alter Database 被恢复数据库名 Set O...
  • SQL语句中常用函数1.聚合函数:sum avg max min count2.数学函数:主要处理数字,整型浮点型。 floor:向下取整。 rand:0-1的随机数。 round:四舍五入。round(x,y):对数字x 取小数点后y位,四舍五入。3....
  • sql truncate This article explores the recovery of data removed by SQL Delete and SQL Truncate statements using ... 本文探讨了使用SQL数据库备份恢复由SQL Delete和SQL Truncate语句删除的数据的方法。 ...
  • 数据库备份语句

    2012-12-19 19:36:18
    1.备份数据库 //创建备份数据的device usemasterexecsp_addumpdevice 'disk','Back','d:Back.dat' //开始备份和上面一句分开执行,login为要备份的数据库名称 ...//恢复数据库备份文件到数据库中,D...
  • -13.4mysql用户管理-13.5常用sql语句-13.6mysql数据库备份恢复-扩展-SQL语句教程https://blog.51cto.com/zt/206-什么是事务?事务的特性有哪些?http://blog.csdn.net/yenange/article/details/7556094-根据binlog...
  • 系统数据库备份恢复

    2015-11-19 10:29:00
    1、执行基线包中的新建表空间语句 2、执行新建用户语句 3、执行数据库恢复语句IMP按照用户导入 转载于:https://www.cnblogs.com/timlong/p/4976831.html
  • 转载于:https://www.cnblogs.com/zhaocundang/p/8647075.html
  • MySQL数据库备份恢复 1.备份库文件 mysqldump -uroot -pmysql123 mysql > /tmp/mysql_bak.sql 2.创建数据库mysql2并且将步骤1的备份文件恢复到mysql2 创建测试库mysql2 mysql -uroot -pmysql123 -e "create ...
  • 笔记内容:13.4 mysql用户管理13.5 常用sql语句13.6 mysql数据库备份恢复笔记日期:2017-10-3113.4 mysql用户管理搭建一个网站时,后台的应用程序会连接mysql,连接mysql就需要一个用户密码,但是不能让它使用root...
  • 新建普通用户在MySQL数据库中,建立用户有3种方式:使用CREATE USER语句来创建新的用户;直接在mysql.user表中INSERT用户;使用GRANT语句来新建用户; grant命令grant all on *.* to 'user1'@'192.168.71.131' ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,600
精华内容 1,040
关键字:

数据库备份恢复语句