数据库应用之授权与备份(物理与逻辑)

1.用户授权; 2.完全备份; 3.增量备份.

一, 用户授权

1.用户授权

1.1.1 用户授权的由来:在数据库服务器上添加新的连接用户,但不能登录;因为默认只允许管理员root登录. 如果有非root用户需要登录,则需要先在数据库给新用户授权.

1.1.2 语法格式:

select 权限 on 库名.表名 to 用户名@”客户端地址” identified by ‘密码’ with grant options ;示意用户有授权权限(斜字体为可选项)

1.1.3 权限列表选项

(1)赋予所有权限 all;  (2)不给权限 usage; (3)个别权限 select,update,insert; (4)指定字段 select,update(字段1,字段2...字段n)

1.1.4 库名选项

(1)所有库,所有表: *.* ;  (2)一个库:   库名.* ; (3)一张表:   库名.表名

1.1.5 用户名:授权时自定义,但要有标识性,存储在mysql.user中.

1.1.6 客户端地址选项

(1)所有主机:  % ; (2)网段内的所有主机: 192.168.4.% ; (3)一台主机: 192.168.4.50 ; (4)本机:  localhost

1.2 mysql库也叫授权库,授权用户存储在mysql.user表中.

1.3 在客户端使用授权连接到数据库服务器的语法格式: mysql -h数据库ip地址 -u授权用户 -p密码;

1.4 登录用户的应用命令

1.4.1 显示当前访问的目标数据库名称:  select @@hostname; 简言之,即我访问的谁.

1.4.2 显示登录名及客户端地址: select user(); 简言之, 是谁登录的,从哪里登录的:

1.4.3 用户显示自身的访问权限有哪些: show grants;

1.4.4 数据库管理员查看其它用户的授权状态: show grants for 用户名@”客户地址”;

1.4.5 授权用户修改自身的连接密码: set password=password(“密码”);

1.4.6 管理员重置授权用户的连接密码: set password for用户名@”客户地址” =password(“新密码”);

1.4.7 管理员删除授权用户: drop user 用户名@”客户地址”;

例:

a.添加用户admin,并允许其从192.168.4网段访问db3.user,且有查询权限.

mysql> grant select on db3.user to [email protected]"192.168.4.%" identified by "123ppp...A";

b.添加用户admin2,并允许从本机连接db3库,且有查询,更新,插入,删除权限.

mysql> grant select,update,insert,delete on db3.* to [email protected]"localhost" identified by ‘123qqq...A‘;

1.5 mysql数据库记录授权信息的容器有:

1.5.1  user表      记录有哪些用户被授权了   例: mysql> select host,user from mysql.user;

1.5.2  db表       记录授权用户对哪些数据库有访问权限 例: select host,db from mysql.user;

1.5.3  tables_priv表   记录授权用户对数据库中哪些表格有访问权限  例: select * from mysql.tables-priv where name=”user” and db=”db3” \G;

1.5.4  columns_pirv表  记录授权用户对表格中的哪些字段有访问权限 例: select count(*) from mysql.columns_priv;

1.6 删除/撤销权限

语法格式: revoke 权限 on 库名.表名 from 用户名@”客户端地址”;

例:

mysql> revoke select on *.* from [email protected]"192.168.4.%";

mysql> revoke all on *.* from [email protected]"192.168.4.%";

2. 破解并重载root密码

   步骤如下:

2.1停止mysql服务器程序:

systemctl stop mysqld

2.2 跳过授权表启动mysql服务程序

#vim /etc/my.cnf

[mysqld]

skip-grant-tables   //跳过授权表

:wq    //保存退出

2.3 #mysql   //登录数据库

2.4修改root密码

mysql>update mysql.user set authentication_string=passsword(“123qqq...A”) where user=”root” and host=”localhost”;

2.5 刷新并重载记录:flush privileges;

3. 在shell命令行修改登录密码

mysqladmin -uroot -p password “123456”

enter password:123qqq...A  #输入旧密码

二,完全备份

数据备份的方式: 物理备份; 逻辑备份

备份的策略:(1)完全备份: 备份所有数据; (2)增量备份: 基于上次备份,只备份新数据; (3)差异备份: 基于完全备份,备份新数据

1.物理备份

冷备: cp, tar ...

例: 主机192.168.4.50备份数据  主机192.168.4.51 恢复数据

备份数据,在主机192.168.4.50上操作如下:

# cp -r /var/lib/mysql /opt/mysql.bak    //拷贝配置文件,以作备份.

# scp -r /opt/mysql.bak [email protected]:/opt/

恢复数据,在主机192.168.4.51上操作如下:

systemctl stop mysqld

rm -rf /var/lib/mysql    //清空主机4.51原来的配置文件

cp -r /opt/mysql.bak /var/lib/mysql    //拷贝主机4.50上的备份数据到主机4.51

