版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
详解Mvsal安全配置目录前言Mysql账户权限安全Mysql数据的网络安全配置密码策略安全Mysql日志Mysql数据库服务所在主机安全配置部署SQL注入检测、防御模块mysqld安全相关启动选项mysql备份策略前言Mysql数据库安全配置、或者叫加固属于风险模型中的一环,它需要安全人员在理论和实践的学习中不断发现新的问题,并针对这些问题对数据的各个方面的配置进行强化。本文试图围绕着数据库风险识别、数据库安全加固这个问题,探讨可以采取的措施来最大程度的保证我们的数据库的安全控制处在一个较好的水平。Mysql账户权限安全mysql中存在4个控制权限的表,分别为mysql.USER表mysql.DB表mysql.TABLES_PRIV表mysql.COLUMNS_PRIV表要注意的是,Mysql中有一个数据库"information_schema",似乎里面保存的也是一些权限信息,但是要明白的是,这个数据库"information_schema"是为系统管理员提供元数据的一个简便方式,它实际上是一个视图,可以理解为对Mysql中的一个信息的封装,对于Mysql主程序来说,身份认证和授权的信息的来源只有一个,就是'mysql"。/hzhida/archive/2012/08/08/2628826.html0x1.mysql・user表select*fromuser;descUSER;|Field+ |Type + |Null|Key|Default|Extra| + +-----+ + +|Host|char(60)|NO|PRI||||User|char(16)|NO|PRI||||Password|char(41)|NO| ||||Select_priv|enum('N','Y')|NO||N| ||Insert_priv|enum('N','Y')|NO||N| ||Update_priv|enum('N','Y')|NO||N| ||Delete_priv|enum('N','Y')|NO||N| ||Create_priv|enum('N','Y')|NO||N| ||Drop_priv|enum('N','Y')|NO||N| ||Reload_priv|enum('N','Y')|NO||N| |
Shutdown_priv|enum('N','Y')|NO||NProcess_priv|enum('N','Y')|NO||NFile_priv|enum('N','Y')|NO||N|Grant_priv|enum('N','Y')|NO||NReferences_priv|enum('N','Y')|NO||NIndex_priv|enum('N','Y')|NO||NAlter_priv|enum('N','Y')|NO||NShow_db_priv|enum('N','Y')|NO||NSuper_priv|enum('N','Y')|NO||N|Create_tmp_table_priv|enum('N','Y')|NO||N|||NO||N|||Execute_priv|enum('N','Y')|Repl_slave_priv |enum('N','Y')|Repl_client_priv |enum('N','Y')|Create_view_priv |enum('N','Y')|Show_view_priv |enum('N','Y')|Create_routine_priv|enum('N','Y')|Alter_routine_priv|enum('N','Y')|Create_user_priv|enum('N','Y')|Event_priv |enum('N','Y')|Trigger_priv |enum('N','Y')|NO||N|||NO||N|||NO||N | ||NO|||NO||N|||NO||N|||NO||N | ||NO||N | ||NO | |N | ||NO | |N | ||NO||N|||NO | |N | ||NO | |N | ||NO||N | ||NO||N | ||NO||N|||ssl_cipher|x509_issuer|x509_subject|max_questions|max_updates|max_connections|blob|blob|blob|int(11)unsigned|int(11)unsigned|int(11)unsigned|NO|
|NONO|NULL|NULL||NULL||NO||NO||NO||||||||max_user_connections|int(11)unsigned |NO||0|plugin|char(64) |YES|||||YES||NULL|||NO||N|||YES||NULL|||NO||N||TOC\o"1-5"\h\z+ + + + + + +0x2.mysql.db表select*fromdb;descDB;mysql>descDB;+ + + + + + +|Field |Type|Null|Key|Default|Extra|+ + + + + + +|Host |char(60)|NO|PRI| | ||Db |char(64)|NO|PRI| | ||User |char(16)|NO|PRI| | ||Select_priv|enum('N','Y')|NO| |N| ||Insert_priv|enum('N','Y')|NO||N|Update_priv|enum('N','Y')|NO||N|Delete_priv|enum('N','Y')|NO||N|Create_priv|enum('N','Y')|NO||N|Drop_priv|enum('N','Y')|NO||N|Grant_priv|enum('N','Y')|NO||N|References_priv|enum('N','Y')|NO||Index_priv|enum('N','Y')|NO||N|||Alter_priv|enum('N','Y')|NO||N|||Create_tmp_table_priv|enum('N','Y')|NO||N||Lock_tables_priv|enum('N','Y')|NO||N||TOC\o"1-5"\h\z|Create_view_priv |enum('N','Y')|NO | |N | ||Show_view_priv |enum('N','Y')|NO | |N | ||Create_routine_priv|enum('N','Y')|NO||N|||Alter_routine_priv |enum('N','Y')|NO | |N | ||Execute_priv|enum('N','Y')|NO||N|Event_priv|enum('N','Y')|NO||N|Trigger_priv|enum('N','Y')|NO||NTOC\o"1-5"\h\z+ + + + + +0x3.mysql.tables_priv表select*fromTABLES_PRIV;descTABLES_PRIV;mysql>descTABLES_PRIV;+ + TOC\o"1-5"\h\z + + + + +|Field|Type |Null|Key|Default|Extra |+ + + + + + +|Host|char(60)|NO|PRI||||Db|char(64)|NO|PRI||||User|char(16)|NO|PRI||||Table_name|char(64)|NO|PRI||||Grantor|char(77)|NOTOC\o"1-5"\h\z|MUL||||Timestamp|timestamp |NO| |CURRENT_TIMESTAMP|onupdateCURRENT_TIMESTAMP||Table_priv|set('Select','Insert','Update','Delete','Create','Drop','Grant','References','Index','Alter','CreateView','Showview','Trigger')|NO| | | ||Column_priv|set('Select','Insert','Update','References')
|NO||||+ + + + + + +0x4.mysql.columns_priv表select*fromcolumns_priv;desccolumns_priv;+ + +mysql>desccolumns_priv;+ + + + +TOC\o"1-5"\h\z + +|Null|Key||Null|Key|Default|Extra + + + ++ + |Host |char(60)|NO|PRI||||Db |char(64)|NO|PRI||||User |char(16)|NO|PRI||||Table_name|char(64)|NO|PRI| | ||Column_name|char(64)|NO|PRI| | ||Timestamp|timestamp|NO| |CURRENT_TIMESTAMP|onupdateCURRENT_TIMESTAMP|TOC\o"1-5"\h\z|Column_priv|set('Select','Insert','Update','References')|NO| | ||+ ++ + + ++ +###############################################################################以上是这4个表的基本结构,在我们进行数据库连接、登录的时候,mysql权限表的验证过程为:先从user表中的:HostUserPassword这3个字段中判断连接的ip、用户名、密码是否存在,存在则通过验证。通过身份认证后,进行权限分配,按照:userdbtables_privcolumns_priv的顺序进行验证。即先检查全局权限表user,如果user中对应的权限为Y,则此用户对所有数据库的权限都为Y,将不再检查db,tables_priv,columns_priv。如果全局权限表user对应的权限为N,则到db表中检查此用户对应的具体数据库,并得到db中为Y的权限如果db中为N,则检查tables_priv中此数据库对应的具体表,取得表中的权限Y,以此类推。逐级下降
用流程图表示如下:奪口绻授世理沖瑰IE柠咕或UHrin用流程图表示如下:奪口绻授世理沖瑰IE柠咕或UHrin_r的毀理用八无吐览屮:尊岀的扛限f 、玄户端数闵库母朴请克业泄鉛束:的配阻TI炉:Eurrft巾苗収工了解了Mysql的账户权限原理和判断流程,我们接下来需要了解就是应该以怎样的方式去进行权限配置,才能达到所谓的"最小权限原则"呢?Mysql的账户权限优先级顺序是:user->db->tables_priv->columns_pri稍作思考,我们可以发现,这些表的作用本质上是一样的,区别就在于它们的作用域范围不同,从user到columns_pri逐级作用域范围降低,因此控制粒度也增大,它们的配置遵循"就近原则",即以优先级最低的那个为准,所以,我们在进行Mysql的账户权限安全配置的时候会发现"我们似乎在做很多重复性的工作"。但我们要明白的,Mysql的这种逐层次的权限配置体系为我们提供了一个细粒度的控制方法。所以我们的权限配置也应该按照这个顺序来有规划地进行。0x1.USER表权限权限级别权限说明最佳安全实践:网站使用账户是否给予CREATE数据库、表或索引创建数据库、表或索引建议给与,安装WEB系统时需要
权限创建表DROP数据库或表删除数据库或表权限建议给与GRANTOPTION数据库、表或保存的程序赋予权限选项不建议给与REFERENCES数据库或表无不建议给与ALTER表更改表,比如添加字段、索引等建议给与DELETE表删除数据权限建议给与INDEX表索引权限建议给与INSERT表插入权限建议给与SELECT表查询权限建议给与UPDATE表更新权限建议给与CREATEVIEW视图创建视图权限建议给与SHOWVIEW视图查看视图权限建议给与ALTERROUTINE存储过程更改存储过程权限不建议给与CREATEROUTINE存储过程创建存储过程权限不建议给与EXECUTE存储过程执行存储过程权限不建议给与FILE服务器主机上的文件访问文件访问权限不建议给与,防止因为注入导致的隐私文件泄漏CREATETEMPORARYTABLES服务器管理创建临时表权限不建议给与,防止借助临时表发动的二次注入LOCKTABLES服务器管理锁表权限不建议给与CREATEUSER服务器管理创建用户权限不建议给与PROCESS服务器管理查看进程权限不建议给与RELOAD服务器管理执行 flush-hosts,flush-logs,flush-privileges,flush-status,flush-tables,flush-threads,refresh,reload等命令的权限不建议给与REPLICATIONCLIENT服务器管理复制权限不建议给与REPLICATIONSLAVE服务器管理复制权限不建议给与SHOWDATABASES服务器管理查看数据库列表权限不建议给与SHUTDOWN服务器管理关闭数据库权限不建议给与SUPER服务器管理执行kill线程权限不建议给与从表格中可以看到,USER表主要针对数据库的账户进行粗粒度的权限控制,定义了"某人允许做什么事"。
0x2・DB表权限说明网站使用账户是否给予Select可对其下所有表进行查询建议给予Insert可对其下所有表进行插入建议给予Update可对其下所有表进行更新建议给予Delete可对其下所有表进行删除建议给予Create可在此数据库下创建表或者索引建议给予Drop可删除此数据库,及此数据库下的表不建议给予Grant赋予权限选项不建议给予References未来MySQL特性的占位符不建议给予Index可对其下的所有表进行索引建议给予Alter可对其下的所有表进行更改建议给予Create_tmp_table创建临时表不建议给予Locktables可对其下所有表进行锁定不建议给予Createview可在此数据下创建视图建议给予Showview可在此数据下查看视图建议给予Createroutine可在此数据下创建存储过程不建议给予Alterroutine可在此数据下更改存储过程不建议给予Execute可在此数据下执行存储过程不建议给予Event可在此数据下创建事件调度器不建议给予Trigger可在此数据下创建触发器不建议给予DB表可以看成是USER表对权限控制的一个补充,一个更细粒度地、针对数据库库级别的权限控制。同时,DB表也隐式包含了将账户限定在某个数据库的范围内这个配置,即限制某个用户只能用对它自己的数据库的控制权,对不属于它的数据库禁止操作,这能有效防止横向越权的发生。mysql>selecthost,db,userfromdb;TOC\o"1-5"\h\z+ + + +|host|db|user|+ + + +|% |test |||% |test\_%||+ + + +可以看到,user字段为空,表示当前不对用户做任何数据库属权限制,在网站的部署过程中,应该单独针对网站建立一个账户一个独立的数据库,并为这个账户分配唯一的专属数据库防止网络被入侵后的横向、纵向提权。对于Mysql中的账户权限相关的安全配置,总结如下:针对每个网站建立一个单独的账户为每个网站单独建立一个专属数据库(虽然DEDE、DZ普通采用表前缀的方法来实现"一库多站",但好的做法还是"一库一站")按照user->db->tables_priv->columns_pri的顺序进行细粒度的权限控制为每个用户单独配置一个专属数据库,保证当前用户的所有操作只能发生在它自己的数据库中,防止SQL注入发生后,黑客通过注入点访问到系统表账户权限安全配置需要的常用命令新建一个用户并给予相应数据库的权限grantselect,insert,update,delete,create,dropprivilegesondatabase.*touser@localhostidentifiedby'passwd';grantallprivilegesondatabase.*touser@localhostidentifiedby'passwd';刷新权限flushprivileges;3.显示授权showgrants;4.移除授权revokedeleteon*.*from'user'@'localhost';5.删除用户dropuser'user'@'localhost';6.给用户改名renameuser'jack'@'%'to'jim'@'%';7.给用户改密码SETPASSWORDFOR'root'@'localhost'=PASSWORD('123456');Mysql数据的网络安全配置对数据库所在的DMZ的网络拓朴的安全配置也是我们在进行安全评估的时候需要考虑的一个方面,这对防御内网扫描、网络攻击有一定帮助。0X1:限制访问Mysql端口的IP对Mysql的访问IP的限制,可以从应用层和主机层来分别达到目的1.主机层:windows可以通过windows防火墙Linux下可以通过iptables来限制允许访问mysql端口的IP地址//只允许指定的IP进行访问iptables-AINPUT-ptcp-sxxxx.xxxx.xxxx.xxxx/24--dport3306-jACCEPTiptables-AINPUT-ptcp-sxxxx.xxxx.xxxx.xxxx/24--dport3306-jACCEPTiptables-PINPUTDROP可以看到,这种方法的缺点是硬编码导致灵活性低,如果mysql的默认端口3306被修改了(例如8890),则这条iptables规则也需要相应的修改mysql>selecthost,user,passwordfromuser;+ + + +|host|user|password ||localhost|root|*832EB84CB764129D05D498ED9CA7E5CE9B8F83EB||.|root|*832EB84CB764129D05D498ED9CA7E5CE9B8F83EB||::|root|*832EB84CB764129D05D498ED9CA7E5CE9B8F83EB||localhost|||+ + + +这几行记录表明了root这个账户只能是本机登录,在部署的过程中,我们可以为指定账户添加某个安全的跳板机,并保证这个跳板机IP是不变的。0x2:修改mysql的端口windows下可以修改配置文件my.ini来实现,linux可以修改配置文件f来实现。port=3306对mysql端口的修改可以从一定程度上防止端口扫描工具的扫描。0x3:限制连接用户的数量数据库的某用户多次远程连接,会导致性能的下降和影响其他用户的操作,有必要对其进行限制。可以通过限制单个账户允许的连接数量来实现,设置f文件的mysqld中的max_user_connections变量来完成。GRANT语句也可以支持资源控制选项来限制服务器对一个账户允许的使用范围。#vi/etc/f[mysqld]max_user_connections2密码策略安全这里所谓的密文策略安全包括Mysql自身的账户密码的安全、也包括网站用户的密码安全。0X1:mysql账户密码因为mysql本身没有抗穷举的帐号锁定机制,所以对于mysql自身的登录帐号,尤其是root帐号,需要遵循"密码强度策略"设置高强度的密码,保证攻击者从穷举帐号攻击这条路无法获得合适的投资收益比。0x2:网站用户的密码数据库管理员无法规定用户的网站使用什么样的密码策略,这完全取决于用户自己的编码习惯、或者说是站长所使用的CMS的编码习惯。这方面,mysql无法做的更多,但也许可以做的是建立一个针对网站密码穷举、脱库攻击的日志追溯系统,当发生脱库攻击时能第一时间给用户提供"事发现场"的更多信息。或者数据库管理员主动进行可控的撞库测试,提前帮助用户发生潜在的撞库、脱库风险。Mysql日志启动Mysql的日志不仅可以为我们提供性能热点的分析,还可以帮助我们加固Mysql数据库的安全,例如:从日志中获得典型SQL注入语句利用正则模型从日志中捕获注入攻击的发生在脱库、数据泄漏之后获得关于受攻击数据库的情况、泄漏范围等数据mysql有以下几种日志,它们都在my.ini中进行配置:错误日志:-log-errlog-error=E:/wamp/logs/mysql_error.log2.查询日志(记录所有SQL语句):-loglog=E:/wamp/logs/mysql.log3.慢查询日志:-log-slow-queries查看慢查询时间showvariableslike"long_query_time";默认10s查看慢查询配置情况showstatuslike"%slow_queries%";查看慢查询日志路径showvariableslike"%slow%";//存储位置、长SQL的阈值E:\wamp\bin\mysql\mysql5.6.12\data\LittleHann-PC-slow.loglong_query_time=5更新日志:-log-update5.二进制日志:-log-bin//记录除select语句之外的所有sql语句到日志中,可以用来恢复数据文件log-bin=E:/wamp/logs/bin查看日志开启情况:showvariableslike'log_%';TOC\o"1-5"\h\z+ + +|Variable_name |Value |+ + +|log_bin|log_bin_basename|log_bin_index|ON||E:\wamp\bin\mysql\mysql5.6.12\data\mysql-bin|E:\wamp\bin\mysql\mysql5.6.12\data\mysql-bin.index|TOC\o"1-5"\h\z|log_bin_trust_function_creators |OFF ||log_bin_use_v1_row_events |OFF ||log_error |E:\wamp\logs\mysql.log ||log_output |FILE ||log_queries_not_using_indexes|OFF ||log_slave_updates |OFF ||log_slow_admin_statements |OFF ||log_slow_slave_statements |OFF ||log_throttle_queries_not_using_indexes|0 ||log_warnings |1 |+ + +6.Mysql数据库服务所在主机安全配置安全问题是一个综合的纵深问题,Mysql的安全配置和所在系统(*iux、windows)的安全配置密切相关。0x1:mysql进程运行账号所谓"mysql进程运行账户",即以什么样的身份权限来启动mysqld这个服务进程的。对于操作系统来说,每一个进程都有一个对应的"进程运行帐号",这个进程运行帐号决定了这个应用程序可以获得哪些操作系统的权限。在windows下禁止使用localsystem(ntauthority\system来运行mysql账户,可以考虑使用networkservice或者自己新建一个windows账号,但是必须给与mysql程序所在目录的读取权限和data目录的读取和写入权限2.在linux下,新建一个mysql账号,并在安装的时候就指定mysql以mysql账户来运行,给与程序所在目录的读取权限,data所在目录的读取和写入权限。0x2:mysql运行账号的磁盘权限对mysql运行帐号的磁盘权限的配置,就是在进行ACL的配置(文件夹右键->属性->安全),对于ACL的配置,我们需要牢记的是"默认禁止原则",即操作系统会默认对没有明确指示的权限设定为禁止,即假如你给一个用户授予了某个文件夹的读权限,那么它只有读权限,而不会拥有写权限(权限继承不考虑在内)。对于mysql运行账号的磁盘ACL配置,我们可以遵循以下原则mysql运行账号需要给予程序所在目录的读取权限,以及data目录的读取和写入权限,保证mysql的正常运行不容许给予其他目录的写入和执行权限,特别是有网站的,这可以有效防御针对mysql的提权、或者webshell提权udf提权系统关键目录、注册表写入启动文件取消mysql运行账户对于cmd,sh等一些程序的执行权限,这可以防御当mysql核心帐号被黑客获取后进一步提权1)root账户被泄露由于对cmd、sh等关键程序进行了权限控制,黑客无法继续深入操作系统提权0x3:ChrootingChroot是Unix/类Unix的一种手段,它的建立会将其与主系统几乎完全隔离,也就是说,-旦遭到什么问题,也不会危及到正在运行的主系统。这是一个非常有效的办法,特别是在配置网络服务程序的时候。0x4:删除历史命令记录历史命令记录是一种测信道数据泄漏,从某种程序上来说,"历史命令记录"就像种植在系统上的一个键盘记录rootkit,如果黑客获取到了目标服务器的webshell,就可以通过阅读"历史命令记录"来获取到大量的管理员操作记录,包括帐号和密码。这些历史文件包括:~/.bash_history~/.mysql_historycat/dev/null>~/.bash_historycat/dev/null>~/.mysql_history0x5:mysql.sock安全配置默认情况下,PHP支持使用socket方式和msyql数据库进行通信,换句话来说,这也意味着,在服务器本机可以允许无密码直接登录mysql,请看下面的一段实例代码:<?phpini_set("mysql.default_socket=/var/lib/mysql/mysql.sock");$sql="selectuser();";$res=mysql_query($sql);$final=mysql_fetch_array($res);die(var_dump($final));?>执行成功‘result:array(2){[0]=>string(16)"apache@localhost"["user()"]=>string(16)"apache@localhost"}这意味着黑客在获取了目标服务器的webshell之后,可以在不知道mysql帐号密码的情况下直接从数据库中获取隐私数据。防御的方法还是一样,针对mysql程序帐号进行磁盘ACL控制,防止mysql越权读/写/执行非mysql目录下的文件。部署SQL注入检测、防御模块根据OWASP2013的报告显示,针对数据库的攻击方式,SQL注入依然是主要的因素,因此针对SQLInjection的攻击,除了针对应用层的代码安全审计、SDLC之外,在数据库层部署数据库防火墙也应该作为纵深防御的一个手段。目前基于SQL注入检测、防御的的数据库防火墙大概有以下几个:安华金和数据库防火墙系统(Xsecure-DBFirewall)Snort入侵检测系统能针对指定端口进行正则特征匹配方式的SQL注入检测Java/J2EE过滤器对于J2ee的WEB应用来说,可以在HTTP请求上部署过滤器,并将SQL注入检测规律写在过滤器中druid-sql-wall开源SQL检测、阻断系统mysqld安全相关启动选项--local-infile[={0|1}]如果用-local-infile=0启动服务器,则客户端不能使用LOCALinLOADDATA语句,防止基于注入的直接文件读取数据泄漏--old-passwords强制服务器为新密码生成短(pre-4.1)密码哈希。当服务器必须支持旧版本客户端程序时,为了保证兼容性这很有用。(OBSOLETE)-safe-show-database在MySQL5.1以前版本的MySQL中,该选项使SHOWDATABASES语句只显示用户具有部分权限的数据库名在MySQL5.1中,该选项不再作为现在的默认行为使用,有一个SHOWDATABASES权限可以用来控制每个账户对数据库名的访问。--safe-user-create如果启用,用户不能用GRANT语句创建新用户,除非用户有mysql.user表的INSERT权限。如果你想让用户具有授权权限来创建新用户,你应给用户授予下面的权限:mysql>GRANTINSERT(user)ONmysql.userTO'user_name'@'host_name';这样确保用户不能直接更改权限列,必须使用GRANT语句给其它用户授予该权限。--secure-auth不允许鉴定有旧(pre-4.1)密码的账户。--skip-grant-tables这个选项导致服务器根本不使用权限系统。这给每个人以完全访问所有的数据库的权力,这个选项常常在发生了忘记了msyql密码的情况使用这个方式在本机"无密码登录mysql"通过执行mysqladminflush-privileges或mysqladmineload命令,或执行FLUSHPRIVILEGES语句,你能告诉一个正在运行的服务器再次开始使用授权表。--skip-name-resolve主机名不被解析。所有在授权表的Host的列值必须是IP号或localhost--skip-networking在网络上不允许TCP/IP连接。所有到mysqld的连接必须经由Unix套接字进行--skip-show-database使用该选项,只允许有SHOWDATABASES权限的用户执行SHOWDATABASES语句,该语句显示所有数据库名。不使用该选项,允许所有用户执行SHOWDATABASES但只显示用户有SHOWDATABASES权限或部分数据库权限的数据库名。请注意全局权限指数据库的权限。9.mysq备份策略像mysql、sqlserver、access这种数据库都是将数据以单独文件的形式保存在磁盘上的,所以,对于数据库的备份也可以采用传统的文件备份策略。总的来说,有以下方式:本地备份使用mysqldump进行备份非常简单,在备份数据库的时候,我们还可以同时使用管道gzip命令对备份文件进行压缩,可以采用Rsync的异地备份方式方式,将备份服务器的目录挂载到数据库服务器,将数据库文件备份打包后,通过crontab定时备份数据:备份数据使用命令:#!/bin/shtime='date+"("%F")"%R'$/usr/local/mysql/bin/mysqldump-uroot-p111database_backup|gzip>/home/zhenghan/mysql/mysql_backup.$time.gzcrontab-lmhdommondowcommand0000***/home/zhenghan/mysql/backup.sh恢复数据使用命令:gzip-dmysql_backup.\(2014-06-17\)00\:00.gzmysql_backup.(2014-06-17)00:00#mysql-uroot-p111</home/zhenghan/mysql/mysql_backup.\(2014-06-17\)00\:00网络备份MySQL本身自带的mysqldump备份使用mysqldump可以把整个数据库装载到一个单独的文本文件中。这个文件包含有所有重建您的数据库所需要的SQL命令。这个命令取得所有的模式(schema)并且将其转换成DDL语法(CREATE语句,即数据库定义语句),取得所有的数据,并且从这些数据中创建INSERT语句。这个工具将您的数据库中所有的设计倒转。因为所有的东西都被包含到了一个文本文件中。这个文本文件可以用一个简单的批处理和一个合适SQL语句导回到MySQ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年温室大棚施工与智能化温室设施维护保养合同3篇
- 二零二五版朝阳区校园保安服务与校园食品安全合同3篇
- 2025年度高端健身器材租赁服务合同3篇
- 2025年度消防报警系统安装及调试服务合同范本6篇
- 2025年度新型环保材料销售代理合作协议4篇
- 电厂灰库施工方案
- 二零二五年度抹灰工程施工安全防护合同4篇
- 工程保证金合同(2篇)
- 土工施工方案
- 2025年度新能源汽车电池壳体模具研发制造合同4篇
- 2025年上海市闵行区中考数学一模试卷
- 2025中国人民保险集团校园招聘高频重点提升(共500题)附带答案详解
- 重症患者家属沟通管理制度
- 法规解读丨2024新版《突发事件应对法》及其应用案例
- 销售提成对赌协议书范本 3篇
- 劳务派遣招标文件范本
- 信息安全意识培训课件
- Python试题库(附参考答案)
- 碳排放管理员 (碳排放核查员) 理论知识考核要素细目表三级
- 小学二年级数学口算练习题1000道
- 纳布啡在产科及分娩镇痛的应用
评论
0/150
提交评论