




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、MYSQL 数据库系统安全管理目录正文 .11 研究的背景 .12 研究的目的和意义.13 研究的内容 .23.1 MySQL 数据库的安全配置 .23.1.1 系统内部安全 .23.1.2 外部网络安全 .43.2 MySQL 用户帐号管理 .83.3 MD5 加密 .113.3.1 数据库中数据加密的原因 .113.3.2 加密方式 .123.3.3 Md5 加密原理.123.3.4 具体算法 .134 总结 .14参考文献: .15附录: .15MySQL 数据库安全管理摘要摘要: MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。
2、它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问 MySQL 数据库的程序,特别是与 PHP 更是黄金组合,运用十分广泛。由于 MySQL 是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以在用户自己的使用环境下应该进行安全加固。用户有责任维护 MySQL 数据库系统的数据安全性和完整性。关键词关键词:MYSQLMYSQL;数据库;数据库安全;访问控制;数据库;数据库安全;访问控制;MD5MD5 加密加密正文正文MySQL 数据库的安全配置必须从两个方面入手,系统内部安全和外部网络安全;MySQL 用户帐号管理主要用 grant(授权)和
3、revoke(撤权)两个 SQL 指令来管理;MD5在实际中的一个应用就是对数据库中的用户信息加密,当用户创建一个新的账号或者密码,他的信息不是直接保存到数据库,而是经过一次加密以后再保存,这样,即使这些信息被泄露,也不能立即理解这些信息的真正含义。有效的提高了前台和后台的数据安全性。【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.1 研究的背景随着计算机技术和信息技术的迅速发展。数据库的应用十分广泛,深入到各个领域,但随之而来产生了数据的安全问题。近年来,数据库供应商竞相为大众提供功能丰富的数据库环境,大多数主要系统都支持 XML、Web 服务、分布式复制、操作系统集成以及其
4、他一些有用的功能。与以前相比,数据库更加容易遭受到攻击,它已经成为了更有价值的攻击目标,所以需要配置更多的安全功能,管理也要更加的谨慎。2 研究的目的和意义本文对 MySQL 数据库的安全配置、MySQL 用户帐号管理以及使用 MD5 加密提高数据库前台和后台数据安全性做了详细研究。由于 MySQL 是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以用户需要根据具体的环境进行相关的安全配置,通过本文的研究,对如何提高数据库的安全性有很大的帮助。 3 研究的内容3.1 MySQL 数据库的安全配置3.1.1 系统内部安全MySQL 安装好,运行了 mysql_db_install 脚本
5、以后就会建立数据目录和初始化数据库。如果我们用 MySQL 源码包安装,而且安装目录是/usr/local/mysql,那么数据目录一般会是/usr/local/mysql/var。数据库系统由一系列数据库组成,每个数据库包含一系列数据库表。MySQL 是用数据库名在数据目录建立建立一个数据库目录,各数据库表分别以数据库表名作为文件名,扩展名分别为 MYD、MYI、frm 的三个文件放到数据库目录中。MySQL 的授权表给数据库的访问提供了灵活的权限控制,但是如果本地用户拥有对库文件的读权限的话,攻击者只需把数据库目录打包拷走,然后拷到自己本机的数据目录下就能访问窃取的数据库。所以 MySQL
6、 所在的主机的安全性是最首要的问题,如果主机不安全,被攻击者控制,那么 MySQL 的安全性也无从谈起。其次就是数据目录和数据文件的安全性,也就是权限设置问题。从 MySQL 主站一些老的 binary 发行版来看,3.21.xx 版本中数据目录的属性是775,这样非常危险,任何本地用户都可以读数据目录,所以数据库文件很不安全。【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.3.22.xx 版本中数据目录的属性是 770,这种属性也有些危险,本地的同组用户既能读也能写,所以数据文件也不安全。3.23.xx 版本数据目录的属性是 700,这样就比较好,只有启动数据库的用户可以读写
7、数据库文件,保证了本地数据文件的安全。如果启动 MySQL 数据库的用户是 mysql,那么像如下的目录和文件的是安全的,请注意数据目录及下面的属性:shellls -l /usr/local/mysqltotal 40drwxrwxr-x 2 root root 4096 Feb 27 20:07 bindrwxrwxr-x 3 root root 4096 Feb 27 20:07 includedrwxrwxr-x 2 root root 4096 Feb 27 20:07 infodrwxrwxr-x 3 root root 4096 Feb 27 20:07 libdrwxrwxr-
8、x 2 root root 4096 Feb 27 20:07 libexecdrwxrwxr-x 3 root root 4096 Feb 27 20:07 manshellls -l /usr/local/mysql/vartotal 8drwx- 2 mysql mysql 4096 Feb 27 20:08 mysqldrwx- 2 mysql mysql 4096 Feb 27 20:08 testshellls -l /usr/local/mysql/var/mysqltotal 104-rw- 1 mysql mysql 0 Feb 27 20:08 columns_priv.M
9、YD-rw- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI-rw- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm-rw- 1 mysql mysql 302 Feb 27 20:08 db.MYD-rw- 1 mysql mysql 3072 Feb 27 20:08 db.MYI-rw- 1 mysql mysql 8982 Feb 27 20:08 db.frm-rw- 1 mysql mysql 0 Feb 27 20:08 func.MYD-rw- 1 mysql mysql 102
10、4 Feb 27 20:08 func.MYI-rw- 1 mysql mysql 8641 Feb 27 20:08 func.frm-rw- 1 mysql mysql 0 Feb 27 20:08 host.MYD【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.-rw- 1 mysql mysql 1024 Feb 27 20:08 host.MYI-rw- 1 mysql mysql 8958 Feb 27 20:08 host.frm-rw- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD-rw- 1 mysql mysql
11、1024 Feb 27 20:08 tables_priv.MYI如果这些文件的属主及属性不是这样,请用以下两个命令修正之:shellchown -R mysql.mysql /usr/local/mysql/varshellchmod -R go-rwx /usr/local/mysql/var用 root 用户启动远程服务一直是安全大忌,因为如果服务程序出现问题,远程攻击者极有可能获得主机的完全控制权。MySQL 从 3.23.15 版本开始时作了小小的改动,默认安装后服务要用 mysql 用户来启动,不允许 root 用户启动。如果非要用root 用户来启动,必须加上-user=root
12、 的参数(./safe_mysqld -user=root &)。因为 MySQL 中有 LOAD DATA INFILE 和 SELECT . INTO OUTFILE 的 SQL 语句,如果是 root 用户启动了 MySQL 服务器,那么,数据库用户就拥有了 root 用户的写权限。不过 MySQL 还是做了一些限制的,比如 LOAD DATA INFILE 只能读全局可读的文件,SELECT . INTO OUTFILE 不能覆盖已经存在的文件。本地的日志文件也不能忽视,包括 shell 的日志和 MySQL 自己的日志。有些用户在本地登陆或备份数据库的时候为了图方便,有时会在
13、命令行参数里直接带了数据库的密码,如:shell/usr/local/mysql/bin/mysqldump -uroot -ptest testtest.sqlshell/usr/local/mysql/bin/mysql -uroot ptest这些命令会被 shell 记录在历史文件里,比如 bash 会写入用户目录的.bash_history 文件,如果这些文件不慎被读,那么数据库的密码就会泄漏。用户登陆数据库后执行的 SQL 命令也会被 MySQL 记录在用户目录的.mysql_history 文件里。如果数据库用户用 SQL 语句修改了数据库密码,也会因.mysql_history
14、 文件而泄漏。所以我们在 shell 登陆及备份的时候不要在-p 后直接加密码,而是在提示后再输入数据库密码。另外这两个文件我们也应该不让它记录我们的操作,以防万一。shellrm .bash_history .mysql_historyshellln -s /dev/null .bash_history【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.shellln -s /dev/null .mysql_history上门这两条命令把这两个文件链接到/dev/null,那么我们的操作就不会被记录到这两个文件里了。3.1.2 外部网络安全MySQL 数据库安装好以后,Unix
15、平台的 user 表是这样的:mysql use mysql;Database changedmysql select Host,User,Password,Select_priv,Grant_priv from user;图 3.1.2.1 Unix 平台的 user 表Windows 平台的 user 表是这样的:mysql use mysql;Database changedmysql select Host,User,Password,Select_priv,Grant_priv from user;图 3.1.2.2 Windows 平台的 user 表实际上 Unix 平台的 My
16、SQL 默认只允许本机才能连接数据库。但是缺省 root 用户口令是空,所以当务之急是给 root 用户加上口令。给数据库用户加口令有三种方法:在 shell 提示符下用 mysqladmin 命令来改 root 用户口令:shellmysqladmin -uroot password test这样,MySQL 数据库 root 用户的口令就被改成 test 了。用 set password 修改口令:mysql set password for rootlocalhost=password(test);这时 root 用户的口令就被改成 test 了。直接修改 user 表的 root 用户
17、口令:【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.mysql use mysql;mysql update user set password=password(test) where user=root;mysql flush privileges;这样,MySQL 数据库 root 用户的口令也被改成 test 了。其中最后一句命令flush privileges 的意思是强制刷新内存授权表,否则用的还是缓冲中的口令,这时非法用户还可以用 root 用户及空口令登陆,直到重启 MySQL 服务器。我们还看到 user 为空的匿名用户,虽然它在 Unix 平台下没什么权限
18、,但为了安全起见我们应该删除它:mysql delete from user where user=;Windows 版本 MySQL 的 user 表有很大不同,我们看到 Host 字段除了 localhost还有是%。这里%的意思是允许任意的主机连接 MySQL 服务器,这是非常不安全的,给攻击者造成可乘之机,我们必须删除 Host 字段为%的记录:mysqldelete from user where host=%;默认 root 用户的空密码也是必须修改,三种修改方法和 Unix 平台一样。对 user表操作以后不要忘了用 flush privileges 来强制刷新内存授权表,这样才
19、能生效。MySQL 的 5 个授权表:user, db, host, tables_priv 和 columns_priv 提供非常灵活的安全机制,从 MySQL 3.22.11 开始引入了两条语句 GRANT 和 REVOKE 来创建和删除用户权限,可以方便的限制哪个用户可以连接服务器,从哪里连接以及连接后可以做什么操作。在 3.22.11 版本以前的 MySQL 授权机制不完善,和新版本也有较大的不同,建议升级到最新版本的 MySQL。我们先来了解授权表的结构。MySQL 授权表的结构与内容:mysql desc user;user 表是 5 个授权表中最重要的一个,列出可以连接服务器的用
20、户及其加密口令,并且它指定他们有哪种全局(超级用户)权限。在 user 表启用的任何权限均是全局权限,并适用于所有数据库。所以我们不能给任何用户访问 mysql.user 表的权限!权限说明:【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.图 3.1.2.3 权限说明mysql desc db;图 3.1.2.4 数据库db 表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。mysql desc host;【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.图 3.1.2.5 host 表host 表与 db 表结合使用在一个较好层次上
21、控制特定主机对数据库的访问权限,这可能比单独使用 db 好些。这个表不受 GRANT 和 REVOKE 语句的影响。3.2 MySQL 用户帐号管理MySQL 用户帐号管理主要用 grant(授权)和 revoke(撤权)两个 SQL 指令来管理。这两个指令实质是通过操作 user(连接权限和全局权限)、db(数据库级权限)、tables_priv(数据表级权限)、columns_priv(数据列级权限)四个权限表来分配权限的。host 权限表不受这两个指令影响。下面将会详细介绍用户权限管理的内容。GRANT 语法说明:GRANT privileges (columns) #privilege
22、s 表示授予的权限,columns 表示作用的列(可选) ON what #设置权限级别,全局级、数据库级、数据表级和数据列级TO account #权限授予的用户,用user_namehost_name这种用户名、主机名格式IDENTIFIED BY password #设置用户帐号密码REQUIRE encryption requirements #设置经由 SSL 连接帐号WITH grant or resource management options; #设置帐号的管理和资源(连接服务器次数或查询次数等)选项示例:mysqlgrant all on db.* to testlocal
23、host identified by test;上例运行后的效果是,test 用户只能通过test密码从本机访问 db 数据库【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.mysqlgrant all on db.* to test% identified by test;上例运行后的效果是,test 用户可通过test密码从任意计算机上访问 db 数据库。 %代表任意字符, _代表一个任意字符。主机名部份还可以是 IP 地址。表 3.2.1 访问权限表权限权限说明CREATE TEMPORARY TABLES创建临时数据表EXECUTE执行存储过程(暂不支持)FILE操作系
24、统文件GRANT OPTION可把本帐号的权限授予其它用户LOCK TABLES锁定指定数据表PROCESS查看运行着的线程信息RELOAD重新加载权限表或刷新日志及缓冲区REPLICATION CLIENT可查询主/从服务器主机名REPLICATION SLAVE运行一个镜像从服务器SHOW DATABASES可运行 SHOW DATABASES 指令SHUTDOWN关闭数据库服务器SUPER可用 kill 终止线程以及进行超级用户操作ALTER可修改表和索引的结构CREATE创建数据库和数据表DELETE删除数据表中的数据行DROP删除数据表和数据行INDEX建立或删除索引INSERT插入
25、数据行REFERENCES(暂时不支持)SELECT查询数据行UPDATE更新数据行ALL所有权限,但不包括 GRANT。USAGE无权限权限表 3.2.2 权限作用范围(由 ON 子句设置)【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.权限限定符作用范围ON *.*全局级权限,作用于所有数据库ON *全局级权限,若未指定默认数据库,其作用范围是所有数据库,否则,其作用范围是当前数据库ON db_name.*数据库级权限,作用于指定数据库里的所有数据表ON db_name.tbl_name数据表级权限,作用于数据表里的所有数据列ON tbl_name数据表级权限,作用于默认数
26、据库中指定的数据表里的所有数据列USAGE 权限的用法:修改与权限无关的帐户项,如:mysqlGRANT USAGE ON *.* TO account IDENTIFIED BY new_password; #修改密码mysqlGRANT USAGE ON *.* TO account REQUIRE SSL; #启用 SSL 连接mysqlGRANT USAGE ON *.* TO account WITH MAX_CONNECTIONS_PER_HOUR 10;#设置资源 拥有 WITH GRANT OPTION 权限的用户可把自已所拥用的权限转授给其他用户,如:mysqlGRANT A
27、LL ON db.* TO test% IDENTIFIED BY password WITH GRANT OPTION;这样 test 用户就有权把该权限授予其他用户。限制资源使用,如:mysqlGRANT ALL ON db.* TO account IDENTIFIED BY password WITH MAX_CONNECTIONS_PER_HOUR 10 MAX_QUERIES_PER_HOUR 200 MAX_UPDATES_PER_HOUR 50;允许 account 用户每小时最多连接 20 次服务器,每小时最多发出 200 条查询命令(其中更新命令最多为 50 条)默认都是零
28、值,即没有限制。FLUSH USER_RESOURCES 和 FLUSH PRIVILEGES 可对资源限制计数器清零。REVOKE 语法说明:mysqlREVOKE privileges (columns) ON what FROM account;【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.示例:mysqlREVOKE SELECT ON db.* FROM testlocalhost;删除 test 帐号从本机查询 db 数据库的权限REVOKE 可删除权限,但不能删除帐号,即使帐号已没有任何权限。所以 user 数据表里还会有该帐号的记录,要彻底删除帐号,需用 DE
29、LETE 命令删除 user 数据表的记录,如:% mysql -u root -pmysqluse mysqlmysqlDELETE FROM user where User=test and Host=localhost;mysql fulsh privileges;REVOKE 不能删除 REQUIRE 和资源占用的配置。他们是要用 GRANT 来删除的,如:GRANT USAGE ON *.* TO account REQUIRE NONE; #删除 account 帐号的 SSL连接选项3.3 MD5 加密 3.3.1 数据库中数据加密的原因现在网络上一般的网站,稍微完善一点的,往往
30、都需要用户先注册,提供诸如电子邮件、账号、密码等信息以后,成为网站栏目的注册用户,才可以享受网站一些特殊栏目提供的信息或者服务,比如免费电子邮件、论坛、聊天等,都需要用户注册。而对于电子商务网站,比如 igo5 等大型电子商务网站,用户需要购买商品,就一定需要详细而准确的注册,而这些信息,往往是用户很隐秘的信息,比如电话、电子邮件、地址等,所以,注册信息对于用户和网站都是很重要的资源,不能随意透露,更加不能存在安全上的隐患。一般将用户资料直接保存在数据库中,并没有进行任何的保密措施,对于一些文件型数据库比如 Access 等,如果有人得到这个文件,岂不是所有的资料都泄露无疑?更加重要的是,如果
31、一个不负责任的网管,不需要任何技术手段,就可以查看网站中的任何资料,如果我们的用户信息在数据库中没有加密,对于网管而言,查看这些信息是太简单了。所以,为了增加安全性,我们有必要对数据库中的资料进行加密,这样,即使有人得到了整个数据库,如果没有解密算法,也一样不能查看到数据库中的【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.用户信息。3.3.2 加密方式在现阶段,我们一般认为存在两种加密方式,单向加密和双向加密。双向加密是加密算法中最常用的,它将我们可以直接理解的明文数据加密为我们不可直接理解的密文数据,然后,在需要的时候,可以使用一定的算法将这些加密以后的密文解密为原来可以理
32、解的明文。双向加密适合于隐秘通讯。单向加密刚好相反,只能对数据进行加密,也就是说,没有办法对加密以后的数据进行解密。MD5 就是采用单向加密的加密算法,对于 MD5 而言,有两个特性是很重要的,第一是任意两段明文数据,加密以后的密文不能是相同的;第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。前者的意思是不可能有任意两段明文加密以后得到相同的密文,后者的意思是如果我们加密特定的数据,得到的密文一定是相同的。 3.3.3 Md5 加密原理对 MD5 算法简要的叙述可以为:MD5 以 512 位分组来处理输入的信息,且每一分组又被划分为 16 个 32 位子分组,经过了一系列的处理后
33、,算法的输出由四个 32 位分组组成,将这四个 32 位分组级联后将生成一个 128 位散列值。在 MD5 算法中,首先需要对信息进行填充,使其字节长度对 512 求余的结果等于448。因此,信息的字节长度(Bits Length)将被扩展至 N*512+448,即 N*64+56 个字节(Bytes) ,N 为一个正整数。填充的方法如下,在信息的后面填充一个 1 和无数个 0,直到满足上面的条件时才停止用 0 对信息的填充。然后,在在这个结果后面附加一个以 64 位二进制表示的填充前信息长度。经过这两步的处理,现在的信息字节长度=N*512+448+64=(N+1)*512,即长度恰好是 5
34、12 的整数倍。这样做的原因是为满足后面处理中对信息长度的要求。MD5 中有四个 32 位被称作链接变量(Chaining Variable)的整数参数,他们分别为:A=0 x01234567,B=0 x89abcdef,C=0 xfedcba98,D=0 x76543210。当设置好这四个链接变量后,就开始进入算法的四轮循环运算。循环的次数是信息中 512 位信息分组的数目。【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.将上面四个链接变量复制到另外四个变量中:A 到 a,B 到 b,C 到 c,D 到 d。主循环有四轮(MD4 只有三轮) ,每轮循环都很相似。第一轮进行 1
35、6 次操作。每次操作对 a、b、c 和 d 中的其中三个作一次非线性函数运算,然后将所得结果加上第四个变量,文本的一个子分组和一个常数。再将所得结果向右环移一个不定的数,并加上 a、b、c 或 d 中之一。最后用该结果取代 a、b、c 或 d 中之一。以一下是每次操作中用到的四个非线性函数(每轮一个) 。F(X,Y,Z) =(X&Y)|(X)&Z)G(X,Y,Z) =(X&Z)|(Y&(Z)H(X,Y,Z) =XYZI(X,Y,Z)=Y(X|(Z)(&是与,|是或,是非,是异或)这四个函数的说明:如果 X、Y 和 Z 的对应位是独立和均匀的,那么结果的每
36、一位也应是独立和均匀的。F 是一个逐位运算的函数。即,如果 X,那么 Y,否则 Z。函数 H 是逐位奇偶操作符。MD5 在实际中的一个应用就是对数据库中的用户信息加密,当用户创建一个新的账号或者密码,他的信息不是直接保存到数据库,而是经过一次加密以后再保存,这样,即使这些信息被泄露,也不能立即理解这些信息的真正含义。 3.3.4 具体算法在 java 语言中,实现 MD5 加密是一件很简单的事情,因为 java JDK 已经为我们提供了相关的类。我们只需要调用就可以了。下面我来说一下具体的算法:/对字符串进行MD5加密public class Jiami public static Strin
37、g MD5(String inStr) MessageDigest md5 = null;try md5 = MessageDigest.getInstance(MD5); catch (Exception e) System.out.println(e.toString();e.printStackTrace();return ;char charArray = inStr.toCharArray();byte byteArray = new bytecharArray.length;【精品文档】如有侵权,请联系网站删除,仅供学习与交流.精品文档.for (int i = 0; i char
38、Array.length; i+)byteArrayi = (byte) charArrayi;byte md5Bytes = md5.digest(byteArray);StringBuffer hexValue = new StringBuffer();for (int i = 0; i md5Bytes.length; i+) int val = (int) md5Bytesi) & 0 xff;if (val 16)hexValue.append(0);hexValue.append(Integer.toHexString(val);return hexValue.toStri
39、ng();为了再次增加安全性,可以对 MD5 进行异或运算。具体算法见附录。运行结果如下:4 总结本文主要对 MySQL 数据库的安全配置、MySQL 用户帐号管理以及使用 MD5 加密提高数据库前台和后台数据安全性做了详细研究。通过本次论文的编写,让我了解了 MySQL 数据库的安全配置、用户账号管理、增删用户等知识以及如何使用 MD5 加密地数据库中的数据进行加密。在今后的软件开发中,我知道如何尽可能的提高数据库的安全性,保证资料不被窃取。由于 MySQL 数据库是个相当复杂的管理数据的系统,有很多问题我没有实际操作,有很多实际操作结果与书籍中的不一致,还有很多问题书籍中没有详细讲解等等,所以这次论文只做了简单研究,有些地方讲解的不清楚。这都是本次论文的不足之处。我希望通过以后的进一步学习,能够更好的掌握 MySQL 数据库的安全管理。参考文献:参考文献:1唐汉明,兰丽华,关宝军等MySQL 数据库优化与管理维护 北京:人民邮电出版社,2008 年,第 25-45 页。2David Litchfield Chris Anley 著,闫雷鸣 刑苏霄 翻译 数据库黑客大曝光 出版地:北京 清华大学出版社, 2006 年,第 222-266 页3朱小平 网络数据库安全技术的研究与实现 同济大学硕士论文 2006 年,第 5-34页4高延玲 网络数据库安全研究与应用 西安电子科技
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国安全锤行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国女士瑜伽长裤市场销量预测及未来产销需求分析研究报告
- 2025-2030中国健康管理行业市场发展趋势分析及投资机会风险研究报告
- 2025-2030年银杏叶提取物行业市场发展分析及发展趋势与投资前景研究报告
- 2025-2030年大气污染控制产业市场深度分析及前景趋势与投资研究报告
- 2025-2030年交通运输产业市场深度调研及发展趋势与投资战略研究报告
- 2025-2030年中国铅锌矿行业市场深度调研及发展趋势与投资前景预测研究报告
- 2025-2030年中国药房自动化行业市场发展分析及发展趋势与投资研究报告
- 2025-2030年中国碗扣脚手架行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国液压磁力钻行业市场现状供需分析及投资评估规划分析研究报告
- 2025甘肃陕煤集团韩城煤矿招聘250人笔试参考题库附带答案详解
- 2025-2030年中国温泉特色酒店行业市场深度调研及发展趋势与投资前景预测研究报告
- 2025江苏中考:历史高频考点
- 家政合伙合同协议书
- 机械设备产品质量保证承诺书范文
- 《智能安防系统》课件
- 安监考试试题及答案
- 【绥化】2025年黑龙江绥化市“市委书记进校园”企事业单位引才1167人笔试历年典型考题及考点剖析附带答案详解
- 合肥市2025届高三年级5月教学质量检测(合肥三模)历史试题+答案
- 肯德基假期兼职合同协议
- 货运司机测试题及答案
评论
0/150
提交评论