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