一.实验内容
1. 使用create user创建一个数据库用户student,密码是123456,该用户只能通过数据库本机访问数据库。
2. 使用grant给数据库用户student授权,限制该用户只能通过数据库本机访问数据库,并只能对teacher表进行查询、修改和新增。
3. 使用grant给student用户赋予student表的查询权限。
4. 使用revoke回收student用户的修改和新增teacher表的权限。
5. 删除创建的数据库用户student。
6. 使用 mysqldump备份数据库xscj中的所有表。
7. 使用 mysqldump备份 xscj数据库中的teacher表。
8. 使用mysqldump备份xscj和 mysql数据库。
9. 使用mysqldump备份服务器中的所有数据库。
10. 使用mysql命令将第6题的备份导入到xscj数据库中。
11. 使用mysql命令用root用户登录到MySQL服务器,并使用source恢复第6题的备份。
12. 使用 select.. into outfile将 xscj数据库中的 student表中的记录导出到文本。
13. 使用 select .. into outfile将 xscj数据库中的 student表中的记录导出到文本文件,使用 fields选项,要求字段之间使用逗号“,”间隔,所有字段值用双引号括起来,定义转义字符定义为单引号“\’”,使用 lines选项,要求每行记录以字符串“>”开始,以“<end>”字符串结尾。
14. 使用mysqldump将xscj数据库中的student中的记录导出到文本文件。
15. 使用load data命令将13题导出的数据导入到xscj数据库中的student表。
二.语法回顾
三.编程实战
Datagrip部分
# -----------------------------------数据准备阶段--------------------------------------
# 创建xscj数据库
drop database if exists xscj;
create database if not exists xscj;
# 连接xscj数据库
use xscj;
# 建表插值
drop table if exists Student;
create
TABLE Student(
S_no BigInt(11) NOT NULL UNIQUE AUTO_INCREMENT
COMMENT
'学生学号',
S_name VarChar(50) NOT NULL
COMMENT
'学生姓名',
S_sex Char(2)
COMMENT
'性别',
S_bir Date
COMMENT
'出生日期',
phone VarChar(13) UNIQUE
COMMENT
'电话',
email VarChar (50) NOT NULL
COMMENT
'电子邮件',
PRIMARY KEY (S_no)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
desc
student;
drop table if exists score;
create
TABLE score(
S_no BigInt(11) NOT NULL
COMMENT
'学生学号',
C_no Char(13) NOT NULL
COMMENT
'课程编号',
daily Float
COMMENT
'平时成绩',
final Float
COMMENT
'结业成绩',
PRIMARY KEY (S_no, C_no)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
drop table if exists course;
create
TABLE course(
C_no Char(13) NOT NULL
COMMENT
'课程编号',
C_name VarChar(50)
COMMENT
'课程名称',
T_no Char(10) NOT NULL
COMMENT
'教师编号',
hour Float
COMMENT
'学分',
week Int(2)
COMMENT
'教学周',
Semester Int(1)
COMMENT
'开课学期',
PRIMARY KEY (C_no, T_no)
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
drop table if exists teacher;
create
TABLE teacher(
t_no Char(10) NOT NULL UNIQUE
COMMENT
'教师号',
T_name VarChar(10) NOT NULL
COMMENT
'教师姓名',
major Char(10)
COMMENT
'专业',
prof Char(6)
COMMENT
'职称',
Department Char(10)
COMMENT
'学院'
) ENGINE = InnoDB DEFAULT CHARSET = utf8;
insert into
student(s_no, s_name, s_sex, s_bir, phone, email)
values
(
18122221320,
"张凯",
"男",
"2001/5/6",
"13245678547",
"36451@qq.com"
),
(
18122221321,
"赵峰",
"男",
"1999/5/4",
"13245678548",
"ABTHE@SOHU.com"
),
(
1812222322,
"王伟",
"男",
"2003/8/9",
"13245678549",
"45SSEEE@163.com"
),
(
1842222323,
"李成",
"男",
"2003/9/12",
"13245678551",
"78962@qq.com"
),
(
18122221324,
"赵晓月",
"女",
"2002/12/4",
"13545678551",
"3232459@qq.com"
),
(
18122221325,
"王俊鑫",
"男",
"2003/4/7",
"13845678552",
"8989456@qq.com"
),
(
18137221506,
"王枫",
"男",
"2001/10/5",
"13645678553",
"WSWS4875@SHOU.COM"
),
(
18137221507,
"李浩",
"男",
"2000/11/23",
"13888128558",
"46SSEEE@163.com"
),
(
18137221508,
"孙琳",
"女",
"2002/5/1",
"13522078555",
"124578@qq.com"
),
(
19112100070,
"陈晨",
"男",
"2003/4/8",
"13243271256",
"457822SW@SOHU.COM"
),
(
19112100071,
"吴司",
"男",
"1999/12/4",
"13244673357",
"JEUD@163.COM"
),
(
19112100072,
"李珊",
"女",
"1998/12/25",
"13955089958",
"78451@qq.com"
),
(
19112100073,
"钱峰",
"男",
"2000/4/1",
"13945322359",
"BBBTIH@SOHU.COM"
),
(
19112100074,
"张雯",
"女",
"2000/12/3",
"13545612360",
"SSSMOU@163.COM"
);
insert into
score(S_no, C_no, daily, final)
VALUES
(18122221320, "c08123", 85, 95),
(18122221320, "a01564", 88, 93),
(18122221320, "C06108", 92, 90),
(18122221321, "c08123", 85, 94),
(18122221321, "C06108", 70, 82),
(18122221322, "c08123", 60, 64),
(18122221322, "a01327", 53, 50),
(18122221322, "a01564", 64, 50),
(18122221323, "a01564", 88, 84),
(18122221323, "C05103", 85, 86),
(18122221324, "c08123", 77, 81),
(18122221324, "C05103", 95, 86),
(18122221325, "C05103", 88, 90);
insert into
course(C_no, C_name, T_no, hour, week, Semester)
values
("c08123", "数据库技术", "t07019", 4, 16, 4),
("c08123", "数据库技术", "t03117", 4, 16, 4),
("C06108", "数据结构", "t07019", 4, 16, 3),
("C06108", "数据结构", "t01247", 4, 16, 3),
("C05103", "计算机原理", "t01247", 4, 16, 2),
("C05103", "计算机原理", "t03117", 4, 16, 2),
("a01327", "高等数学", "t00458", 4, 16, 2),
("a01327", "高等数学", "t00578", 4, 16, 2),
("a01564", "马克思原理", "t04410", 2, 12, 1),
("a01564", "马克思原理", "t04415", 2, 12, 1);
insert into
teacher(t_no, T_name, major, prof, Department)
VALUES
("t01247", "程瑞", "软件工程", "副教授", "计算机学院"),
("t07019", "刘泽", "软件工程", "讲师", "软件学院"),
("t04213", "汪凌灵", "网络技术", "副教授", "计算机学院"),
("t04115", "刘珊", "哲学", "讲师", "人文学院"),
("t00458", "李泽峰", "数学", "助教", "基础课程学院"),
("t00578", "张伦", "数学", "讲师", "基础课程学院"),
("t02145", "王乐", "英语", "助教", "基础课程学院"),
("t04410", "王伟", "哲学", "副教授", "文学院"),
("t03117", "孙艳", "软件工程", "讲师", "软件学院");
# -----------------------------------实验操作阶段--------------------------------------
# 1.使用create user创建一个数据库用户student,密码是123456,该用户只能通过数据库本机访问数据库。
-- 删除用户
drop user if exists 'student'@'localhost';
-- 创建用户
create user 'student'@'localhost' identified by '123456';
# 2.使用grant创建一个数据库用户teacher,密码是123456,该用户只能通过数据库本机访问数据库,并只能对teacher表进行查询、修改和新增。
-- 删除用户
drop user if exists 'teacher'@'localhost';
-- 创建用户
create user 'teacher'@'localhost' identified by '123456';
grant select,update,insert on xscj.teacher to 'teacher'@'localhost';
# 3.使用grant给student用户赋予xscj数据库中表student和表score的查询权限。
grant select on xscj.student to 'student'@'localhost';
grant select on xscj.score to 'student'@'localhost';
# 4.使用revoke回收teacher用户的修改和新增teacher表的权限。
revoke update,insert on xscj.teacher from 'teacher'@'localhost';
# 5.删除创建的数据库用户teacher。
drop user 'teacher'@'localhost';
-- 查看MySQL信任导出导入地址
SHOW VARIABLES LIKE 'secure_file_priv';
# 12.使用 select.. into outfile将 xscj数据库中的 student表中的记录导出到文本。
select
*
from
xscj.student
into outfile
'C:/ProgramData/MySQL/MySQL Server 8.1/Uploads/student01.txt';
# 13.使用 select .. into outfile将 xscj数据库中的 student表中的记录导出到文本文件,使用 fields选项,要求字段之间使用逗号“,”间隔,所有字段值用双引号括起来,定义转义字符定义为单引号“\’”,使用 lines选项,要求每行记录以字符串“>”开始,以“<end>”字符串结尾。
select
*
from
xscj.student
into outfile
'C:/ProgramData/MySQL/MySQL Server 8.1/Uploads/student02.txt'
fields terminated by ','
optionally enclosed by '"'
escaped by '\''
lines starting by '>' terminated by '<end>';
# 15.使用load data命令将13题导出的数据导入到xscj数据库中的student表。
-- 清空student表
truncate table student;
load data infile
'C:/ProgramData/MySQL/MySQL Server 8.1/Uploads/student02.txt'
into table
xscj.student
fields terminated by ','
optionally enclosed by '"'
escaped by '\''
lines starting by '>' terminated by '<end>';
Dos命令窗口部分
# 6.使用 mysqldump备份数据库xscj中的所有表。
mysqldump -u root -p xscj teacher student score course > C://学习文件//xscj所有表备份.sql
# 7.使用 mysqldump备份 xscj数据库中的teacher表。
mysqldump -u root -p xscj teacher > C://学习文件//xscj-teacher表备份.sql
# 8.使用mysqldump备份xscj和 mysql数据库。
mysqldump -u root -p --databases xscj mysql > C://学习文件//xscj-mysql数据库备份.sql
# 9.使用mysqldump备份服务器中的所有数据库。
mysqldump -u root -p --all-databases > C://学习文件//所有数据库备份.sql
# 10.使用mysql命令将第6题的备份导入到xscj数据库中。
mysqldump -u root -p xscj < C://学习文件//xscj所有表备份.sql
# 11.使用mysql命令用root用户登录到MySQL服务器,并使用source恢复第6题的备份。
mysql -u root -p
source C://学习文件//xscj所有表备份.sql
# 14.使用mysqldump将xscj数据库中的student中的记录导出到文本文件。
mysqldump -u root -p xscj student > C://学习文件//student_.txt