chown -R mysql:mysql /var/lib/mysql   //修改配置文件的归属权限为mysql

2. 逻辑备份

2.1 语法格式: mysqldump -uroot -p密码 库名 > 目录/xxx.sql

库名的表示方式有:

2.1.1 --all-databases或-A        //示意备份所有库 例:mysqldump -uroot -p123456 --all-databases或A > /opt/db3_bak.sql

2.1.2 数据库名  //备份单个库  例:mysqldump -uroot -p123456 db3 > /opt/db3_bak.sql

2.1.3 数据名 表名  //备份单个表  例:mysqldump -uroot -p123456 db3.user > /opt/db3_bak.sql

2.1.4 -B 数据库1 数据库2...   //备份多个库 例:mysqldump -uroot -p123456 -B db3 db4 db5 > /opt/db3_bak.sql

2.2 Mysql   //恢复命令

语法格式: #mysql -uroot -p密码 库名 < 目录/xxx.sql

例: mysql -uroot -pliusingbon db3 < allbak.sql    //执行恢复之前,先建个空库db3

2.3 注意事项

无论是备份还是恢复,都必须验证用户权限.

三, 增量备份

增量备份是利用binlog日志来实现的.

1.binlog日志

1.1 概念

Binlog日志,也被称为二进制日志,mysql服务日志的一种,记录除查询之外的所有sql命令,可用于数据备份和恢复,是mysql主从同步的必要条件.

1.2 日志的启用

#vim /etc/my.cnf

[mysqld]

log-bin    //启用binlog日志

server_id=50m    //日志最大50m

:wq      //保存退出

#systemclt restart mysqld  //重启服务

1.4 手动生成日志

#systemctl restart mysqld

mysql>flush logs 或mysql -uroot -p密码 -e ‘flush log’

例: mysqldump -uroot -p123456 --flush-logs db3 > /db3.sql

1.5 清理日志

1.5.1 删除指定编号之前的binlog日志

语法格式: mysql>purge master logs to “binlog文件名”

1.5.2 删除所有binlog日志,重建新日志

语法格式: mysql>reset master;

1.6 启用日志时,自定义存储目录/文件名

例:

vim /etc/my.cnf

log-bin=/mylog/db50  //指定目录/文件名

:wq 保存退出

#mkdir -p /mylog/db50

#chown -R mysql:mysql  /mylog/db50  //修改目录的归属权限

#systemctl restart mysqld

2. 使用binlog恢复数据

在研究恢复数据之前,我们需要先了解日志的分析.

2.1 分析日志

2.1.1 查看日志当前记录格式

binlog_format=”名称”,其中名称有3种记录方式:statment报表模式; row行模式;mixed混合模式.

mysql> show variables like "binlog_format";

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

| Variable_name | Value |

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

| binlog_format | ROW   |

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

1 row in set (0.01 sec)

2.1.2 修改日志记录格式

Vim /etc/my.cnf

binlog_format="mixed"    //修改binlog记录模式为混合模式mixed

:wq 保存退出

#systemctl restart mysqld

#mysql -uroot -p123456

mysql> show variables like “binlog_format”;   查看修改后的记录

mysql> show master status;

#mysqlbinlog  /mylog/db50.000002 |grep -i insert 查看日志中使用过的命令

2.1.3 查看日志内容

语法格式: mysqlbinlog  选项 binlog日志文件名

mysqlbinlog --start-position=1087 --stop-position=2094 /tmp/db50.0000002

常规的选项见下表:

2.2 恢复数据

思路:使用mysqlbinlog提取历史SQL操作命令, 而后管道给mysql命令执行.

语法格式: mysqlbinlog 日志文件|mysql -uroot -p密码

例: 在主机192.168.4.50上备份并生成binlog日志; 在主机192.168.4.51上恢复数据.

主机192.168.4.50上操作:

#mysqldump -uroot -p123456 db3 user > /root/db3_user.sql  备份

mysql>show master status;  查看binlog信息

mysql>insert into db3.user(name) values(“xixi”);   插入新数据

mysql>insert into db3.user(name) values(“haha”);  插入新数据

mysql>insert into db3.user(name) values(“hehe”);  插入新数据

mysql>show master status; 再次查看binlog信息

#scp /mylog/db50.000001  [email protected]:/tmp/  上传数据到192.168.4.51上,以便于恢复数据的验证

主机192.168.4.51上操作:

#mysqlbinlog db50.000001|mysql -uroot -p123456     //使用编号为000001的binlog日志文件,恢复数据

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

mysql>select name from db3.user;

结束.

原文地址:https://www.cnblogs.com/liusingbon/p/11015099.html

时间: 2024-11-12 23:45:48

数据库应用之授权与备份(物理与逻辑)的相关文章

数据库 ---39 索引 创建用户及授权 数据备份

