《MYSQL数据库系统安全管理_2.docx》由会员分享,可在线阅读,更多相关《MYSQL数据库系统安全管理_2.docx(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MYSQL数据库系统安全管理目录正文(1)1研究的背景(1)2研究的目的和意义(1)3研究的内容(2)3.1MySQL数据库的安全配置(2)3.1.1系统内部安全(2)3.1.2外部网络安全(4)3.2MySQL用户帐号管理(7)3.3MD5力口密(11)3.3.1数据库中数据加密的原因(11)3.3.2加密方式(11)3.3.3Md5加密原理(12)3.3.4详细算法(13)4总结(14)参考文献:(14)附录:(14)MySQL数据库安全管理摘要:MySQL是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系构造的分布式数据库管理系统。它具有功能强、使用简便、管理方便、运行速
2、度快、安全可靠性强等优点,用户可利用很多语言编写访问MySQL数据库的程序,十分是与PHP更是黄金组合,运用特别广泛。由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以在用户本人的使用环境下应该进行安全加固。用户有责任维护MySQL数据库系统的数据安全性和完好性。关键词:MYSQL;数据库;数据库安全;访问控制;MD5加密正文MySQL数据库的安全配置必须从两个方面入手,系统内部安全和外部网络安全;MySQL用户帐号管理主要用grant受权和revoke撤权两个SQL指令来管理;MD5在实际中的一个应用就是对数据库中的用户信息加密,当用户创立一个新的账号或者密码,他的信
3、息不是直接保存到数据库,而是经过一次加密以后再保存,这样,即便这些信息被泄露,也不能立即理解这些信息的真正含义。有效的提高了前台和后台的数据安全性。1研究的背景随着计算机技术和信息技术的迅速发展。数据库的应用特别广泛,深化到各个领域,但随之而来产生了数据的安全问题。近年来,数据库供给商竞相为群众提供功能丰富的数据库环境,大多数主要系统都支持XML、Web服务、分布式复制、操作系统集成以及其他一些有用的功能。与以前相比,数据库愈加容易遭遭到攻击,它已经成为了更有价值的攻击目的,所以需要配置更多的安全功能,管理也要愈加的慎重。2研究的目的和意义本文对MySQL数据库的安全配置、MySQL用户帐号管
4、理以及使用MD5加密提高数据库前台和后台数据安全性做了具体研究。由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以用户需要根据详细的环境进行相关的安全配置,通过本文的研究,对怎样提高数据库的安全性有很大的帮助。3研究的内容3.1MySQL数据库的安全配置3.1.1系统内部安全MySQL安装好,运行了mysql_db_install脚本以后就会建立数据目录和初始化数据库。假如我们用MySQL源码包安装,而且安装目录是/usr/local/mysql,那么数据目录一般会是/usr/local/mysql/var。数据库系统由一系列数据库组成,每个数据库包含一系列数据库表。M
5、ySQL是用数据库名在数据目录建立建立一个数据库目录,各数据库表分别以数据库表名作为文件名,扩展名分别为MYD、MYI、frm的三个文件放到数据库目录中。MySQL的受权表给数据库的访问提供了灵敏的权限控制,但是假如本地用户拥有对库文件的读权限的话,攻击者只需把数据库目录打包拷走,然后拷到本人本机的数据目录下就能访问窃取的数据库。所以MySQL所在的主机的安全性是最首要的问题,假如主机不安全,被攻击者控制,那么MySQL的安全性也无从谈起。其次就是数据目录和数据文件的安全性,也就是权限设置问题。从MySQL主站一些老的binary发行版来看,3.21.XX版本中数据目录的属性是775,这样非常
6、危险,任何本地用户都能够读数据目录,所以数据库文件很不安全。3.22.xx版本中数据目录的属性是770,这种属性也有些危险,本地的同组用户既能读也能写,所以数据文件也不安全。3.23.XX版本数据目录的属性是700,这样就比拟好,只要启动数据库的用户能够读写数据库文件,保证了本地数据文件的安全。假如启动MySQL数据库的用户是mysql,那么像如下的目录和文件的是安全的,请注意数据目录及下面的属性:shellls-l/usr/local/mysqltotal40drwXrwXr-X2rootroot4096Feb2720:07bindrwXrwXr-X3rootroot4096Feb2720:
7、07includedrwXrwXr-X2rootroot4096Feb2720:07infodrwXrwXr-X3rootroot4096Feb2720:07libdrwXrwXr-X2rootroot4096Feb2720:07libeXecdrwXrwXr-X3rootroot4096Feb2720:07manshellls-l/usr/local/mysql/vartotal8drwx-2mysqlmysql4096Feb2720:08mysqldrwx-2mysqlmysql4096Feb2720:08testshellls-l/usr/local/mysql/var/mysqltot
8、al104-rw-1mysqlmysql0Feb2720:08columns_priv.MYD-rw-1mysqlmysql1024Feb2720:08columns_priv.MYI-rw-1mysqlmysql8778Feb2720:08columns_priv.frm-rw-1mysqlmysql302Feb2720:08db.MYD-rw-1mysqlmysql3072Feb2720:08db.MYI-rw-1mysqlmysql8982Feb2720:08db.frm-rw-1mysqlmysql0Feb2720:08func.MYD-rw-1mysqlmysql1024Feb272
9、0:08func.MYI-rw-1mysqlmysql8641Feb2720:08func.frm-rw-1mysqlmysql0Feb2720:08host.MYD-rw-1mysqlmysql1024Feb2720:08host.MYI-rw-1mysqlmysql8958Feb2720:08host.frm-rw-1mysqlmysql0Feb2720:08tables_priv.MYD-rw-1mysqlmysql1024Feb2720:08tables_priv.MYI假如这些文件的属主及属性不是这样,请用下面两个命令修正之:shellchown-Rmysql.mysql/usr/l
10、ocal/mysql/varshellchmod-Rgo-rwx/usr/local/mysql/var用root用户启动远程服务一直是安全大忌,由于假如服务程序出现问题,远程攻击者极有可能获得主机的完全控制权。MySQL从3.23.15版本开场时作了小小的改动,默认安装后服务要用mysql用户来启动,不允许root用户启动。假如非要用root用户来启动,必须加上-user=root的参数(./safe_mysqld-user=root&)。由于MySQL中有LOADDATAINFIL傣口SELECT.INTOOUTFILE的SQL语句,假如是root用户启动了MySQL服务器,那么,数据库用
11、户就拥有了root用户的写权限。不过MySQL还是做了一些限制的,比方LOADDATAINFILE只能读全局可读的文件,SELECT.INTOOUTFILE不能覆盖已经存在的文件。本地的日志文件也不能忽视,包括shell的日志和MySQL本人的日志。有些用户在本地登陆或备份数据库的时候为了图方便,有时会在命令行参数里直接带了数据库的密码,如:shell/usr/local/mysql/bin/mysqldump-uroot-ptesttesttest.sqlshell/usr/local/mysql/bin/mysql-uroot-test这些命令会被shell记录在历史文件里,比方bash会
12、写入用户目录的.bash_history文件,假如这些文件不慎被读,那么数据库的密码就会泄漏。用户登陆数据库后执行的SQL命令也会被MySQL记录在用户目录的.mysql_history文件里。假如数据库用户用SQL语句修改了数据库密码,也会因.mysql_history文件而泄漏。所以我们在shell登陆及备份的时候不要在-p后直接加密码,而是在提示后再输入数据库密码。另外这两个文件我们也应该不让它记录我们的操作,以防万一。shellrm.bash_history.mysql_historyshellIn-s/dev/null.bash_historyshellln-s/dev/null.m
13、ysql_history上门这两条命令把这两个文件链接到/dev/null,那么我们的操作就不会被记录到这两个文件里了。3.1.2外部网络安全MySQL数据库安装好以后,Unix平台的user表是这样的:mysqlusemysql;DatabasechangedmysqlselectHost,User,Password,Select_priv,Grant_privfromuser;_=J_.J.Ji_L.IHostIUser_LFassitforci|Select_piiv|Grant_pxivl1-locallioEt|root1T1Y1xedhat|root1Y1丫1localhost11
14、N1NIredhat11N1釘1-T-图3.1.2.1Unix平台的user表Windows平台的user表是这样的:mysqlusemysql;DatabasechangedmysqlselectHost,User,Password,Select_priv,Grant_privfromuser;图3.122Windows平台的user表实际上Unix平台的MySQL默认只允许本机才能连接数据库。但是缺省root用户口令是空,所以当务之急是给root用户加上口令。给数据库用户加口令有三种方法:在shell提示符下用mysqladmin命令来改root用户口令:shellmysqladmin-u
15、rootpasswordtest这样,MySQL数据库root用户的口令就被改成test了。用setpassword修改口令:mysqlsetpasswordforrootlocalhost=password(test);这时root用户的口令就被改成test了。直接修改user表的root用户口令:mysqlusemysql;mysqlupdateusersetpassword=password(test)whereuser=root;mysqlflushprivileges;这样,MySQL数据库root用户的口令也被改成test了。其中最后一句命令flushprivileges的意思是强
16、迫刷新内存受权表,否则用的还是缓冲中的口令,这时非法用户还能够用root用户及空口令登陆,直到重启MySQL服务器。我们还看到user为空的匿名用户,固然它在Unix平台下没什么权限,但为了安全起见我们应该删除它:mysqldeletefromuserwhereuser=;Windows版本MySQL的user表有很大不同,我们看到Host字段除了localhost还有是这里的意思是允许任意的主机连接MySQL服务器,这是非常不安全的,给攻击者造成可乘之机,我们必须删除Host字段为勺记录:mysqldeletefromuserwherehost=%;默认root用户的空密码也是必须修改,三种
17、修改方法和Unix平台一样。对user表操作以后不要忘了用flushprivileges来强迫刷新内存受权表,这样才能生效MySQL的5个受权表:user,db,host,tables_priv和columns_priv提供非常灵敏的安全机制,从MySQL3.22.11开场引入了两条语句GRANT和REVOKE来创立和删除用户权限,能够方便的限制哪个用户能够连接服务器,从哪里连接以及连接后能够做什么操作。在3.22.11版本以前的MySQL受权机制不完善,和新版本也有较大的不同,建议升级到最新版本的MySQL我们先来了解受权表的构造。MySQL受权表的构造与内容:mysqldescuser;user表是5个受权表中最重要的一个,列出能够连接服务器的用户及其加密口令,并且它指定他们有哪种全局超级用户权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。所以我们不能给任何用户访问:/docsj/doc/7c1b3cb10540be1e650e52ea551810a6f524c89c.htmler表的权限!权限讲明:图3.1.2.3权限讲明mysqldescdb;