一、数据的备份与恢复
将已有的数据复制一份,存放到其他的服务器上。MySQL提供的备份有很多,常见的有文本备份、数据备份、sql备份等
1、文本备份
文本备份是最简单的一种备份方式!
一般认为,文本备份只适合Myisam存储引擎的数据表,就是将数据表的三个文件(结构、数据、索引)备份到其他服务器就行了
文本备份的特点:
简单(只需要复制粘贴),每次都需要备份全部的文件,非常浪费磁盘空间
2、数据备份
1)备份语法
select *|字段列表 into outfile 文件地址 from 表名;
select * into outfile ‘d:/backup/php_student.txt’ from php_student;
① 首先要有目录名(backup),目录名不能省略
② 备份时,不能指定一个已经存在的文件存储备份的数据,文件只能由系统自动创建
2)还原语法
load data infile 文件路径 into table 表名[字段列表];
load data infile ‘d:/backup/php_student.txt’ into table php_student;
直接往备份表中添加数据,在还原的时候也可以加载回来。
前提条件就是文档中的记录的结构应该和表的结构是一致的!
3、SQL备份
sql备份是将表的结构和数据通过sql语句的形式进行备份 mysql中,有一个专门用来备份的客户端:mysqldump.exe
1)备份语法
mysqldump -hlocalhost –P3306 -uroot –p 数据库名[数据表1 数据表2……] > 存储路径
如果只有数据库名,没有数据表名,意思就是备份整个数据库! mysqldump –uroot –p php2016 php_student > d:/backup/php_student.sql
2)还原语法
有两种方式:
第一种:使用mysql客户端还原
语法形式为:
mysql -hPup 数据库名字 < 备份路径 mysql –uroot –p php2016 < d:/backup/php_student.sql
第二种:使用sql命令
source 备份路径;
sql备份的特点:
① 可以备份表结构,更安全
② 备份是对整表进行备份,耗时比较长,备份的文件也比较大,比较浪费磁盘空间
在真实的项目中,一般可以采用n天轮流备份策略! 比如:只备份最近7天的数据
二、用户权限管理
根据不同的项目给员工分配不同的用户,再给不同的用户分配不同的权限来管理和维护不同的数据库
1、创建用户
在mysql中,所有的用户都在mysql数据库下的user表中,user表中的字段有很多,但是最重要的是前三个字段:Host , User , Password
create user 用户名[@主机地址] identified by '密码';
创建一个可以局域网访问的用户
create user 'user2'@'192.168.148.%' identified by '123456';
创建一个可以全网访问的用户
create user 'user3' identified by '123456';
2、给用户分配权限
grant 权限列表 on 数据库.数据表 to 用户(用户名@主机地址);
grant select,update on php2016.php_student to 'user2'@'192.168.148.%';
3、回收权限
revoke update on php2016.php_student from 'user2'@'192.168.148.%';
4、删除用户
drop user 'user1'@'localhost';
三、密码管理
1、修改root密码
一般有两种方式可以修改:
1)通过mysqladmin修改
mysqladmin也是一个客户端,通常用于执行一些管理性的工作,其中也可以修改root用户的密码
mysqladmin -hPup password 新密码
2)先登录到服务器,直接使用以下的命令修改:
set password = password('新密码') //该方法同样适用于普通用户
2、root用户修改普通用户的密码
set password for 'username'@'主机地址' = password('new_password');
3、root密码找回
1)停止mysql服务net stop mysql
2)进入mysql的安全模式,即不用输入密码就能进入数据库
mysqld -nt --skip-grant-tables;
3)重新打开一个cmd命令行窗口,输入mysql –uroot –p,使用空密码的方式登录mysql
4)输入以下的命令开始修改root用户的密码
update mysql.user set password=password(‘new_password’) where user=’root’;
5)刷新权限
flush privileges;
6)退出:quit
7)在内存中结束mysqld进程!
8)重新启动mysql服务器
找回root密码的时候一定要快!因为在安全模式下,mysql服务器是最脆弱的,所有的人都可以不需要密码直接以root用户的身份登录,而且都是超级管理员的权限!