实验5:数据库的安全机制管理实验
这里有个数据库备份目录的设置需要完成
找到自己MySQL目录下的my.ini文件,修改读写权限。
#一般是在这个目录下,根据实际情况判断
C:\Program Files\MySQL\MySQL Server 5.5
右键选择属性->安全->把User的权限都勾选上->确定
在这个位置插入这一句,并保存退出
#备份数据库的路径
secure_file_priv="D:/backup"
一、实验目的:
- 理解My SQL的权限系统的工作原理和MySQL备份的概念。
- 理解My SQL账户及权限的概念。
- 掌握管理My SQL账户和权限的方法。
- 学会创建和删除普通用户的方法和密码管理的方法。
- 学会如何进行权限管理。
- 掌握各种备份数据库的方法。
- 掌握如何从备份中恢复数据。
- 掌握数据库迁移的方法。
- 掌握表的导入与导出的方法。
二、验证性实验
1、实验任务如下:
(1) 使用root用户创建Testuser1用户,初始密码设置为123456。让该用户对所有数据库拥有SELECT、CREATE、DROP、SUPER权限。
grant select,create,drop,super on *.* to Testuser1@localhost identified by '123456'
with grant option;
(2) 创建Testuser2用户,该用户没有初始密码。
create user Testuser2@localhost;
(3) 用Testuser2用户登录,将其密码修改为000000。
mysql -u Testuser2 -p
set password=password('000000');
(4) 用Testuser1用户登录,为Testuser2用户设置CREATE和DROP权限。
grant create,drop on *.* to Testuser2@localhost ;
(5) 用Testuser2用户登录,验证其拥有的CREATE和DROP权限。
mysql -u Testuser2 -p000000
create database jxgl;
create table jxgl.t1(id int);
drop table jxgl.t1;
(6) 用root用户登录,收回Testuser1用户和Testuser2用户的所有权限。(在workbench中验证时必须重新打开这两个用户的连接窗口)
revoke all on *.* from Testuser1@localhost,Testuser2@localhost;
(7) 删除Testuser1用户和Testuser2用户。
drop user Testuser1@localhost,Testuser2@localhost;
(8) 修改root用户的密码。
update mysql.user set password=password("000000") where user='root';
2.数据库备份
cmd控制台: 先进入mysql所在的bin目录下,如:cd C:\Program Files\MySQL\MySQL Server 5.5\bin
(1) 使用mysqldump命令备份JXGL数据库,生成的gbak.sql文件存储在D:\mysqlbak。
mysqldump -u root -p123456 jxgl > d:\mysqlbak\gbak.sql
(2) 使用mysqldump命令备份JXGL数据库中的course表和sc表,生成的cs.sql文件存储在D:\mysqlbak。
mysqldump -u root -p123456 jxgl course sc > d:\mysqlbak\cs.sql
(3) 使用mysqldump命令同时备份两个数据库,具体数据库自定。
mysqldump -u root -p123456 --databases jxgl readbook > d:\mysqlbak\grbak.sql
(4) 将JXGL数据库删除,分别使用mysql命令和source命令将JXGL数据库的备份文件gbak.sql恢复到数据库中。
mysql -u root -p123456
drop database jxgl;
create database jxgl;
use jxgl;
source d:/mysqlbak/gbak.sql;
(5) 将数据库中的course表和sc表删除,分别使用mysql命令和source命令将备份文件cs.sql恢复到JXGL数据库中。
drop table course,sc;
source d:mysqlbak/cs.sql;
三、设计性实验
1.用户创建、权限分配
(1)将使用root用户创建examl用户,初始密码设置为123456。让该用户对所有数据库拥有SELECT、CREATE、DROP、SUPER和GRANT权限。
grant select,create,drop,super on *.* to exam1@localhost identified by '123456'
with grant option;
(2)创建用户exam2,该用户没有初始密码。
create user exam2@localhost;
(3)用exam2登录,将其密码设置为686868。
mysql -u exam2 -p
set password=password('686868');
(4)用examl登录,为exam2设置CREATE和DROP权限。
mysql -u exam1 -p123456
grant create,drop on *.* to exam2@localhost;
(5)用root用户登录,收回examl和exam2的所有权限。
mysql -u root -p123456
revoke all on *.* from exam1@localhost,exam2@localhost;
(7) 删除exam1用户和exam2用户。
drop user exam1@localhost,exam2@localhost;
(8) 修改root用户的密码。
update mysql.user set password=password("000000") where user='root';
2.数据库备份和还原
对JXGL数据库中的score表进行备份和还原的操作。本节要求的操作如下:
(1)使用mysqldump命令来备份score表。备份文件存储在D:\backup路径下。
create database jxgl;
use jxgl;
create table score(
score int(4)
);
mysqldump -u root -p123456 jxgl score > d:/backup/sc.sql
(2)使用mysql命令来还原score表。
use jxgl;
drop table score;
source d:/backup/sc.sql;
(3)使用SELECT…INTO OUTFILE来导出score表中的记录。 记录存储到D:\backup\score.txt中o
select * from score into outfile 'D:/backup/score.txt';
(4)使用mysqldump命令,将score表的记录导出到XML文件中。这个XML文件存储在D:\backup中。
mysqldump -u root -p123456 --xml jxgl score > d:/backup/score.xml
四、观察与思考
1.新创建的MySQL用户能否在其他机器上登录MySQL数据库?
答:能,可以用IP地址,回环地址127.0.0.1。
grant all on . to username@’%’ identified by ‘password’;
2.如何选择备份数据库的方法?
答:备份方式有:
1.mysqldump工具备份
2.直接复制整个数据库目录(对于InnoDB存储引擎不适用)备份
3.mysqlhotcopy工具备份
备份数据库或表最快的途径,只能运行在数据库目录所在的机器上,并且只能备份MyISAM类型的表。要使用该备份方法必须可以访问备份的表文件。
4.mysql命令导入sql文件还原
该方式必须确保原数据库和待还原的数据库主版本号一致,并且只适用于MyISAM引擎的表。
5.相同版本数据库之间迁移
6.使用mysqlbinlog恢复数据
选择方法:按需选择。