1、MySQLMySQL数据库原理及应用数据库原理及应用项目项目9 9 维护学生信息管理数据库的安全性维护学生信息管理数据库的安全性v学习目标:学习目标:了解MySQL的权限系统 掌握MySQL的用户管理和权限管理的方法 掌握各种数据备份和数据还原的方法 掌握数据库迁移的方法 掌握数据的导入与导出的方法 了解什么是MySQL日志 掌握MySQL日志的用法任务任务9-1 了解了解MySQL的权限系统的权限系统v【任务分析】【任务分析】想确保数据库的安全性,首先要了解想确保数据库的安全性,首先要了解MySQL的访的访问控制系统。明确问控制系统。明确MySQL权限系统的工作原理,权限系统的工作原理,熟悉
2、其权限操作,为数据库提供安全性保护打下基熟悉其权限操作,为数据库提供安全性保护打下基础。础。v【课堂课堂任务】任务】v 本次任务要理解本次任务要理解MySQL的安全机制。的安全机制。v 权限表权限表v MySQL权限系统的工作原理权限系统的工作原理任务任务9-1 了解了解MySQL的权限系统的权限系统(一)权限表MySQL是一个多用户数据库管理系统,具有功能强大的访问控制系统,可以为不同用户指定允许的权限。掌握其授权机制是开始操作MySQL数据库必须要走的第1步。下面对如何利用MySQL权限表的结构和服务器,并决定访问权限进行简单介绍。任务任务9-1 了解了解MySQL的权限系统的权限系统 通
3、过网络连接服务器的客户对MySQL数据库的访问由权限表内容来控制。这些表位于mysql数据库中,并在第1次安装MySQL的过程中初始化(运行mysql_install_db脚本)。权限表共有5个表:user、db、tables_priv、columns_priv和procs_priv。当MySQL服务启动时,会首先读取mysql中的权限表,并将表中的数据装入内存。当用户进行存取操作时,MySQL会根据这些表中的数据做相应的权限控制。任务任务9-1 了解了解MySQL的权限系统的权限系统1、权限表user和db的结构和作用(1)user表。user表是MySQL中最重要的一个权限表,记录允许连接
4、到服务器的账号信息。user表列出可以连接服务器的用户及其口令,并且指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。例如,如果用户启用了DELETE权限,则该用户可以从任何表中删除记录。MySQL 5.5中user表有42个字段,共分为4类,分别是用户列、权限列、安全列和资源控制列。任务任务9-1 了解了解MySQL的权限系统的权限系统(2)db表。db表和host表也是MySQL数据库中非常重要的权限表。db表中存储了用户对某个数据库的操作权限,决定用户能从哪个主机存取哪个数据库。host表中存储了某个主机对数据库的操作权限,配合db权限表对给
5、定主机上数据库级操作权限做更细致的控制。这个权限表不受GRANT和REVOKE语句的影响。任务任务9-1 了解了解MySQL的权限系统的权限系统2、tables_priv表、columns_priv表和procs_priv表tables_priv表用来对表设置操作权限,columns_priv表用来对表的某一列设置权限,procs_priv表可以对存储过程和存储函数设置操作权限。tables_priv表、columns_priv表和procs_priv任务任务9-1 了解了解MySQL的权限系统的权限系统(二)MySQL权限系统的工作原理 为了确保数据库的安全性与完整性,系统并不希望每个用户可
6、以执行所有的数据库操作。当MySQL允许一个用户执行各种操作时,它将首先核实用户向MySQL服务器发送的连接请求,然后确认用户的操作请求是否被允许。MySQL的访问控制分为两个阶段:u 连接核实阶段u 请求核实阶段任务任务9-1 了解了解MySQL的权限系统的权限系统1连接核实阶段 当用户试图连接MySQL服务器时,服务器基于用户提供的信息来验证用户身份,如果不能通过身份验证,服务器会完全拒绝该用户的访问。如果能够通过身份验证,则服务器接受连接,然后进入第2个阶段等待用户请求。MySQL使用user表中的3个字段(Host、User和authentication_string)进行身份检查,服
7、务器只有在用户提供主机名、用户名和密码并与user表中对应的字段值完全匹配时才接受连接。任务任务9-1 了解了解MySQL的权限系统的权限系统2请求核实阶段一旦连接得到许可,服务器进入请求核实阶段。在这一阶段,MySQL服务器对当前用户的每个操作都进行权限检查,判断用户是否有足够的权限来执行它。用户的权限保存在user、db、tables_priv或columns_priv权限表中。在MySQL权限表的结构中,user表在最顶层,是全局级的。下面是db表和host表,它们是数据库层级的。最后才是tables_priv表和columns_priv表,它们是表级和列级的。低等级的表只能从高等级的表
8、得到必要的范围或权限。确认权限时,MySQL首先检查user表,如果指定的权限没有在user表中被授权,MySQL服务器将检查db表表,在该层级的SELECT权限允许用户查看指定数据库的所有表的数据。如果在该层级没有找到限定的权限,则MySQL继续检查tables_priv表以及columns_priv表。如果所有权限表都检查完毕,依旧没有找到允许的权限操作,MySQL服务器将返回错误信息,用户操作不能执行,操作失败。任务任务9-1 了解了解MySQL的权限系统的权限系统接收到用户操作请求检查user表中权限检查db表中权限检查tables_priv表中权限检查columns_priv表中权限
9、不允许用户执行该操作执行用户请求的操作无无无无有有有有任务任务9-2 管理管理数据库数据库用户权限用户权限v【任务分析】【任务分析】通过用户管理,可以保证通过用户管理,可以保证MySQL数据库的安全性数据库的安全性。掌握。掌握MySQL用户管理和权限管理的相关知识,用户管理和权限管理的相关知识,为数据库提供安全性保护打下基础。为数据库提供安全性保护打下基础。v【课堂课堂任务】任务】v 本次任务需要掌握本次任务需要掌握MySQL的用户权限管理机制。的用户权限管理机制。v 用户管理用户管理 v 权限权限管理管理任务任务9-2 管理数据库用户权限管理数据库用户权限(一)用户管理(一)用户管理 MyS
10、QL的账户管理包括登录和退出MySQL服务器、创建用户、删除用户、密码管理和权限管理等内容。通过账户管理,可以保证MySQL数据库的安全性。任务任务9-2 管理数据库用户权限管理数据库用户权限1创建新用户必须有相应的权限来执行创建操作。在MySQL数据库中,有3种方式创建新用户。利用图形工具,使用SQL语句(CREATE USER语句或GRANT语句),直接操作MySQL权限表最好的方法是前两种,因为操作更精确,错误少。任务任务9-2 管理数据库用户权限管理数据库用户权限1创建新用户(1)使用Navicat图形工具(2)使用CREATE USER语句创建新用户。执行CREATE USER或GR
11、ANT语句时,服务器会有相应的用户权限表,添加或修改用户及其权限。CREATE USER语句的基本语法格式如下。CREATE USER userIDENTIFIED BY PASSWORDpassword,userIDENTIFIED BY PASSWORDpassword,;任务任务9-2 管理数据库用户权限管理数据库用户权限【例9.1】添加两个新用户,king的密码为queen,palo的密码为530415。CREATE USER kinglocalhost IDENTIFIED BY queen,palolocalhost IDENTIFIED BY 530415;任务任务9-2 管理数
12、据库用户权限管理数据库用户权限CREATE USER banalocalhostIDENTIFIED BY PASSWORD 440432;【例9.2】添加一个新用户,用户名为bana,密码为440432,不指定明文。操作步骤如下。任务任务9-2 管理数据库用户权限管理数据库用户权限(3)使用GRANT语句创建新用户。GRANT语句不仅可创建新用户,还可以在创建的同时对用户授权。GRANT语句还可以指定用户的其他特点,如安全连接、限制使用服务器资源等。使用GRANT语句创建新用户时必须有GRANT权限。其基本语法格式如下。GRANT priv_type ON database.table TO
13、 user IDENTIFIED BY PASSWORD password ,user IDENTIFIED BY PASSWORD password,WITH GRANT OPTION;任务任务9-2 管理数据库用户权限管理数据库用户权限【例9.3】使用GRANT语句创建一个新用户test1,主机名为localhost,密码为testuser,并授予所有数据表的SELECT和UPDATE权限。GRANT SELECT,UPDATE ON*.*TO test1localhost IDENTIFIED BY testuser;任务任务9-2 管理数据库用户权限管理数据库用户权限(4)直接操作my
14、sql用户表。创建新用户,实际上就是在user表中添加一条新的记录。因此,可以使用INSERT语句直接将用户的信息添加到mysql.user表中。使用INSERT语句,必须拥有对mysql.user表的INSERT权限。其基本语法格式如下。INSERT INTO mysql.user (HOST,User,Password,ssl_cipher,x509_issuer,x509_subject)VALUES(hostname,username,PASSWORD(password),);任务任务9-2 管理数据库用户权限管理数据库用户权限【例9.4】使用INSERT语句创建一个新用户studen
15、t,主机名为localhost,密码为infomation。INSERT INTO mysql.user(Host,User,Password,ssl_cipher,x509_issuer,x509_subject)VALUES(localhost,student,PASSWORD(infomation),);此时,新添加的用户还没法使用账号密码登录MySQL,需要使用FLUSH命令使用户生效。命令如下。FLUSH PRIVILEGES;任务任务9-2 管理数据库用户权限管理数据库用户权限2删除用户 在MySQL数据库中,可以用Navicat图形工具删除用户,也可以使用DROP USER语句删
16、除用户,或使用DELETE语句从mysql.user表中删除对应的记录来删除用户。任务任务9-2 管理数据库用户权限管理数据库用户权限2删除用户(1)使用Navicat图形工具删除用户。(2)使用DROP USER语句删除用户。DROP USER的语法格式如下。DROP USER user_name,user_name,;DROP USER语句用于删除一个或多个MySQL账户,并取消其权限。要使用DROP USER,必须拥有mysql数据库的全局CREATE USER权限或DELETE权限。任务任务9-2 管理数据库用户权限管理数据库用户权限【例9.5】删除用户TOM。DROP USER TO
17、Mlocalhost;任务任务9-2 管理数据库用户权限管理数据库用户权限(3)使用DELETE语句删除用户DELETE语句的基本语法格式如下。DELETE FROM mysql.user WHERE host=hostname and user=username;host和user为user表中的两个字段。任务任务9-2 管理数据库用户权限管理数据库用户权限【例9.6】使用DELETE删除用户test1。DELETE FROM mysql.user WHERE host=localhostand user=test1;任务任务9-2 管理数据库用户权限管理数据库用户权限3修改用户名称(1)使
18、用Navicat图形工具修改用户。(2)使用RENAME USER语句修改用户。基本语法格式如下。RENAME USER old_user TO new_user,old_user TO new_user,;任务任务9-2 管理数据库用户权限管理数据库用户权限【例9.7】将用户king1和king2的名字分别修改为ken1和ken2。RENAME USER king1localhost TO ken1localhost,king2localhost TO ken2localhost;任务任务9-2 管理数据库用户权限管理数据库用户权限4修改密码要修改某个用户的登录密码,可以使用mysqladm
19、in命令、UPDATE语句或SET PASSWORD语句来实现。(1)root用户修改自己的密码。root用户的安全对于保证MySQL的安全非常重要,因为root用户拥有全部权限。修改root用户密码的方式有多种。使用mysqladmin命令。mysqladmin命令的基础语法格式如下。mysqladmin u username h localhost p 任务任务9-2 管理数据库用户权限管理数据库用户权限【例9.8】使用mysqladmin命令将root用户的密码修改为rootpwd,执行命令如下。mysqladmin u root p password rootpwd;Enter pas
20、sword:修改完root用户的密码后,需要重新启动MySQL或执行FLUSH PRIVILEGES语句重新加载用户权限表任务任务9-2 管理数据库用户权限管理数据库用户权限(二)权限管理 权限管理主要是对登录到MySQL的用户进行权限验证。所有用户的权限都存储在MySQL的权限表中。合理的权限管理能够保证数据库系统的安全,不合理的权限设置会给MySQL服务器带来安全隐患。任务任务9-2 管理数据库用户权限管理数据库用户权限1MySQL的权限类型 MySQL数据库中有多种类型的权限,这些权限都存储在mysql数据库的权限表中。在MySQL启动时,服务器将这些数据库中的权限信息读入内存。任务任务
21、9-2 管理数据库用户权限管理数据库用户权限2授权(1)权限的级别。授予的权限可以分为多层级别。全局层级。数据库层级。表层级。列层级。子程序层级。任务任务9-2 管理数据库用户权限管理数据库用户权限2授权(2)授权语句GRANT。在MySQL中,必须是拥有GRANT权限的用户才可以执行GRANT语句。GRANT语句的基本语法格式如下。GRANT priv_type(column_list),priv_type(column_list),n ON table_name|*|*.*|database_name.*|database_name.table_name TO userIDENTIFIED
22、 BY PASSWORD password ,userIDENTIFIED BY PASSWORD password,n WITH GRANT OPTION;任务任务9-2 管理数据库用户权限管理数据库用户权限2授权【例9.11】使用GRANT语句创建一个新用户grantUser,密码为“grantpwd”。用户grantUser对所有的数据有查询、插入权限,并授予GRANT权限。GRANT SELECT,INSERT on*.*TO grantUserlocalhost IDENTIFIED BY grantpwd WITH GRANT OPTION;任务任务9-2 管理数据库用户权限管理数
23、据库用户权限2授权【例9.12】使用GRANT语句将gradem数据库中student表的DELETE权限授予用户grantUser。GRANT DELETE on gradem.student TO grantUserlocalhost;【例9.13】使用GRANT语句将gradem数据库中sc表的degree列和cterm列的UPDATE权限授予用户test1。GRANT UPDATE(degree,cterm)on gradem.sc to test1localhost;任务任务9-2 管理数据库用户权限管理数据库用户权限3收回权限 收回权限就是取消已经赋予用户的某些权限。收回用户不必要
24、的权限在一定程度上可以保证数据的安全性。权限收回后,用户账户的记录将从db、host、tables_priv和columns_priv表中删除,但是用户账户记录仍然在user表中保存。收回权限利用REVOKE语句来实现,语法格式有两种,一种是收回用户的所有权限,另一种是收回用户指定的权限。任务任务9-2 管理数据库用户权限管理数据库用户权限3收回权限(1)收回所有权限。其基本语法如下。REVOKE ALL PRIVILEGES,GRANT OPTIONFROM usernamehostname,usernamehostname,n;REVOKE ALL PRIVILEGES,GRANT OPT
25、ION FROM grantUserlocalhost;【例9.14】使用REVOKE语句收回grantUser用户的的所有权限,包括GRANT权限。任务任务9-2 管理数据库用户权限管理数据库用户权限3收回权限(2)收回指定权限。其基本语法如下。REVOKE priv_type(column_list),priv_type(column_list),n ON table_name|*|*.*|database_name.*|database_name.table_name FROM usernamehostname,usernamehostname,n;任务任务9-2 管理数据库用户权限管理
26、数据库用户权限3收回权限(2)收回指定权限。REVOKE UPDATE(cterm)on gradem.sc FROM test1localhost;【例9.15】收回test1用户对gradem数据库中student表的cterm列的UPDATE权限。任务任务9-2 管理数据库用户权限管理数据库用户权限4查看权限SHOW GRANTS语句可以显示指定用户的权限信息,使用SHOW GRANTS查看账户权限信息的基本语法格式如下。SHOW GRANTS FOR usernamehostname;【例9.16】使用SHOW GRANTS语句查看test1用户的权限信息。任务任务9-3 备份与恢复备
27、份与恢复数据库数据库v【任务分析】【任务分析】确保数据库的安全性和完整性的关键措施是进行数据备份和确保数据库的安全性和完整性的关键措施是进行数据备份和数据恢复。首先了解数据损失的原因,然后要掌握数据备份数据恢复。首先了解数据损失的原因,然后要掌握数据备份和数据恢复的方法与手段,理解数据库迁移、数据的导入与和数据恢复的方法与手段,理解数据库迁移、数据的导入与导出的方法。工欲善其事,必先利其器。导出的方法。工欲善其事,必先利其器。v【课堂课堂任务】任务】v 本次任务要掌握本次任务要掌握MySQL的数据备份与恢复。的数据备份与恢复。v 了解什么是数据备份了解什么是数据备份v 掌握掌握MySQL的数据
28、备份方法的数据备份方法v 掌握掌握MySQL的数据恢复方法的数据恢复方法v 掌握掌握MySQL的数据库迁移方法的数据库迁移方法v 掌握掌握MySQL表的导入与导出方法表的导入与导出方法任务任务9-3 备份与恢复备份与恢复数据库数据库v(一)数据备份与恢复(一)数据备份与恢复 数据备份就是制作数据库结构、对象和数据的复制,以便在数据库遭到破坏时,或因需求改变而需要把数据还原到改变以前时能够恢复数据库。数据恢复就是指将数据库备份加载到系统中。数据备份和恢复可以用于保护数据库的关键数据。在系统发生错误或者因需求改变时,利用备份的数据可以恢复数据库中的数据。任务任务9-3 备份与恢复备份与恢复数据库数
29、据库v(一)数据备份与恢复(一)数据备份与恢复1数据损失的因素数据损失的因素(1)存储介质故障。(2)系统故障。(3)用户的错误操作。(4)服务器的彻底崩溃。(5)自然灾害。(6)计算机病毒。任务任务9-3 备份与恢复备份与恢复数据库数据库2数据备份的分类(1)按备份时服务器是否在线划分。热备份。热备份是指数据库在线时服务正常运行的情况下进行数据备份。温备份。温备份是指进行数据备份时数据库服务正常运行,但数据只能读不能写。冷备份。冷备份是指数据库已经正常关闭的情况下进行的数据备份。当正常关闭时会提供一个完整的数据库。任务任务9-3 备份与恢复备份与恢复数据库数据库2数据备份的分类(2)按备份的
30、内容划分。逻辑备份。逻辑备份是指使用软件技术从数据库中导出数据并写入一个输出文件,该文件格式一般与原数据库的文件格式不同,只是原数据库中数据内容的一个映像。逻辑备份支持跨平台,备份的是SQL语句(DDL和insert语句),以文本形式存储。在恢复的时候执行备份的SQL语句实现数据库数据的重现。物理备份。物理备份是指直接复制数据库文件进行的备份,与逻辑备份相比,其速度较快,但占用空间比较大。任务任务9-3 备份与恢复备份与恢复数据库数据库2数据备份的分类(3)按备份涉及的数据范围来划分。完整备份。完整备份是指备份整个数据库。这是任何备份策略中都要求完成的第1种备份类型,因为其他所有备份类型都依赖
31、于完整备份。换句话说,如果没有执行完整备份,就无法执行差异备份和增量备份。增量备份。数据库从上一次完全备份或者最近一次的增量备份以来改变的内容的备份。差异备份。差异备份是指将从最近一次完整数据库备份以后发生改变的数据进行备份。差异备份仅捕获自该次完整备份后发生更改的数据。备份是一种十分耗费时间和资源的操作,不能频繁操作。应该根据数据库使用情况确定一个适当的备份周期。任务任务9-3 备份与恢复备份与恢复数据库数据库3数据恢复的手段数据恢复的手段 数据恢复就是当数据库出现故障时,将备份的数据库加载到系统,从而使数据库恢复到备份时的正确状态。MySQL有3种保证数据安全的方法。(1)数据库备份数据库
32、备份:通过导出数据或者表文件的拷贝来保护数据(2)二进制日志文件二进制日志文件:保存更新数据的所有语句。(3)数据库复制数据库复制:MySQL内部复制功能。建立在两个或两个以上服务器之间,通过设定它们之间的主从关系来实现的。其中一个作为主服务器,其他的作为从服务器。在此主要介绍前两种方法。恢复是与备份相对应的系统维护和管理操作。系统进行恢复操作时,先执行一些系统安全性的检查,包括检查所要恢复的数据库是否存在、数据库是否变化及数据库文件是否兼容等,然后根据所采用的数据库备份类型采取相应的恢复措施。任务任务9-3 备份与恢复备份与恢复数据库数据库数据备份是数据库管理员的工作。系统意外崩溃或者硬件的
33、损坏都可能导致数据库的丢失,因此MySQL管理员应该定期对数据库进行备份,使得在意外情况发生时,尽可能减少损失。v(二)数据备份的方法(二)数据备份的方法任务任务9-3 备份与恢复备份与恢复数据库数据库1使用Navicat图形工具备份2使用mysqldump命令备份mysqldump是MySQL提供的一个非常有用的数据库备份工具。该实用程序存储在C:Program FilesMySQLMySQLServer 5.5bin文件夹中。Mysqldump命令执行时,可以将数据库备份成一个文本文件,该文件中实际上是包含了多个CREATE和INSERT语句,使用这些语句可以重新创建表和插入数据。(1)备
34、份数据库或表。mysqldump备份数据库或表的基本语法格式如下。mysqldump u user h host ppassword dbnametbname,tbnamefilename.sql;v(二)数据备份的方法(二)数据备份的方法任务任务9-3 备份与恢复备份与恢复数据库数据库【例9.17】使用mysqldump命令备份数据库gradem中的所有表,执行过程如下。mysqldump u root h localhost p grademd:bakgradembak.sqlEnter password:*输入密码后,MySQL便对数据库进行了备份,在D:bak文件夹下查看备份的文件,使
35、用文本查看器打开文件可以看到其文件内容。任务任务9-3 备份与恢复备份与恢复数据库数据库【例9.17】使用mysqldump命令备份数据库gradem中的所有表,执行过程如下。mysqldump u root h localhost p grademd:bakgradembak.sqlEnter password:*输入密码后,MySQL便对数据库进行了备份,在D:bak文件夹下查看备份的文件,使用文本查看器打开文件可以看到其文件内容。任务任务9-3 备份与恢复备份与恢复数据库数据库【例9.18】使用mysqldump命令备份数据库gradem中的student表和sc表,执行过程如下。mys
36、qldump u root h localhost p gradem student,scd:bakgrademtb.sqlEnter password:*任务任务9-3 备份与恢复备份与恢复数据库数据库(2)备份多个数据库。使用mysqldump备份多个数据库,需要使用-databases参数,其基本语法格式如下。mysqldump u user h host p-databases dbname dbnamefilename.sql;使用-databases参数之后,必须指定至少一个数据库的名称,多个数据库之间用空格隔开。【例9.19】使用mysqldump命令备份数据库gradem和my
37、db,执行过程如下。mysqldump u root h localhost p-databases gradem mydbd:bakgrademdb.sqlEnter password:*任务任务9-3 备份与恢复备份与恢复数据库数据库(3)mysqldump命令中各参数的含义。运行帮助命令mysqldump help,可以获得特定版本的完整参数列表。任务任务9-3 备份与恢复备份与恢复数据库数据库3直接复制整个数据库文件夹 因为MySQL表保存为文件方式,所以可以直接复制MySQL数据库的存储目录及文件进行备份。这种方法最简单,速度也最快。使用该方法时,最好先将服务器停止,这样可以保证在复
38、制期间数据不会发生变化。这种方法虽然简单快速,但不是最好的备份方法。因为在实际情况下,可能不允许停止MySQL服务器。而且此方法对InnoDB存储引擎的表不适用。对于MyISAM存储引擎的表,利用此方法备份和还原很方便。使用此方法备份的数据最好还原到相同版本的服务器上,否则会出现不兼容的情况。任务任务9-3 备份与恢复备份与恢复数据库数据库 恢复数据库,就是让数据库根据备份的数据回到备份时的状态。当数据丢失或意外破坏时,可以通过数据恢复已经备份的数据,尽量减少数据丢失和破坏造成的损失。1使用使用Navicat图形工具恢复数据图形工具恢复数据2使用使用mysql命令恢复数据命令恢复数据对于使用m
39、ysqldump命令备份后形成的.sql文件,可以使用mysql命令导入到数据库中。备份的.sql文件中包含CREATE、INSERT语句,也可能包含DROP语句。MySQL命令可以直接执行文件中的这些语句。其语法格式如下。mysql u user p dbnamefilename.sql;v(三)数据恢复的方法(三)数据恢复的方法任务任务9-3 备份与恢复备份与恢复数据库数据库【例9.20】使用mysql命令将备份文件gradembak.sql恢复到数据库中,执行过程如下。mysql u root p gradem SOURCE d:bakgradembak.sql任务任务9-3 备份与恢复
40、备份与恢复数据库数据库u数据库迁移就是把数据从一个系统移动到另一个系统上。以下情况需要进行数据库迁移。需要安装新的数据库服务器。uMySQL版本更新。u数据库管理系统的变更(如从Microsoft SQL Server迁移到MySQL)。v(四)数据库迁移(四)数据库迁移任务任务9-3 备份与恢复备份与恢复数据库数据库v(四)数据库迁移(四)数据库迁移1相同版本的MySQL数据库之间的迁移2不同版本的MySQL数据库之间的迁移3不同数据库之间的迁移数据库迁移可以使用一些工具,例如在Windows系统下,可以使用MyODBC实现MySQL和SQL Server之间的迁移。MySQL官方提供的工具
41、MySQL Migration Toolkit也可以在不同数据库之间进行数据迁移。任务任务9-3 备份与恢复备份与恢复数据库数据库v(五)表的导入和导出(五)表的导入和导出有时会需要将MySQL数据库中的数据导出到外部存储文件中,MySQL数据库中的数据可以导出为sql文本文件、xml文件、txt文件、xls文件或html文件。同样,这些导出文件也可以导入到MySQL数据库中。1利用Navicat图形工具导出和导入文件2利用SELECT语句和LOAD语句导出和导入文件任务任务9-3 备份与恢复备份与恢复数据库数据库v(五)表的导入和导出(五)表的导入和导出1相同版本的MySQL数据库之间的迁移
42、2不同版本的MySQL数据库之间的迁移3不同数据库之间的迁移数据库迁移可以使用一些工具,例如在Windows系统下,可以使用MyODBC实现MySQL和SQL Server之间的迁移。MySQL官方提供的工具MySQL Migration Toolkit也可以在不同数据库之间进行数据迁移。任务任务9-3 备份与恢复备份与恢复数据库数据库(1)使用SELECT INTO OUTFILE导出文本文件。SELECT FROM WHERE INTO OUTFILE 文件路径文件名 OPTIONS;【例9.22】使用SELECTINTO OUTFILE命令将gradem数据库中的student表中的记录
43、导出到文本文件,执行命令如下。SELECT*FROM student INTO OUTFILE D:/BAK/person.txt;由于指定了INTO OUTFILE子句,SELECT将student表中的字段值保存到D:BAK person.txt文件中。任务任务9-3 备份与恢复备份与恢复数据库数据库【例9.23】使用SELECTINTO OUTFILE命令将gradem数据库中的sc表中的记录导出到文本文件,使用FIELDS选项和LINES选项,要求字段之间使用逗号“,”间隔,所有字段值用双引号括起来,定义转义字符为单引号“”,执行命令如下。SELECT*FROM course INTO
44、 OUTFILE D:/BAK/course.txt FIELDS TERMINATED BY,ENCLOSED BY ESCAPED BY LINES TERMINATED BY rn;任务任务9-3 备份与恢复备份与恢复数据库数据库(2)使用LOAD DATA INFILE语句导入文件。LOAD DATA INFILE filename.txt INTO TABLE tablename OPTIONSIGNORE number LINES;【例9.24】使用LOAD DATA INFILE命令将d:bakcourse.txt文件中的数据导入到gradem数据库中的course表中,执行命令
45、如下。delete from course;LOAD DATA INFILE d:/bak/course.txt INTO TABLE course;任务任务9-3 备份与恢复备份与恢复数据库数据库【例9.25】使用LOAD DATA INFILE命令将d:baksc.txt文件中的数据导入到gradem数据库中的sc表中,使用FIELDS选项和LINES选项,要求字段之间使用逗号“,”间隔,所有字段值用双引号括起来,定义转义字符为单引号“”,执行命令如下。delete from sc;LOAD DATA INFILE d:/bak/sc.txt INTO TABLE gradem.sc FI
46、ELDS TERMINATED BY,ENCLOSED BY ESCAPED BY LINES TERMINATED BY rn;任务任务9-3 备份与恢复备份与恢复数据库数据库3利用mysqldump命令和mysqlimport命令导出和导入文件(1)使用mysqldump命令导出文本文件。mysqldump u root p T path dbnametables OPTIONS任务任务9-3 备份与恢复备份与恢复数据库数据库【例9.26】使用mysqldump命令将gradem数据库中的teacher表中的记录导出到文本文件,执行命令如下。mysqldump-u root-p-T D:/
47、bak gradem teacherEnter password:*语句执行成功后,会在D盘的bak文件夹中生成两个文件,分别为teacher.sql和teacher.txt。teacher.sql文件中包含创建teacher表的CREATE语句,teacher.txt文件中包含表中的数据。任务任务9-3 备份与恢复备份与恢复数据库数据库【例9.27】使用mysqldump命令将gradem数据库中的sc表中的记录导出到文本文件,要求字段之间使用逗号“,”间隔,所有字符类型的字段值用双引号括起来,定义转义字符为问号“?”,每行记录以回车换行符“rn”结尾,执行命令如下。mysqldump u
48、root p T d:/bak gradem sc -fields-terminated-by=,-fields-optionally-enclosed-by=-fields-escaped-by=?-lines-terminated-by=rn任务任务9-3 备份与恢复备份与恢复数据库数据库(2)使用mysqlimport命令导入文本文件。mysqlimport-u root-p dbname filename.txt OPTIONS任务任务9-3 备份与恢复备份与恢复数据库数据库【例9.28】使用mysqlimport命令将d:baksc.txt文件中的数据导入到gradem数据库中的sc
49、表中,字段之间使用逗号“,”间隔,所有字符型字段值用双引号括起来,定义转义字符为单引号“?”,执行命令如下。mysqlimport-u root-p gradem d:/bak/sc.txt-fields-terminated-by=,-fields-optionally-enclosed-by=-fields-escaped-by=?-lines-terminated-by=rn任务任务9-3 备份与恢复备份与恢复数据库数据库4使用mysql命令导出文本文件mysql u root p OPTIONS-e|-execute=SELECT语句 dbna【例9.29】使用mysql命令将grad
50、em数据库中的teacher表中的记录导出到文本文件,执行命令如下mysql-u root-p-execute=SELECT*FROM teacher;grademd:/bak/teatxt.txtEnter password:*或mysql-u root-p-e SELECT*FROM teacher;grademd:/bak/teatxt.txtEnter password:*任务任务9-3 备份与恢复备份与恢复数据库数据库【例9.30】使用mysql命令将gradem数据库中的sc表中的记录导出到html文件,执行命令如下。mysql-u root-p-html-e SELECT*FRO