《MYSQL数据库系统安全管理_3.docx》由会员分享,可在线阅读,更多相关《MYSQL数据库系统安全管理_3.docx(13页珍藏版)》请在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用户管理(8)3.3MD5加密(11)3.3.1数据库中数据加密的原因(11)3.3.2加密式(12)3.3.3Md5加密原理(12)3.3.4详细算法(13)4总结(14)参考文献:(15)附录:(15)MySQL数据库安全管理摘要:MySQL是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系构造的分布式数据库管理系统。它具有功能强、使用简便、管理便、运行速度快、安全可靠
2、性强等优点,用户可利用多语言编写访问MySQL数据库的程序,十分是与PHP更是黄金组合,运用特别广泛。由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以在用户本人的使用环境下应该进行安全加固。用户有责任维护MySQL数据库系统的数据安全性和完好性。关键词:MYSQL;数据库;数据库安全;访问控制;MD5加密正文MySQL数据库的安全配置必须从两个面入手,系统部安全和外部网络安全;MySQL用户管理主要用grant(受权)和revoke(撤权)两个SQL指令来管理;MD5在实际中的一个应用就是对数据库中的用户信息加密,当用户创立一个新的账号或者密码,他的信息不是直接保存到
3、数据库,而是经过一次加密以后再保存,这样,即便这些信息被泄露,也不能立即理解这些信息的真正含义。有效的提高了前台和后台的数据安全性。1研究的背景随着计算机技术和信息技术的迅速发展。数据库的应用特别广泛,深化到各个领域,但随之而来产生了数据的安全问题。近年来,数据库供给商竞相为群众提供功能丰富的数据库环境,大多数主要系统都支持XML、Web服务、分布式复制、操作系统集成以及其他一些有用的功能。与以前相比,数据库愈加容易遭遭到攻击,它已经成为了更有价值的攻击目的,所以需要配置更多的安全功能,管理也要愈加的慎重。2研究的目的和意义本文对MySQL数据库的安全配置、MySQL用户管理以及使用MD5加密
4、提高数据库前台和后台数据安全性做了具体研究。由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以用户需要根据详细的环境进行相关的安全配置,通过本文的研究,对如提高数据库的安全性有很大的帮助。3研究的容3.1MySQL数据库的安全配置3.1.1系统部安全MySQL安装好,运行了mysql_db_install脚本以后就会建立数据目录和初始化数据库。假如我们用MySQL源码包安装,而且安装目录是/usr/local/mysql,那么数据目录一般会是/usr/local/mysql/var。数据库系统由一系列数据库组成,每个数据库包含一系列数据库表。MySQL是用数据库名在数据
5、目录建立建立一个数据库目录,各数据库表分别以数据库表名作为文件名,扩展名分别为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:07includedrwxr
7、wxr-x2rootroot4096Feb2720:07infodrwxrwxr-x3rootroot4096Feb2720:07libdrwxrwxr-x2rootroot4096Feb2720:07libexecdrwxrwxr-x3rootroot4096Feb2720:07manshellls-l/usr/local/mysql/vartotal8drwx-2mysqlmysql4096Feb2720:08mysqldrwx-2mysqlmysql4096Feb2720:08testshellls-l/usr/local/mysql/var/mysqltotal104-rw-1mysq
8、lmysql0Feb2720: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-1mysqlmysql1024Feb2720:08func.MYI-r
9、w-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/local/mysql/var
10、shellchmod-Rgo-rwx/usr/local/mysql/var用root用户启动远程服务一直是安全大忌,由于假如服务程序出现问题,远程攻击者极有可能获得主机的完全控制权。MySQL从3.23.15版本开场时作了小小的改动,默认安装后服务要用mysql用户来启动,不允root用户启动。假如非要用root用户来启动,必须加上-user=root的参数(./safe_mysqld-user=root&)。由于MySQL中有LOADDATAINFILE和SELECT.INTOOUTFILE的SQL语句,假如是root用户启动了MySQL服务器,那么,数据库用户就拥有了root用户的写权限
11、。不过MySQL还是做了一些限制的,比方LOADDATAINFILE只能读全局可读的文件,SELECT.INTOOUTFILE不能覆盖已经存在的文件。本地的日志文件也不能忽视,包括shell的日志和MySQL本人的日志。有些用户在本地登陆或备份数据库的时候为了图便,有时会在命令行参数里直接带了数据库的密码,如:shell/usr/local/mysql/bin/mysqldump-uroot-ptesttesttest.sqlshell/usr/local/mysql/bin/mysql-urootptest这些命令会被shell记录在历史文件里,比方bash会写入用户目录的.bash_his
12、tory文件,假如这些文件不慎被读,那么数据库的密码就会泄漏。用户登陆数据库后执行的SQL命令也会被MySQL记录在用户目录的.mysql_history文件里。假如数据库用户用SQL语句修改了数据库密码,也会因.mysql_history文件而泄漏。所以我们在shell登陆及备份的时候不要在-p后直接加密码,而是在提示后再输入数据库密码。另外这两个文件我们也应该不让它记录我们的操作,以防万一。shellrm.bash_history.mysql_historyshellln-s/dev/null.bash_historyshellln-s/dev/null.mysql_history上门这两
13、条命令把这两个文件到/dev/null,那么我们的操作就不会被记录到这两个文件里了。3.1.2外部网络安全MySQL数据库安装好以后,Unix平台的user表是这样的:mysqlusemysql;DatabasechangedmysqlselectHost,User,Password,Select_priv,Grant_privfromuser;图3.1.2.1Unix平台的user表Windows平台的user表是这样的:mysqlusemysql;DatabasechangedmysqlselectHost,User,Password,Select_priv,Grant_privfromu
14、ser;图3.1.2.2Windows平台的user表实际上Unix平台的MySQL默认只允本机才能连接数据库。但是缺省root用户口令是空,所以当务之急是给root用户加上口令。给数据库用户加口令有三种法:在shell提示符下用mysqladmin命令来改root用户口令:shellmysqladmin-urootpasswordtest这样,MySQL数据库root用户的口令就被改成test了。用setpassword修改口令:mysqlsetpasswordforrootlocalhost=password(test);这时root用户的口令就被改成test了。直接修改user表的roo
15、t用户口令:mysqlusemysql;mysqlupdateusersetpassword=password(test)whereuser=root;mysqlflushprivileges;这样,MySQL数据库root用户的口令也被改成test了。其中最后一句命令flushprivileges的意思是强迫刷新存受权表,否则用的还是缓冲中的口令,这时非法用户还能够用root用户及空口令登陆,直到重启MySQL服务器。我们还看到user为空的匿名用户,固然它在Unix平台下没什么权限,但为了安全起见我们应该删除它:mysqldeletefromuserwhereuser=;Windows版本
16、MySQL的user表有很大不同,我们看到Host字段除了localhost还有是%。这里%的意思是允任意的主机连接MySQL服务器,这是非常不安全的,给攻击者造成可乘之机,我们必须删除Host字段为%的记录:mysqldeletefromuserwherehost=%;默认root用户的空密码也是必须修改,三种修改法和Unix平台一样。对user表操作以后不要忘了用flushprivileges来强迫刷新存受权表,这样才能生效。MySQL的5个受权表:user,db,host,tables_priv和columns_priv提供非常灵敏的安全机制,从MySQL3.22.11开场引入了两条语句
17、GRANT和REVOKE来创立和删除用户权限,能够便的限制哪个用户能够连接服务器,从哪里连接以及连接后能够做什么操作。在3.22.11版本以前的MySQL受权机制不完善,和新版本也有较大的不同,建议升级到最新版本的MySQL。我们先来了解受权表的构造。MySQL受权表的构造与容:mysqldescuser;user表是5个受权表中最重要的一个,列出能够连接服务器的用户及其加密口令,并且它指定他们有哪种全局超级用户权限。在user表启用的任权限均是全局权限,并适用于所有数据库。所以我们不能给任用户访问:/docsj/doc/7e52c2c215791711cc7931b765ce050877327545.htmler表的权限!权限讲明: