MySQL数据库原理及应用(微课版|第4版)
数据库原理及应用
----项目8 维护学生信息管理数据库的安全性
MySQL数据库原理及应用(微课版|第4版)
情景导入
王宁了解到数据库管理员还有三个重要职责,一是尽量使MySQL免遭用户的非
法侵入,拒绝其访问数据库,保证数据库的安全性。二是为防止数据丢失,及
时将数据进行备份,保证数据的完整性,从而保证系统业务的正常运行。三是
当数据库管理系统不能正常运行时,能够根据日志信息进行恢复。
对于数据的备份,王宁深有体会。在学习任务5-4数据更新时,
王宁由于操作不当,误将sc表和student表中的数据清空,导致
学生基本信息和选课信息丢失。李老师告诉王宁,在实际应用开
发中,一般要定期对数据进行备份,从而防止重要数据丢失。
MySQL数据库原理及应用(微课版|第4版)
了解MySQL的权限系统
管理数据库用户权限
备份与恢复数据库
使用MySQL日志
主要内容
MySQL数据库原理及应用(微课版|第4版)
项目1 理解数据库
职业能力目标(含课程思政)
了解MySQL的权限系统
掌握MySQL的用户管理和权限管理的方法
掌握数据备份和数据还原的方法
掌握数据库迁移的方法
掌握数据的导入与导出方法
了解什么是MySQL日志
MySQL数据库原理及应用(微课版|第4版)
任务8-1 了解MySQL的权限系统
【任务提出】
王宁在使用Navicat客户端连接MySQL服务器时,有一次误将
root用户的密码输入123(正确密码是123456),单击“确定”
按钮后,双击生成的连接,结果返回了“1045-Access denied
for user ‘root’@’localhost’(using password:YES)”的错误提
示。
因此,他需要根据MySQL权限系统的相关知识,来解
决这个问题。
MySQL数据库原理及应用(微课版|第4版)
MySQL是一个多用户数据库管理系统,具有功能强大的访问
控制系统,可以为不同用户指定允许的权限。掌握其授权机制是开
始操作MySQL数据库必须要走的第1步。
下面将简单介绍如何利用MySQL权限表的结构和服务器决定
访问权限。
(一)权限表
MySQL数据库原理及应用(微课版|第4版)
通过网络连接服务器的客户对MySQL数据库的访问由权限表内
容来控制。这些表位于mysql数据库中,并在第1次安装MySQL的过
程中初始化。
权限表共有5个表:user、db、tables_priv、columns_priv和
procs_priv。
(一)权限表
当MySQL服务启动时,会首先读取mysql中的权限表,并将表
中的数据装入内存。当用户进行存取操作时,MySQL会根据这
些表中的数据做相应的权限控制。
MySQL数据库原理及应用(微课版|第4版)
(1)user表。
user表是MySQL中最重要的一个权限表,记录允许连接到服务
器的账号信息。
user表列出可以连接服务器的用户及其口令,并且指定他们有
哪种全局(超级用户)权限。在user表启用的任何权限均是全局权
限,并适用于所有数据库。
1、权限表user和db的结构和作用
(一)权限表
例如,如果用户启用了DELETE权限,则该用
户可以从任何表中删除记录。
MySQL数据库原理及应用(微课版|第4版)
(2)db表。
db表也是MySQL数据库中非常重要的权限表。
db表中存储了用户对某个数据库的操作权限,决定用户能
从哪个主机存取哪个数据库。
(一)权限表
MySQL数据库原理及应用(微课版|第4版)
tables_priv表用来对表设置操作权限,
columns_priv表用来对表的某一列设置权限,
procs_priv表可以对存储过程和存储函数设置操作权限。
2、tables_priv表、columns_priv表和procs_priv表
(一)权限表
MySQL数据库原理及应用(微课版|第4版)
为了确保数据库的安全性与完整性,系统并不希望每个用户
可以执行所有的数据库操作。
当MySQL允许一个用户执行各种操作时,它将首先核实用
户向MySQL服务器发送的连接请求,然后确认用户的操作请求是
否被允许。
(二)MySQL权限系统的工作原理
MySQL的访问控制分为两个阶段:
连接核实阶段
请求核实阶段
MySQL数据库原理及应用(微课版|第4版)
当用户试图连接MySQL服务器时,服务器基于用户提供的信
息来验证用户身份,如果不能通过身份验证,服务器会完全拒绝
该用户的访问。如果能够通过身份验证,则服务器接受连接,然
后进入第2个阶段等待用户请求。
1.连接核实阶段
(二)MySQL权限系统的工作原理
MySQL使用user表中的3个字段(Host、User
和authentication_string)进行身份检查,服务器只
有在用户提供主机名、用户名和密码并与user表中
对应的字段值完全匹配时才接受连接。
MySQL数据库原理及应用(微课版|第4版)
一旦连接得到许可,服务器进入请求核实阶段。在这一阶段,MySQL服
务器对当前用户的每个操作都进行权限检查,判断用户是否有足够的权限来
执行它。用户的权限保存在user、db、tables_priv或columns_priv权限表中。
在MySQL权限表的结构中,user表在最顶层,是全局级的。下面是db
表,它是数据库层级的。最后才是tables_priv表和columns_priv表,它们是
表级和列级的。
2.请求核实阶段
(二)MySQL权限系统的工作原理
确认权限时,MySQL首先检查user表,如果指定的权限没
有在user表中被授权,MySQL服务器将检查db表,在该层级的
SELECT权限允许用户查看指定数据库的所有表的数据。如果
在该层级没有找到限定的权限,则MySQL继续检查tables_priv
表以及columns_priv表。如果所有权限表都检查完毕,依旧没
有找到允许的权限操作,MySQL服务器将返回错误信息,用户
操作不能执行,操作失败。
MySQL数据库原理及应用(微课版|第4版)
接收到用户操作请求
检查user表中权限
检查db表中权限
检查tables_priv表中权限
检查columns_priv表中权限
不允许用户执行该操作
执行用户
请求的操作
无
无
无
无
有
有
有
有
MySQL请求核实阶段的过程
(二)MySQL权限系统的工作原理
MySQL数据库原理及应用(微课版|第4版)
【任务实施】
王宁掌握了用户权限验证的方法和步骤后,根据
错误提示信息,将root用户的密码修正为123456,成
功使Navicat连接到了MySQL服务器。
任务8-1 了解MySQL的权限系统
MySQL数据库原理及应用(微课版|第4版)
【任务提出】
在实际应用中,一般不会以root用户直接操作数据库,而是要
新建普通用户进行操作。王宁尝试着创建了一个用户test。但是当
他以test用户连接到服务器时,提示如“1142-SELECT command
denied to user ‘test’@‘localhost’ for table ‘user’”所示的错误提
示。
任务8-2 管理数据库用户权限
王宁需要掌握用户权限的相关知识,并解决这个问题。
MySQL数据库原理及应用(微课版|第4版)
通过账户管理,可以保证MySQL数据库的安全性。
MySQL的账户管理主要包括以下内容:
登录和退出MySQL服务器
创建用户
删除用户
密码管理
权限管理
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
要创建新用户,必须有相应的权限来执行创建操作。
在MySQL数据库中,有3种方式创建新用户。
利用图形工具,
使用SQL语句(CREATE USER语句或GRANT语句),
直接操作MySQL权限表。
1.创建新用户
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
1)在Navicat中,连接到MySQL服务器。
2)单击工具栏上的【用户 】按钮,这时会在右侧窗格显示出用户
列表。
3)单击右侧窗格上方的【新建用户】按钮,或右击窗格空白处,
执行【新建用户】命令,将弹出新建用户的对话框,在对话框中输
入相应内容,单击【保存】,即可创建新用户。
4)可以在“高级”、“服务器权限”和“权限”选项卡中设置该用户的权
限、安全连接和限制服务器资源等。
(1)使用Navicat图形工具创建用户
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
CREATE USER语句的基本语法格式如下。
CREATE USER user[IDENTIFIED BY 'password']
[,user[IDENTIFIED BY 'password']][,…];
(2)使用CREATE USER语句创建新用户
【例】 添加两个新用户,king的密码为queen,palo的
密码为530415。
CREATE USER
'king'@'localhost' IDENTIFIED BY 'queen',
'palo'@'localhost' IDENTIFIED BY '530415';
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
创建新用户,实际上就是在user表中添加一条新的记录。因此,可以使用
INSERT语句直接将用户的信息添加到表中。其语法格式如下。
(3)直接操作mysql用户表
INSERT INTO
user(HOST,User,authentication_string,ssl_cipher,x509_issuer,x509_subject)
VALUES('hostname','username',MD5('authentication_string,'),'','','');
提示:ssl_cipher,x509_issuer,x509_subject这3个字段没有默认
值,在向user表中添加新记录时,一定要设置这3个字段的默认值,
否则insert语句将不能执行。
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
【例】 使用INSERT语句创建一个新用户student,主
机名为localhost,密码为infomation。
INSERT INTO
(Host,User,authentication_string,ssl_cipher,x509_issuer,x509_subject)
VALUES('localhost','student',MD5('infomation'),'','','');
此时,新添加的用户还没法使用账号密码登录MySQL
,需要使用FLUSH命令使用户生效。命令如下。
FLUSH PRIVILEGES;
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
在MySQL数据库中,删除用户可以用以下三种方法:
使用Navicat图形工具删除用户
使用DROP USER语句删除用户
使用DELETE语句从表中删除对应的记录来
删除用户
2.删除用户
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
DROP USER的语法格式如下:
DROP USER user_name[, user_name] [,…];
功能:用于删除一个或多个MySQL账户,并取消其权限。要使
用DROP USER,必须拥有mysql数据库的全局CREATE
USER权限或DELETE权限。
例如:DROP USER TOM@localhost;
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
使用DELETE语句删除用户,基本语法格式如下。
DELETE FROM
WHERE host='hostname' and user='username';
备注:host和user为user表中的两个字段。
【例】 使用DELETE语句删除用户test1。
DELETE FROM
WHERE host='localhost' and user='test1';
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
(1)使用Navicat图形工具修改用户。
(2)使用RENAME USER语句修改用户。基本语法格式如下。
RENAME USER old_user TO new_user,
[, old_user TO new_user] [,…];
3.修改用户名称
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
【例】 将用户king1和king2的名字分别修改为ken1和
ken2。
RENAME USER
'king1'@'localhost' TO 'ken1'@'localhost',
'king2'@'localhost' TO 'ken2'@'localhost';
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
要修改某个用户的登录密码,可以使用mysqladmin命令、UPDATE语句或
SET PASSWORD语句来实现。
4.修改密码
(1)root用户修改自己的密码。
① 使用mysqladmin命令。基础语法格式如下。
mysqladmin –u username –h localhost –p
【例】 使用mysqladmin命令将root用户的密码修改为"rootpwd"。
mysqladmin –u root –p password "rootpwd";
Enter password:
修改完root用户的密码后,需要重新启动MySQL或执行FLUSH
PRIVILEGES语句重新加载用户权限表
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
②使用update语句修改mysql数据库中的user表。
UPDATE
SET authentication_string=MD5(‘newpassword’)
WHERE user=‘root’and host=‘localhost’;
(2)使用set password语句修改密码,语法格式如下。
SET PASSWORD [FOR USER]=‘ newpassword ’ ;
例如:
SET PASSWORD FOR ‘king’@‘localhost’=‘queen1’;
(一)用户管理
MySQL数据库原理及应用(微课版|第4版)
在学习过程中,为了方便使用MySQL,无论是root用户还是普
通用户,密码都设置得非常简单。但是,在实际工作中,我们
要有 。
思政小贴士
大数据时代,数据安全面临严峻考验,用户信息保护已
成为全球网络空间安全监管的巨大难题。为保护自身信
息安全,防止遭受不法分子攻击,强烈建议读者在设置
各类用户名和密码时,一定要选择复杂的密码。
MySQL数据库原理及应用(微课版|第4版)
权限管理主要是对登录到MySQL的用户进行权限验证。
所有用户的权限都存储在MySQL的权限表中。合理的权限
管理能够保证数据库系统的安全,不合理的权限设置会给
MySQL服务器带来安全隐患。
(二)权限管理
MySQL数据库原理及应用(微课版|第4版)
MySQL数据库中有多种类型的权限,这些权限都存储在
mysql数据库的权限表中。在MySQL启动时,服务器将这些数
据库中的权限信息读入内存。
1.MySQL的权限类型
权限级别:
① 全局层级。
② 数据库层级。
③ 表层级。
④ 列层级。
⑤ 子程序层级。
(二)权限管理
MySQL数据库原理及应用(微课版|第4版)
在MySQL中,必须是拥有GRANT权限的用户才可以执行GRANT语句。
GRANT语句的基本语法格式如下。
GRANT priv_type [(column_list)] [,priv_type [(column_list)]] [,…n]
ON{table_name|*|*.*|database_name.*|_name}
TO username [,username1] [,…usernamen]
[WITH GRANT OPTION];
2.授权
(二)权限管理
MySQL数据库原理及应用(微课版|第4版)
【例】 使用GRANT语句为用户ken1赋权,使其对所有
的数据有查询、插入权限,并授予GRANT权限。
GRANT SELECT,INSERT on *.* TO 'ken1'@'localhost'
WITH GRANT OPTION;
(二)权限管理
MySQL数据库原理及应用(微课版|第4版)
【强化训练1】 使用GRANT语句将gradem数据库中student
表的DELETE权限授予用户ken1。
GRANT DELETE on
TO 'ken1'@'localhost';
【强化训练2】 使用GRANT语句将gradem数据库中sc表
的degree列和cterm列的UPDATE权限授予用户test1。
GRANT UPDATE(degree,cterm) on
to 'test1'@'localhost';
(二)权限管理
MySQL数据库原理及应用(微课版|第4版)
收回权限就是取消已经赋予用户的某些权限。收回用户不必
要的权限在一定程度上可以保证数据的安全性。权限收回后,用
户账户的记录将从db、host、tables_priv和columns_priv表中删
除,但是用户账户记录仍然在user表中保存。
3.收回权限
(二)权限管理
收回权限利用REVOKE语句实现,语法格式有两种:
收回用户的所有权限
收回用户指定的权限
MySQL数据库原理及应用(微课版|第4版)
(1)收回所有权限。
其基本语法如下。
REVOKE ALL PRIVILEGES,GRANT OPTION
FROM 'username'@'hostname'
[,'username'@'hostname'][,…n];
REVOKE ALL PRIVILEGES,GRANT OPTION
FROM 'ken1'@'localhost';
【例】 使用REVOKE语句收回ken1用户的所有权
限,包括GRANT权限。
(二)权限管理
MySQL数据库原理及应用(微课版|第4版)
(2)收回指定权限。
REVOKE priv_type [(column_list)] [,priv_type [(column_list)]] [,…n]
ON
{table_name|*|*.*|database_name.*|_name}
FROM 'username'@'hostname'[,'username'@'hostname'][,…n];
REVOKE UPDATE(cterm) on
FROM 'test1'@'localhost';
【例】收回test1用户对gradem数据库中student表的
cterm列的UPDATE权限。
(二)权限管理
MySQL数据库原理及应用(微课版|第4版)
SHOW GRANTS语句可以显示指定用户的权限信息,语法格式。
SHOW GRANTS FOR 'username'@'hostname';
【例】 使用SHOW GRANTS语句查看test1用
户的权限信息。
4.查看权限
(二)权限管理
MySQL数据库原理及应用(微课版|第4版)
【任务实施】
王宁已经学会使用GRANT语句对用户进行赋权,
于是他成功解决了任务提出中的问题,具体代码
如下。
任务8-2 管理数据库用户权限
GRANT SELECT,INSERT on *.* TO 'test'@'localhost'
WITH GRANT OPTION;
MySQL数据库原理及应用(微课版|第4版)
【任务提出】
在学习数据更新时,王宁由于操作不当,误将sc表和student
表中的数据清空,导致学生基本信息和选课信息丢失。李老师告诉
王宁,在实际应用开发中,一般要定期对数据进行备份,从而防止
重要数据丢失。
因此,王宁需要使用备份命令对sc表和student表进行备份。
任务8-3 备份与恢复数据库
MySQL数据库原理及应用(微课版|第4版)
数据备份就是制作数据库结构、对象和数据的复制,以便
在数据库遭到破坏时,或因需求改变而需要把数据还原到改变
以前时能够恢复数据库。
数据恢复就是指将数据库备份加载到系统中。数据备
份和恢复可以用于保护数据库的关键数据。在系统发生错误或
者因需求改变时,利用备份的数据可以恢复数据库中的数据。
(一)数据备份与恢复
MySQL数据库原理及应用(微课版|第4版)
1.数据损失的因素
– (1)存储介质故障。
– (2)系统故障。
– (3)用户的错误操作。
– (4)服务器的彻底崩溃。
– (5)自然灾害。
– (6)计算机病毒。
(一)数据备份与恢复
MySQL数据库原理及应用(微课版|第4版)
(1)按备份时服务器是否在线划分。
① 热备份。热备份是指数据库在线时服务正常运行的
情况下进行数据备份。
② 温备份。温备份是指进行数据备份时数据库服务正
常运行,但数据只能读不能写。
③ 冷备份。冷备份是指数据库已经正常关闭的情况下
进行的数据备份。当正常关闭时会提供一个完整的
数据库。
2.数据备份的分类
(一)数据备份与恢复
MySQL数据库原理及应用(微课版|第4版)
(2)按备份的内容划分。
① 逻辑备份。逻辑备份是指使用软件技术从数据库中导出数
据并写入一个输出文件,该文件格式一般与原数据库的文件格式不
同,只是原数据库中数据内容的一个映像。逻辑备份支持跨平台,
备份的是SQL语句(DDL和insert语句),以文本形式存储。在恢
复的时候执行备份的SQL语句实现数据库数据的重现。
2.数据备份的分类
(一)数据备份与恢复
② 物理备份。物理备份是指直接复制数据库文件进
行的备份,与逻辑备份相比,其速度较快,但占用空间
比较大。
MySQL数据库原理及应用(微课版|第4版)
(3)按备份涉及的数据范围来划分。
① 完整备份。指备份整个数据库。这是任何备份策略中都要求完成的
第1种备份类型,因为其他所有备份类型都依赖于完整备份。换句
话说,如果没有执行完整备份,就无法执行差异备份和增量备份。
② 增量备份。数据库从上一次完全备份或者最近一次的增量备份以来
改变的内容的备份。
③ 差异备份。差异备份是指将从最近一次完整数据库备份以后发生改
变的数据进行备份。差异备份仅捕获自该次完整备份后发生更改的
数据。
2.数据备份的分类
备份是一种十分耗费时间和资源的操作,不能频繁操作。应
该根据数据库使用情况确定一个适当的备份周期。
(一)数据备份与恢复
MySQL数据库原理及应用(微课版|第4版)
数据恢复就是当数据库出现故障时,将备份的数据库加载到系统,从而使
数据库恢复到备份时的正确状态。MySQL有3种保证数据安全的方法。
(1)数据库备份:通过导出数据或者表文件的拷贝来保护数据。
(2)二进制日志文件:保存更新数据的所有语句。
(3)数据库复制:MySQL内部复制功能。建立在两个或两个以上服务器
之间,通过设定它们之间的主从关系来实现的。其中一个作为主服务器,
其他的作为从服务器。
3.数据恢复的手段
恢复是与备份相对应的系统维护和管理操作。系统进行恢复操作
时,先执行一些系统安全性的检查,包括检查所要恢复的数据库
是否存在、数据库是否变化及数据库文件是否兼容等,然后根据
所采用的数据库备份类型采取相应的恢复措施。
(一)数据备份与恢复
MySQL数据库原理及应用(微课版|第4版)
1.使用Navicat图形工具备份
2.使用mysqldump命令备份
mysqldump是MySQL提供的一个非常有用的数据库备份工具。命
令执行时,可以将数据库备份成一个文本文件,该文件中实际上是
包含了多个CREATE和INSERT语句,使用这些语句可以重新创建表和
插入数据。
(二)数据备份的方法
MySQL数据库原理及应用(微课版|第4版)
【例】 使用mysqldump命令备份数据库gradem中的所有表。
mysqldump –u root –h localhost –p
gradem>d:\bak\
Enter password:******
(二)数据备份的方法
(1)备份数据库或表。
mysqldump备份数据库或表的基本语法格式如下。
mysqldump –u user –h host –ppassword
dbname[tbname,[tbname…]]>;
MySQL数据库原理及应用(微课版|第4版)
使用mysqldump备份多个数据库,需要使用--databases参数,
其基本语法格式如下。
mysqldump –u user –h host –p --databases dbname[
dbname…]]>;
使用--databases参数之后,必须指定至少一个数据库的名称,多
个数据库之间用空格隔开。
【例】 使用mysqldump命令备份数据库gradem和mydb。
mysqldump –u root –h localhost –p --databases
gradem mydb>d:\bak\
Enter password:******
(2)备份多个数据库
(二)数据备份的方法
MySQL数据库原理及应用(微课版|第4版)
因为MySQL表保存为文件方式,所以可以直接复制MySQL数据
库的存储目录及文件进行备份。这种方法最简单,速度也最快。使用
该方法时,最好先将服务器停止,这样可以保证在复制期间数据不会
发生变化。
3.直接复制整个数据库文件夹
(二)数据备份的方法
这种方法简单快速,但不是最好的备份方法。在实
际情况下,可能不允许停止MySQL服务器。而且此方法
对InnoDB存储引擎的表不适用。对于MyISAM存储引擎
的表,利用此方法备份和还原很方便。使用此方法备份
的数据最好还原到相同版本的服务器上,否则会出现不
兼容的情况。
MySQL数据库原理及应用(微课版|第4版)
恢复数据库,就是让数据库根据备份的数据回到备份时的状态。
当数据丢失或意外破坏时,可以通过数据恢复已经备份的数据,尽量
减少数据丢失和破坏造成的损失。
1.使用Navicat图形工具恢复数据
2.使用mysql命令恢复数据
对于使用mysqldump命令备份后形成的.sql文件,可以
使用mysql命令导入到数据库中。mysql命令可以直接执行
文件中的create、insert等语句。语法格式如下。
mysql –u user –p [dbname]<;
(三)数据恢复的方法
MySQL数据库原理及应用(微课版|第4版)
【例】 使用mysql命令将备份文件恢复到数据库
中,执行过程如下。
mysql –u root –p gradem <d:\bak\
Enter password:******
执行语句前,必须先在MySQL服务器中创建了gradem数
据库,如果不存在,在数据恢复过程中会出错。命令执行
成功之后,文件中的语句就会在指定的数
据库中恢复以前的数据。
(三)数据恢复的方法
MySQL数据库原理及应用(微课版|第4版)
【例】 使用SOURCE命令将备份文件恢
复到数据库中,执行过程如下。
mysql>SOURCE d:\bak\
如果已登录MySQL服务器,还可以使用SOURCE命令导入.sql
文件。SOURCE语句的语法如下。
SOURCE
(三)数据恢复的方法
MySQL数据库原理及应用(微课版|第4版)
数据库迁移就是把数据从一个系统移动到另一个系统上。以下情况需要进行
数据库迁移。
需要安装新的数据库服务器。
MySQL版本更新。
数据库管理系统的变更(如从Microsoft SQL Server迁移到MySQL)。
MySQL数据库之间的迁移:对于InnoDB表,一般用mysqldump命令
将数据导出,然后用mysql命令导入目标服务器。
(四)数据库迁移
MySQL数据库原理及应用(微课版|第4版)
有时会需要将MySQL数据库中的数据导出到外部存储文件中,
MySQL数据库中的数据可以导出为sql文本文件、xml文件、
txt文件、xls文件或html文件。同样,这些导出文件也可以
导入到MySQL数据库中。
(五)表的导入与导出
1.利用Navicat图形工具导出和导入文件
2.利用SELECT语句和LOAD语句导出和导入文件
MySQL数据库原理及应用(微课版|第4版)
(1)使用SELECT … INTO OUTFILE导出文本文件。
SELECT <输出列表> FROM <表名> [WHERE <条件>]
INTO OUTFILE '[文件路径]文件名' [OPTIONS];
【例】 使用SELECT…INTO OUTFILE命令将gradem数据
库中的student表中的记录导出到文本文件,执行命令如下。
SELECT * FROM student INTO OUTFILE "D:/BAK/";
由于指定了INTO OUTFILE子句,SELECT将student表中的字段
值保存到D:\BAK\ 文件中。
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
【强化训练】 使用SELECT…INTO OUTFILE命令将gradem数据库中的sc表
中的记录导出到文本文件,使用FIELDS选项和LINES选项,要求字段之间
使用逗号“,”间隔,所有字段值用双引号括起来,定义转义字符为单
引号“\'”,执行命令如下。
SELECT * FROM course
INTO OUTFILE "D:/BAK/"
FIELDS TERMINATED BY ','
ENCLOSED BY '\"'
ESCAPED BY '\''
LINES TERMINATED BY '\r\n';
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
【例】 使用LOAD DATA INFILE命令将d:\bak\文件中
的数据导入到gradem数据库中的course表中,执行命令如下。
delete from course;
LOAD DATA INFILE 'd:/bak/'
INTO TABLE course;
(2)使用LOAD DATA INFILE语句导入文件。
LOAD DATA INFILE '' INTO TABLE tablename
[OPTIONS][IGNORE number LINES];
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
【强化训练】 使用LOAD DATA
INFILE命令将d:\bak\文件中的数
据导入到gradem数据库中的sc表中,
使用FIELDS选项和LINES选项,要求
字段之间使用逗号“,”间隔,所有字
段值用双引号括起来,定义转义字符
为单引号“\'”,执行命令如下。
delete from sc;
LOAD DATA INFILE "d:/bak/"
INTO TABLE
FIELDS
TERMINATED BY ','
ENCLOSED BY '\"'
ESCAPED BY '\''
LINES
TERMINATED BY '\r\n';
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
(1)使用mysqldump命令导出文本文件。
mysqldump –u root –p –T path dbname[tables]
[OPTIONS]
3.利用mysqldump命令和mysqlimport命令导出
和导入文件
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
【例】 使用mysqldump命令将gradem数据库中的
teacher表中的记录导出到文本文件,执行命令如下。
mysqldump -u root -p -T D:/bak gradem teacher
Enter password:******
语句执行成功后,会在D盘的bak文件夹中生成两
个文件,分别为和。
文件中包含创建teacher表的CREATE
语句,文件中包含表中的数据。
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
【例】 使用mysqldump命令将gradem数据库中的
sc表中的记录导出到文本文件,要求字段之间使用逗号
“,”间隔,所有字符类型的字段值用双引号括起来,定义
转义字符为问号“?”,每行记录以回车换行符“\r\n”结尾,
执行命令如下。
mysqldump –u root –p –T d:/bak gradem sc
--fields-terminated-by=, --fields-optionally-enclosed-by=\"
--fields-escaped-by=? --lines-terminated-by=\r\n
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
(2)使用mysqlimport命令导入文本文件。
mysqlimport -u root -p dbname
[OPTIONS]
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
【练习】 使用mysqlimport命令将d:\bak\文件中的数
据导入到gradem数据库中的sc表中,字段之间使用逗号“
,”间隔,所有字符型字段值用双引号括起来,定义转义字
符为单引号“?”,执行命令如下。
mysqlimport -u root -p gradem d:/bak/
--fields-terminated-by=, --fields-optionally-
enclosed-by=\"
--fields-escaped-by=? --lines-terminated-by=\r\n
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
mysql –u root –p [OPTIONS] -e|--execute= "SELECT语句" dbna
【例】 使用mysql命令将gradem数据库中的
teacher表中的记录导出到文本文件,执行命令如下
mysql -u root -p --execute="SELECT * FROM teacher;"
gradem>d:/bak/
Enter password:******
或
mysql -u root -p -e "SELECT * FROM teacher;"
gradem>d:/bak/
Enter password:******
4.使用mysql命令导出文本文件
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
【例】 使用mysql命令将gradem数据库中的
sc表中的记录导出到html文件,执行命令如下。
mysql -u root -p --html -e "SELECT * FROM sc;"
gradem>d:/bak/
Enter password:******
或
mysql -u root -p -H --execute= "SELECT * FROM sc;"
gradem>d:/bak/
Enter password:******
(五)表的导入与导出
MySQL数据库原理及应用(微课版|第4版)
【任务实施】
王宁选择在命令行下使用mysqldump命令备份数据库
gradem中的student表和sc表,具体代码如下。
任务8-3 管理数据库用户权限
mysqldump –u root –h localhost –p gradem student
sc>d:\bak\ password:******
输入密码后,MySQL便对数据库进行备份,在D:\bak文件
夹下查看备份的文件,使用文本查看器打开文件可以看到
其文件内容。
MySQL数据库原理及应用(微课版|第4版)
【任务提出】
了解MySQL的日志分类,可以在数据库不能正常启动时,
根据错误日志信息的提示,解决遇到的问题。
王宁需掌握日志的分类,并能看懂日志信息,了解服务
器的运行状态,为成为一名优秀的数据库管理员打下坚实的
基础。
任务8-4 使用MySQL日志
MySQL数据库原理及应用(微课版|第4版)
日志是数据库的重要组成部分。日志文件中记录了数据库运行期
间发生的变化。当数据库遭到意外损害时,可以通过日志文件来查询
出错原因,并且可以通过日志文件进行数据恢复。
MySQL日志是用来记录MySQL数据库的运行情况、用户操作和错误
信息等。例如,当一个用户登录到MySQL服务器时,日志文件中就会
记录该用户的登录时间和执行的操作等。或当MySQL服务器在某个时
间出现异常时,异常信息也会被记录到日志文件中。
(一)MySQL日志简介
MySQL数据库原理及应用(微课版|第4版)
MySQL日志主要分为4类,分别是二进制日志、错误日志、通用查询日志和慢查
询日志。
二进制日志:以二进制文件的形式记录了数据库中所有更改数据的语句。
错误日志:记录MySQL服务的启动、关闭和运行错误等信息。
通用查询日志:记录用户登录和记录查询的信息。
慢查询日志:记录执行时间超过指定时间的查询操作或不使用索引的查询。
(一)MySQL日志简介
除二进制日志外,其他日志都是文本文件。日志文件通
常存储在MySQL数据库的数据目录下。默认情况下,只
启动了错误日志的功能。其他3类日志都需要数据库管
理员进行设置。
MySQL数据库原理及应用(微课版|第4版)
如果MySQL数据库系统意外停止服务,可以通过错误日志查
看出现错误的原因。并且可以通过二进制日志文件来查看用户执
行了哪些操作,对数据库文件做了哪些修改等。然后根据二进制
日志文件的记录来修复数据库。
(一)MySQL日志简介
但是,启动日志功能会降低MySQL数据库的性能。例
如,在查询非常频繁的MySQL数据库系统中,如果开启
了通用查询日志和慢查询日志,MySQL数据库会花费很
多时间记录日志。同时,日志会占用大量的磁盘空间。对
于用户量非常大、操作非常频繁的数据库,日志文件需要
的存储空间甚至比数据库文件需要的存储空间还要大。
MySQL数据库原理及应用(微课版|第4版)
二进制日志主要记录数据库的变化情况。二进制日志以一种有
效的格式,包含了所有更新了的数据或者已经潜在更新了的数据
(如没有匹配任何行的一条DELETE语句)的语句。语句以“事件”的
形式保存,描述数据的更改。
二进制日志还包含关于每个更新数据库语句的执
行时间信息。它不包含没有修改任何数据的语句。如
果要记录所有语句,需要使用通用查询日志。使用二
进制日志的主要目的是最大可能地恢复数据,因为二
进制日志包含备份后进行的所有更新。
(二)二进制日志
MySQL数据库原理及应用(微课版|第4版)
通用查询日志记录MySQL的所有用户操作,包括启动与关闭服务、
执行查询和更新语句等。
(四)通用查询日志
慢查询日志是记录查询时长超过指定时间的日志。慢查询日
志主要用来记录执行时间较长的查询语句。通过慢查询日志,可
以找出执行时间较长、执行效率较低的语句,然后进行优化。
(五)慢查询日志
错误日志文件包含了当mysqld启动和停止时,以及服务器运行过程中发
生任何严重错误时的相关信息。在MySQL中,错误日志也是非常有用的,
MySQL会将启动和停止数据库信息以及一些错误信息记录到错误日志文件中。
(三)错误日志
MySQL数据库原理及应用(微课版|第4版)
【任务实施】
王宁使用SHOW VARIABLES LIKE 'log_error'命令,查询错
误日志的存储路径,命令执行结果如下图所示。
任务8-4 使用MySQL日志
根据结果可以看出,错误日志文件名称是DESKTOP-
,位于MySQL默认的数据目录
C:\ProgramData\MySQL\MySQL Server \Data下。王宁
使用记事本打开该文件,看到了MySQL的具体错误日志信
息。
MySQL数据库原理及应用(微课版|第4版)
项目总结
本项目带领大家学习了如何维护MySQL数据库的安全性,使MySQL免
遭用户的非法侵入,拒绝其访问数据库,保证数据库的安全性和完
整性。
要求大家加强复习,增进理解。把各个知识点学会、
领悟,能举一反三。
主要内容
重点要求大家掌握用户和权限的管理,以及数据的备份与恢复操作。
重难点要求
MySQL数据库原理及应用(微课版|第4版)
志存高远 自强不息