一.索引 1.索引的数据结构( B+树 类型) B+树  的性质 a.索引字段要尽量的小 b.索引的最左匹配特性 1.聚焦索引 (主键索引)  primary  key(PRI) 加速查找   不为空  不重复 ①创建时添加 create table t1 ( id int primary key,.....); create table t1 (id int ,primary key(id) ); ②创建完之后添加 alter table 表名 add primary key(id); ③删除

数据库04,用户授权及备份

一.用户授权 1.1 什么是用户授权 在数据库服务器上添加新的连接用户,添加用户时可以设置用户权限和连接用户密码,默认数据库管理员root用户是有授权操作的 1.2 用户授权的命令格式 grant 授权列表 on 库名 to 用户名@"客户端地址" identified by "密码"  //授权用户密码 with grant option ://有授权权限,可选项(加上这一句意味着新的用户也具有授权新用户的能力) #########################

脚本-每3天对数据库目录/var/lib/mysql做物理备份 把数据备份到系统/opt/dbbak目录

每3天对数据库目录/var/lib/mysql做物理备份 把数据备份到系统/opt/dbbak目录 #!/bin/bash DAY=`date+%Y-%m-%d` SIZE=`du-sh /var/lib/mysql` cd/opt/dbbak  2> /dev/null  || mkdir /opt/dbbak echo"Date: $DAY" > /opt/dbbak/dbinfo.txt echo"Total Database Size: $SIZE&quo

Mysql数据库理论基础之十二 ---- 备份与还原

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

【转】SQLServer 2008以上误操作数据库恢复方法——日志尾部备份

4号,公司的生产数据表被全部删除,目前没有找到原因,由于刚接触SQL不久,所以短时间内不会还原,也不敢动被原服务器,于是就将原服务器停掉,拷贝出里面的PPD数据库文件,留作备份:近几天在自己的电脑上尝试修复,一直没有成功,细读了一下<SQL2005技术内幕——存储引擎>了解到删除列.删除表这些操作不会直接对每一行数据进行操作,而是直接改变他们的物理指向地址的ID,专业术语我也不是很清楚,我的理解是这样的,有时间再弄清楚,不过这足以让我明白被删除的表还是存在mdf文件中,其改变的便宜地址记录在日

监控服务器Cacti之四 用户授权及备份还原

本篇主要介绍下Cacti的用户授权和备份还原,这是最常用也是最重要的东西哦! 一.用户授权 Console---User Management---Add--Create Create后在当前页有相应的权限的设置 图中为只允许用户在相应的监控的机器上查看负载(Load Average) Add后的视图 最后Save即可. 用jacken账户登录 提示没有视图权限(取决于设置) 点右上角红色按钮即可看到指定监控的项目 二.备份还原 Cacti数据无非就存储在两个地方,一个是Mysql数据库,一个是

Xtrabackup+Rsync 备份数据库并同步到远端备份机

简单架构: 简单描述: 要备份中间这三台服务器上面的数据库数据到备份机140上:中间这三台服务器是游戏服务器,WEB服务和DB都在一台机器上 最前端是passport服务器,提供玩家的账号相关信息及充值信息等,WEB服务和DB都在一台机器上,需要将数据库数据备份到备份机140上 服务器129对passport服务器的数据库做了mysql的主主同步,这里先忽略 要求: 对游戏服务器和passport服务器的数据库数据,在本地备份,同时备份到远端备份机140上,在本地保留三天,在备份机保留7天 将p

Linux环境下MySQL基础命令(4)----数据库的用户授权

      MySQL数据库的root用户拥有对所有库,表的全部权限,频繁的使用root用户会给数据库带来很大的风险,因此应建立一些低权限用户,只负责一部分库.表的管理维护操作,甚至可以对增.删.改.查各个操作进一步细化限制,从而将数据库的风险降至最低. 一,授予权限 GRANT语句:用来设置数据库用户的访问权限,当指定的用户不存在时,GRANT语句将会创建新的用户.使用GRANT语句授权的用户记录,会保存到mysql库的user.db.host.tables_priv等表中,无需刷新便立即生效

附加数据库报错:无法打开物理文件 XXX.mdf&quot;,操作系统错误 5:&quot;5(拒绝访问。)&quot;

今天在附加数据库的时候出现如图报错信息: 无法打开物理文件 XXX.mdf",操作系统错误 5:"5(拒绝访问.)"错信息如图:(是不是远程服务器数据库附加出现只读那个情况,也可以这样解决??,经测试,是这样的,不过远的用户是user,改成完全控制允许) 首先,我的数据库安装根目录和附加的数据库不是同一个目录,在安装数据库的时候根目录是默认的,为C盘下的目录,而我要附加的数据库的目录为E盘下,所以:解决方案一:使用windows账户登进,将被附加的数据库移植到根目录下,如图: