mysql用户授权及数据备份恢复
用户授权与权限撤销
修改数据库管理员从本机登陆的密码
测试:
mysqladmin -hlocalhost -uroot -p password "新密码"
Enter password:(输入旧密码)
[root@mysql ~]# mysqladmin -hlocalhost -uroot -p password "123456789"
Enter password:
重置数据库管理员从本机登陆的密码(不记得旧密码的时候)
测试:
[root@mysql ~]# service mysql stop(先停服务)
[root@mysql ~]# service mysql start --skip-grant-table(再次起服务的时候跳过授权表)
[root@mysql ~]# mysql(直接登陆)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |(虚拟库,不占用物理存储空间,存储已有库和表的信息)
| hydra01 |
| mysql |(授权库,存储授权信息,使用不同的表来存储)
| performance_schema |(数据库服务运行时的参数信息)
| test |(公共库,只要用户能连接数据库,默认对此库有完全权限)
+--------------------+
mysql> use mysql;
mysql> show tables;
+---------------------------+
| user |(user,授权用户的权限信息)
+---------------------------+
mysql> desc mysql.user;
db :存储授权用户对库的权限信息
tables_priv:存储授权用户对表的权限信息
columns_priv:存储授权用户对表中字段的权限信息
mysql> select user,host,password from mysql.user;
+------+-----------+-------------------------------------------+
| user | host | password |
+------+-----------+-------------------------------------------+
| root | localhost | *E23149D4931DA6B3ED39B9F8228919EA20C55B18 |
| root | mysql | *79753594446313D2DDBBEB704EA410F9355C7547 |
| root | 127.0.0.1 | *79753594446313D2DDBBEB704EA410F9355C7547 |
| root | ::1 | *79753594446313D2DDBBEB704EA410F9355C7547 |
+------+-----------+-------------------------------------------+
mysql> update mysql.user set password=password("Anonymous") where user="root" and host="localhost";(设置新密码)
mysql> flush privileges;(刷新)
[root@mysql ~]# service mysql restart
[root@mysql ~]# mysql -uroot -pAnonymous(测试登陆)
授权
权限列表表示方式:
all:完全权限
usage:无权限
select,关键字(字段),关键字:授予指定的权限
关键字列表:(详情找grant权限说明)
数据库名的表示方式:
*.*:所有库所有表
库名.*:对某个库下的所有表
库名.表名:指定库下的指定表
用户名的表示方式:
授权时自定义的用户,要有标识性
客户端地址的表示方式:(不设置时,匹配网络中的所有地址)
192.168.1.1:固定地址
192.168.1.%: 指定网段
%:所有地址
identified by "密码":设置授权用户的登陆密码
with grant option:让授权用户有授权权限(要对mysql数据库有写入权限,才可以授权,授权时,授权的权限只能小于等于次用户)
查看哪些用户可以链接数据库服务器
格式:select user,host from mysql.user;
mysql> select user,name from mysql.user;
查看授权用户的权限信息
格式:
show grants for 用户名@"客户端地址";
mysql> show grants for hydra@"192.168.4.%";
命令格式:
grant 权限列表 on 数据库名 to 用户名;
grant 权限列表 on 数据库名 to 用户名;(指定的地址才可以链接)
grant 权限列表 on 数据库名 to 用户名@客户端地址 identified by "密码";(指定的地址,且输入密码才可以链接)
grant 权限列表 on 数据库名 to 用户名@客户端地址 identified by "密码" with grant option;(授权的用户,可以给其他用户授权)
示例:
grant all on *.* to hydra@192.168.1.1;
grant select on userinfo.* to hydra@192.168.1.45 identified by "123456" with grant option;
grant select,insert,update(name) on studb.t1 to hydra;
撤销用户权限
格式:
revoke 权限列表 on 数据库名 from 用户@"客户端地址";
实例:mysql> revoke insert on userinfo.t1 from hydra@"192.168.4.254";
撤销用户授权权限:(只有对库做过明确授权才可以撤销对其的权限)
格式:
revoke grant option on 数据库名 from 用户名@"客户端地址";
实例:mysql> revoke grant option on userinfo.* form hydra@"192.168.4.254";
撤销指定的权限:
格式:revoke 权限列表 on 数据库名 from 用户名@"客户端地址";
实例:mysql> revoke delete on userinfo.* form hydra@"192.168.4.254";(撤销删除权限)
————————————————————————————————————————————————————————————————————
mysql图形管理工具(phpadmin)需要lamp环境
phpMyAdmin-2.11.11-all-languages.tar.gz(把软件解压到var/www/html目录下)
[root@mysql ~]# ls /var/www/html/
hydra.php phpMyAdmin-2.11.11-all-languages
[root@mysql html]# mv phpMyAdmin-2.11.11-all-languages phpmyadmin(为了访问方便,改名)
[root@mysql html]# chown -R apache:apache phpmyadmin (为了安全,改一下所有者和所属主)
修改phpadmin配置文件
[root@mysql phpmyadmin]# cp config.sample.inc.php config.inc.php(拷贝模板文件)
[root@mysql phpmyadmin]# vim config.inc.php
$cfg['blowfish_secret'] = 'hydra'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */(随便写一个,不空就可以)
$cfg['Servers'][$i]['host'] = 'localhost';(数据库服务器地址)
客户端访问测试:
mysql> grant all on hydra01.* to hydra@"%" identified by "123";(指定一个用户访问测试)
[root@mysql ~]# firefox http://127.0.0.1/phpmyadmin(用户名hydra 密码123)
——————————————————————————————————————————————————————————————————
数据备份与恢复
数据丢失或误删时,使用备份数据恢复数据
备份策略
完整备份:备份所有数据
差异备份:备份自完整备份后,所产生的新数据
增量备份:上次备份后所产生的新数据
经常使用的备份方式:
完整备份+差异备份
完整备份+增量备份
备份方式:
物理备份,拷贝库,表对应的源文件
格式:
cp -r /var/lib/mysql/mysql /opt/mysql.bak(拷贝文件)
tar -zcvf /opt/mysql.tar.gz /var/lib/mysql/mysql/*(压缩备份)
mysqlhotcopy -u root -p Anonymous mysql /opt/(myql自带的备份命令,但是只能备份myisam引擎的表)
物理备份,文件还原数据:
格式:
cp 备份文件 数据库目录
chwon -R mysql:mysql 还原文件目录/还原文件
/etc/init.d/mysql restart(重启服务)
逻辑备份:
备份时,根据已有的库,表记录,生成对应的sql命令,把生成的sql命令保存到指定的备份文件里
格式:
mysqldump -uroot -pAnonymous 数据库名 > 目录/备份名.sql
数据库名的表示方式:
--all-databases:服务器上的所有数据
库名:服务器上的某库的所有数据
库名 表名:一个库里面某张表的数据
-B 库名 库名:备份指定的几个库
示例:
[root@mysql ~]# mysqldump -uroot -pAnonymous --all-databases > /opt/all.sql (备份所有)
[root@mysql ~]# mysqldump -uroot -pAnonymous hydra01 > /opt/hydra.sql(备份某库)
[root@mysql ~]# mysqldump -uroot -pAnonymous hydra01 userinfo > /opt/hydratable.sql(某库里面的某表)
[root@mysql ~]# mysqldump -uroot -pAnonymous -B hydra01 mysql > /opt/two.sql(备份多个指定库)
使用mysql命令做完整恢复
格式:
mysql -uroot -pAnonymous 库名 < 备份目录/备份文件
mysql> create database hydra01;(备份文件没有创建库的命令,先创建库名)
[root@mysql ~]# mysql -uroot -pAnonymous hydra01 < /opt/hydra.sql
[root@mysql ~]# mysql -uroot -pAnonymous < /opt/hydratable.sql (恢复多个库的时候不写库名)
自动备份数据:
计划任务+备份脚本
实例:每周一23:30对数据库上的hydra01库做完整备份,
备份文件存放在/mydb目录下,
使用库名+日期的方式给备份文件命名
测试:
[root@mysql ~]# mkdir shell(创建文件夹)
[root@mysql shell]# vim bakhydra.sh(完整备份脚本)
#!/bin/bash
day=`date +%F`
if [ ! -e /mydb ];then
mkdir /mydb
fi
mysqldump -uroot -pAnonymous hydra01 > /mydb/hydra01_$day.sql
[root@mysql shell]# chmod +x bakhydra.sh(授执行权限)
[root@mysql shell]# crontab -e(添加到计划任务)
30 23 * * 1 /shell/bakhydra.sh &> /dev/null
[root@mysql ~]# /etc/init.d/crond restart(重启计划任务)
[root@mysql ~]# chkconfig crond on(开机自启)
使用完整备份数据时,只能把数据恢复到备份时的状态
完整备份后新产生的数据无法恢复
完整备份,在备份数据的时候都会锁表(写锁)
增量备份
binlog对数据做增量备份:
binlog日志是mysql数据库服务日志文件的一种,
记录客户端连接数据库服务器后,执行的除查询外的sql命令
binlog日志又被称作二进制日志
启用binlog日志:
[root@mysql ~]# vim /etc/my.cnf
[mysqld]
log-bin
[root@mysql ~]# /etc/init.d/mysql restart
[root@mysql ~]# ls /var/lib/mysql/
mysql-bin.000001 (主机头名字命名的,当文件大于500m会生新的)
[root@mysql mysql]# mysqlbinlog mysql-bin.000001 (查看文件)
自定义binlog日志文件名和存储位置:
[root@mysql ~]# mkdir /mylog(自定义文件夹)
[root@mysql ~]# chown mysql /mylog/
[root@mysql ~]# vim /etc/my.cnf
[mysqld]
log-bin=/mylog/hydra(指定存储路径)
[root@mysql ~]# /etc/init.d/mysql restart
[root@mysql ]# ls /mylog/
hydra.000001 hydra.index
[root@mysql mylog]# mysqlbinlog hydra.000001(测试查看内容)
手动生成新的binlog日志
mysqldump -uroot -pAnonymous --flush-logs hydra > /opt/hydra.sql
删除binlog日志文件
mysql> purge master log to "日志文件名";
mysql> purge master log to "hydra.000003";
重新初始化第一个binlog日志文件
mysql> reset master;
使用binglog日志恢复数据
binlog日志记录sql命令的方法:
偏移量
时间点
恢复数据:
mysqlbinlog [选项] binlog日志文件名 | mysql -uroot -pAnonymous 数据库名
选项:
偏移量
--start-position=数字
--stop-position=数字
时间点
--start-datetime="yyyy-mm-dd hh:mm:ss"
--stop-datetime="yyyy-mm-dd hh:mm:ss"
测试:
mysql> mysqlbinlog --start-position=201 --stop-posotion=1190 hydra.000001 | mysql -uroot -pAnonymous hydra01;
安装第三方软件做增量备份
xtrabackup工具:
是一款强大的在线热备份工具
备份过程中不锁表
适合生产环境
由专业组织percona提供(改进mysql分支)
只能备份innodb和xtradb存储引擎的表
主要包含两个组件:
xtrabckup:c程序,支持innodb/xtradb
innobackupex:以perl脚本封装xtrabackup,还支持myisam
[root@mysql ~]# rpm -qa | grep -i mysql-server
MySQL-server-5.6.15-1.el6.x86_64(备份要根据mysql的版本来使用)
[root@mysql ~]# xtrabackup
xtrabackup xtrabackup_55 xtrabackup_56(56)
要求:必须先有一次完整备份,这样第二次备份时
才知道哪些数据是新生成的,备份时只备份表记录
不备份表结构
格式:
xtrabackup_56 <选项>
选项:
--backup 备份数据
--datadir=/var/lib/mysql 指定数据库目录的位置
--target-dir=目录名 指定备份文件存储的目录
--prepare 准备恢复数据
--incremental-basedir=目录名 增量备份数据时,指定上一次文件存储的目录
--incremental-dir=目录名 增量恢复数据时,使用哪个备份目录下数据做恢复
示例:
mysql> insert into db1.t1 values(100);(写入数据)
[root@mysql ~]# xtrabackup_56 --backup --datadir=/var/lib/mysql/ --target-dir=/allbak(完整备份)
mysql> insert into db1.t1 values(200);(写入新数据)
[root@mysql ~]# xtrabackup_56 --backup --datadir=/var/lib/mysql/ --target-dir=/newdir1 --incremental-basedir=/allbak(第一次增量备份)
mysql> insert into db1.t1 values(300);(再次写入新数据)
[root@mysql ~]# xtrabackup_56 --backup --datadir=/var/lib/mysql/ --target-dir=/newdir2 --incremental-basedir=/newdir1(第二次增量备份)
mysql> insert into db1.t1 values(400);(继续写入)
[root@mysql ~]# xtrabackup_56 --backup --datadir=/var/lib/mysql/ --target-dir=/newdir3 --incremental-basedir=/newdir2(第三次备份)
事务日志文件/var/lib/mysql
ib_logfile0
ib_logfile1
xtrabackup_checkpoints (本次备份的类型和lsn的范围)
xtrabackup_logfile(lsn序列号范围对应得sql命令)
ibdata1(sql命令产生的数据信息)
日至对应的数据
备份目录/数据库名/表名同名的文件
xtrabackup恢复数据步骤
示例
准备恢复数据:
[root@mysql ~]# xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/allbak
xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/allbak/ --incremental-dir=/newdir1
xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/allbak/ --incremental-dir=/newdir2
xtrabackup_56 --prepare --datadir=/var/lib/mysql --target-dir=/allbak/ --incremental-dir=/newdir3
把备份目录下的备份文件拷贝回对应的数据库目录下:
[root@mysql ~]# cp /allbak/db1/t1.ibd /var/lib/mysql/db1/
重启数据库服务:
[root@mysql ~]# /etc/init.d/mysql restart
验证是否恢复成功:
mysql> select * from db1.t1;
——————————————————————————————————————————————————————————————————
mysql用户授权及数据备份恢复的更多相关文章
- MySQL用户授权 和 bin-log日志 详解和实战(http://www.cnblogs.com/it-cen/p/5234345.html)
看 了上一篇博文的发布时间,到目前已经有三个月没更新博文了.这三个月经历了很多事情,包括工作.生活和感情等等.由于个人发展的原因,这个月准备换工作 啦.在这段时间,我会把Web大型项目中所接触到的技术 ...
- MySQL用户授权 和 bin-log日志 详解和实战
看了上一篇博文的发布时间,到目前已经有三个月没更新博文了.这三个月经历了很多事情,包括工作.生活和感情等等.由于个人发展的原因,这个月准备换工作啦.在这段时间,我会把Web大型项目中所接触到的技术都总 ...
- Linux服务器数据备份恢复策略
一.Linux 备份恢复基础 1.什么是备份 最简单的讲,备份数据的过程就是拷贝重要的数据到其他的介质之上(通常是可移动的),以保证在原始数据丢失的情况下可以恢复数据.一次备份可能是简单的 cp命令, ...
- MySQL 分区表原理及数据备份转移实战
MySQL 分区表原理及数据备份转移实战 1.分区表含义 分区表定义指根据可以设置为任意大小的规则,跨文件系统分配单个表的多个部分.实际上,表的不同部分在不同的位置被存储为单独的表.用户所选择的.实现 ...
- Mysql 多主一从数据备份
Mysql 多主一从数据备份 概述 对任何一个数据库的操作都自动应用到另外一个数据库,始终保持两个数据库中的数据一致. 这样做有如下几点好处: 可以做灾备,其中一个坏了可以切换到另一个. 可以做负载均 ...
- Mongodb数据备份恢复
Mongodb数据备份恢复 一.MongoDB数据库导入导出操作 1.导出数据库 twangback为备份的文件夹 命令: mongodump -h 127.0.0.1[服务器IP] -d advie ...
- mysql用户授权、数据库权限管理、sql语法详解
mysql用户授权.数据库权限管理.sql语法详解 —— NiceCui 某个数据库所有的权限 ALL 后面+ PRIVILEGES SQL 某个数据库 特定的权限SQL mysql 授权语法 SQL ...
- Mysql数据库常用的命令 数据备份 恢复 远程
远程数据库 格式: mysql -h主机地址 -u用户名 -p用户密码数据库 mysql -h 42.51.150.68 -u yang -p discuz mysql设置密码 mysql>us ...
- MySQL for OPS 06:备份恢复
写在前面的话 人在河边走,湿鞋是早晚是事情,操作服务器,数据库也一样.谁也不知道自己哪一天控制不住自己就手贱.这时候有两个东西能救我们,一是备份,二是 bin log,bin log 前面讲了,但是 ...
随机推荐
- 【转】 awk 学习笔记
本文参考的是 ubuntu 下 gawk version 3.1.6 以及 <sed&awk> 一 . awk 简介 awk 是一种解释型(tawk除外)文本处理语言 二 . aw ...
- Git远程管理[五]
标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 相关命令 git clone https://github.com/guohongz ...
- XAML: 自定义控件中事件处理的最佳实践
在开发 XAML(WPF/UWP) 应用程序中,有时候,我们需要创建自定义控件 (Custom Control) 来满足实际需求.而在自定义控件中,我们一般会用到一些原生的控件(如 Button.Te ...
- centos yum方式安装net-snmp v3
SNMPv3的安全报头采用用户安全模式(USM),其提供具有机密性和完整性的网络管理通信.机密性通过采用数据加密标准(DES)来提供.尽管 这一算法以脆弱性著称(由于它采用的是40位的密钥),但与明文 ...
- HBase MetaStore和Compaction剖析
1.概述 客户端读写数据是先从HBase Master获取RegionServer的元数据信息,比如Region地址信息.在执行数据写操作时,HBase会先写MetaStore,为什么会写到MetaS ...
- 小甲鱼OD学习第1讲
这一讲我们的目标是修改Hello.exe对话框的标题和内容,如图所示 把程序放进OD,按F8一步步运行,直到程序弹出对话框为止,然后在弹出对话框位置处下断点 按Ctrl+F2重新载入程序,然后按F9直 ...
- IDEA的优质使用博客资源
intelliJ idea 使用技巧&方法 IntelliJ IDEA 常用设置讲解 IntelliJ IDEA 详细图解最常用的配置 ,适合刚刚用的新人. IntelliJ IDEA 常见文 ...
- 备忘录之 —— .bashrc(IC工具篇)
好久没有使用这些IC工具了,装在自己的虚拟机中的Linux系统里面,现在想要卸载掉,想起之前自己辛辛苦苦的折腾这些工具配置,如果直接删除,感觉未免有点对不起自己的劳动成果,或许以后再也用不到了,就当是 ...
- python学习:备份文档并压缩为zip格式
import os import time source = ['/root/notes'] target_dir = '/root/backup' if not os.path.exists(tar ...
- [转]用JavaScript在浏览器中创建下载文件
前端很多项目中,都有文件下载的需求,特别是JS生成文件内容,然后让浏览器执行下载操作(例如在线图片编辑.在线代码编辑.iPresst等. 但受限于浏览器,很多情况下我们都只能给出个链接,让用户点击打开 ...