Windows下MySQL配置及安全加固总结

在网管的实际使用过程中,MySQL数据库在安装后的配置及安全加固内容,在客户中逐渐要求越来越高。从反馈的问题看,一般都是由第三方软件公司的软件扫描整个系统,mysql的相关内容不符合要求测试肯定不能通过。自动检测的软件,主要使用两种判断方式:一、根据mysql官方发布的信息判断当前版本是否有已知的严重bug;二、进入mysql数据库,通过执行各种查询命令,检查相应的功能开关是否打开。对于第一种,需要我们从mysql的官方网站更新当前最新版本来解决;第二种,由于目前流行的mysql加固很多都是在linux\unix系统,与windows系统的操作有所不同,所以需要与检验人员进行协商,采用windows下的操作方式,达到该安全加固目的即可。

本文档中的mysql数据库都是基于mysql-5.5.33-win32.msi版本。

1.    网管相关

背景信息

网管相关的修改内容是为了提高网管的性能。该部分内容对CS网管有实际意义,EzView使用中即使不添加,也没有出现过异常。但是迁移恢复CS数据时,一定要增加该部分内容,否则有可能数据恢复不完全。

该部分实际与安全加固内容没有关系。

操作步骤

修改mysql安装路径(如:C:\Program Files\MySQL\MySQL Server 5.5)下的my.ini文件,在文件最后增加如下信息:

skip-name-resolve

back_log=200

innodb_file_per_table=1 innodb_file_format='Barracuda'

字段解释

Skip-name-resolve              

--该项为“禁用DNS反向解析”,可以消除MySQL进行DNS解析的时间,目的是为了提高mysql的远程连接速度;

Back_log=200                                       

--该项为在MySQL暂时停止响应新请求之前的短时间内多少个请求可以被存放在堆栈中;

innodb_file_per_table=1                  

--该项为 修改InnoDB为独立表空间模式,每个数据库的每个表都会生成一个数据空间;

innodb_file_format=’Barracuda’   

--该项为 设置innodb文件类型为Barracuda

后两项的作用是启用压缩格式,紧缩数据库表的大小。

2.安全加固

背景信息

该部分内容主要是通过深圳移动测试反馈的内容进行总结,主要涉及用户、权限、日志、远程等方面。

此处说明一下mysql命令行的进入方式。

完全按照操作手册安装完mysql后,在cmd命令行可输入如下命令进入本地mysql:

mysql -u root -p

输入密码后回车即可。

登录到远程主机的mysql,输入如下命令:

mysql -h 172.18.10.160 -u root -p

输入密码后回车即可。

或者进入“开始>所有程序>mysql>MySQL Server 5.5>MySQL 5.5 Command Line Client”,输入root用户密码回车即可。

加固内容

2.1    Mysql root用户的密码

安全加固测试时,密码绝对不能用root! 目前安装手册中默认都是“Admin_123456”。

加固测试会检查密码是否为空或者弱密码。

Mysql命令行修改root用户密码方法:

mysql> update user set password=password('test!p3') where user='root'; mysql> flush privileges;

2.2    防止文件注入

说明:mysql默认是允许文件注入的。

比如在mysql命令行输入 load data local infile ‘D:\pet.txt’ into table tmp;

该命令意为将本地D盘的pet.txt文件写入表tmp,利用这个功能是可以做很多很多事的,有兴趣的可以研究下。

解决办法

在my.ini中 最后添加

local_infile=0

保存文件,重启mysql服务。

验证方法

再输一遍刚才的命令,出现错误提示,则说明设置成功。

mysql> LOAD DATA LOCAL INFILE 'D:\pet.txt'INTO TABLE TMP;

ERROR 1148 (42000): The used command is not allowed with this MySQL version

2.2 日志输出

说明:mysql实际上默认是有error的日志文件输出的,默认是在data文件夹下,默认路径C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data。

一般以主机名命名,后缀是.err。

安全加固要求一般要求有以下几种日志:查询日志、错误日志、二进制日志、更新日志、慢查询日志。

在mysql 5.0及以上版本中,二进制日志取代了更新日志。

解决办法

在my.ini中 最后添加以下字段:

log=C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data\log.log

log_err=C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data\err.log

log_bin=C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data\binary.bin

log_slave_updates=1

long_query_time=2

log_slow_queries=C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data\slowqueries.log

这里蓝色部分的路径和文件的名称都是可以自定义的。如果都不填写,则系统会用默认的名称放在默认路径下。

保存文件,重启mysql服务。

字段说明

     log:查询日志

     log_err:错误日志

     log_bin:二进制日志

     log_slave_updates:需启用二进制日志后才生效,涉及到主从mysql,有兴趣自查。

     long_query_time:长查询时间标准,单位秒。

     Log_slow_queries:慢查询日志。

验证方法:

查询\错误\慢查询 日志,会在重启后自动生成.log的文件。二进制 日志,

例如binary.bin实际上会生成binary.index和binary.0000001的文件,每次mysql服务启动或者flush logs都会自动生成一个序号+1的文件。

安全监测的方法实际上就是检查一下mysql中相应字段是否存在。可以在mysql中输入如下命令自查(两幅图分别是填了路径和未填路径的情况):

                                            

2.3最大连接数

说明:实际上在安装mysql后的设置界面中,可以设置最大连接数,但是实际操作中发现即使设置了1000,进入my.ini发现max_connections的值也不是1000.所以安全检测有可能该项就不符合。

解决办法:

将my.ini中max_connections=值改为1000,保存文件,重启mysql服务。

验证方法:

可在mysql命令行用该命令验证

2.4mysql运行系统用户问题 // http://www.pprar.com

说明:安全加固要求服务器所在的主机不能是最高权限的用户(administrator)来操作mysql,一般都是建一个专门操作mysql的用户,这个用户除了对mysql相关的文件具有完全权限外,不能对其他文件进行操作。Linux\unix系统下处理比较方便,例如新建一个mysqluser的用户,在my.cnf文件中mysqld下输入user=mysqluser 就可以了,除了mysqluser这个用户可以启动mysql服务,即使root用户也不能启动mysql。Windows下操作稍微复杂一点。

解决办法:

新建一个低权限用户mysql,使mysql用户可以运行mysql服务。

新建一个系统用户mysql,例如使mysql仅具有guest用户组的权限。

我的电脑右键>管理>本地用户和组,新建用户mysql,设置密码Admin123,右键属性>隶属于guest。

在mysql程序的安装路径和数据存放路径给mysql用户添加权限。

进入控制面板>管理工具>服务,在mysql服务上右键属性>登录,选择此账户,输入账户的密码。单击确定,保存。

使用mysql账户登录就可以在低权限的账户下运行mysql服务了。

2.5mysql数据库用户问题

说明:一般检查是否有匿名用户,最高权限用户有几个,是否可以新建账户。按安装说明安装的话,一般都是没有匿名账户的,如果在设置root密码的界面勾选了enable root access from remote machines,则执行命令select user,host from mysql.user; 会发现有两个root用户,root %和root localhost。

解决方法:

匿名账户:mysql命令行输入select user,host from mysql.user;查看用户即可,看是否有用户名为空的用户存在。

删除匿名账户可采用以下命令:

mysql>use mysql; mysql>delete from user where User = ''; mysql> flush privileges;

最高权限用户:CS网管必须要有root %用户。Ezview网管可以不用root %用户,对于有这项工程需求的用户可以在安装mysql的时候,enable root access from remote machines 不勾选。

已安装完成的可以通过命令行执行下图命令,删除root  %用户。

一般不建议删除root用户,最好在安装时就设置好,否则可能影响mysql的再配置。

新建账户:使用root localhost用户登录,新建用户即可。

执行成功的话,提示如截图。

验证方法:输入如下命令

使用新用户登录mysql。

附加说明:

假如使用新建的用户来操作网管,可给该用户只添加hisysdb的最高权限,避免对服务器上其他数据库进行操作。

Flush privileges;命令是必要的,刷新权限后,dbtool就可以使用新账户登录了。

为了保证网管使用,修改release\server\profile 路径下dataSource.xml文件,将用户名由root改为新建的用户,pppadmin

property name="username" value="root"/> 注:文件有两处地方都要改value的值。

这样初始化数据库才没有问题。

2.6限制远程连接

说明:在早期的mysql版本和linux\unix系统下,直接在my.ini或my.cnf中输入skip_networking,保存重启即可。这种方式限制mysql只能在本地访问,而且禁止了TCP端口,用pipe方式访问。安全加固测试时这项不通过,一般就是在my.ini里没有配置该项内容,但是windows下用了该方式,mysql服务可以启动,但是ezview网管就无法使用了。

解决办法

Mysql提供了新的限制只在本地访问的方法,在my.ini中最后添加如下字段:

bind-address=127.0.0.1

保存文件,重启mysql服务即可。

验证方法:

可以使用root %用户,或者新建一个host不是localhost的账户远程登录mysql服务器看是否可以成功。

例如:

添加bin-address之前,从局域网内的其他主机如172.18.10.160可以通过命令

mysql –h 172.18.10.83 –u root –p 访问到172.18.10.83主机上的mysql,

添加bind-address=127.0.0.1之后,重启服务

再用相同命令,就会提示登录失败了。

Windows下MySQL配置及安全加固总结的更多相关文章

  1. windows下mysql配置

    windows下mysql配置   忙活了大半天,总算配置好了,本文献给windows下没试用过Mysql的小白,勿喷 http://blog.csdn.net/z1074907546/article ...

  2. windows下mysql配置(第一次)

    忙活了大半天,总算配置好了,本文献给windows下没试用过Mysql的小白,勿喷 http://blog.csdn.net/z1074907546/article/details/51482718 ...

  3. windows下mysql配置,my.ini配置文件

    基本配置,这个配置可以直接复制到mysql根目录下了my.ini文件中, [client] port=3306 [mysql] no-beep # default-character-set= [my ...

  4. windows下mysql和linux下mysql主从配置

    1. linux下mysql安装版本5.6   windows下mysql版本5.7  不要问我为什么版本不一致  就是想这么搞 2. linux为主服务器   windows为从服务器 3.找到li ...

  5. Windows 下 MySql 5.7.20安装及data和my.ini文件的配置(转)

    Windows 下 MySql 5.7.20安装及data和my.ini文件的配置     本文通过图文并茂的形式给大家介绍了MySql 5.7.20安装及data和my.ini文件的配置方法. my ...

  6. windows下mysql中文乱码, 配置解决方法

    内容源自:windows下mysql中文乱码, 配置解决方法 解决方法:打开mysql安装目录,打开my.ini文件(如果只有my-default.ini文件,先将其改名为my.ini!!!) 修改内 ...

  7. Windows下安装配置MySQL

    Windows下安装配置MySQL的基本步骤 一.MySQL下载 MySQL官方下载地址https://dev.mysql.com/downloads/mysql/5.7.html#downloads ...

  8. coreseek实战(二):windows下mysql数据源部分配置说明

    coreseek实战(二):windows下mysql数据源部分配置说明 关于coreseek在windows使用mysql数据源的配置,以及中文分词的详细说明,请参考官方文档: mysql数据源配置 ...

  9. 【已解决】Windows下 MySQL大小写敏感 解决方案及分析

    Windows下 MySQL大小写敏感配置 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-3-27 最近在window ...

随机推荐

  1. C++ 代码风格准则:POD

    作者:一根筋的傻瓜链接:https://www.zhihu.com/question/36379130/answer/69853366来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载 ...

  2. 【Datastage】导出的dsx文件如何统计导出作业个数

    我们在日常使用ds时候,会将很多ds打包导出,例如:有100个作业,现在我们打包导出,但是导出之后如何确认我们是否已经完全导出,会不会在导出的时候漏了一个作业呢? 不用怕! 我们使用编辑打开导出的ds ...

  3. 07-hibernate注解-一对多(多对一)双向外键关联

    一对多(多对一)双向外键 多方:多方持有一方的引用. @ManyToOne(cascade={CasCadeType.ALL},fetch=FetchType.EAGER) @JoinColumn(n ...

  4. 微信小程序之趣闻

    代码地址如下:http://www.demodashi.com/demo/13433.html 前言 小程序 的火热程度我就不多说了,我之前对这个就蛮有兴趣的,于是花了大概5天的时间,完成了 学习-入 ...

  5. IOS研究之App转让流程须知具体介绍

     网络上有非常多开发人员提问怎么转让App并想知道具体的流程.实际上Appstore的App转让流程还是比較简单的.以下特酷吧依据自己的实际操作总结下iOS Appstore中App的转让流程.供 ...

  6. PHP拿到别人项目如何修改为自己

    以下为借助google翻译的,个人润色了一下,官方版里面感觉有很多问题,我这里有我个人修改大部分问题的版本,包括翻译完善,有需要的可以联系我:qyj8411@163.com 1. 在您网站的根目录创建 ...

  7. Js日常笔记之数组

    1.Array构造函数有一个很大的问题,就是不同的参数,会导致它的行为不一致,es6好像专门为此对数组有升级 因此,不建议使用new Array生成新数组,直接使用数组字面量[...]是更好的做法. ...

  8. [Jobdu] 题目1337:寻找最长合法括号序列

    题目描述: 给你一个长度为N的,由’(‘和’)’组成的括号序列,你能找出这个序列中最长的合法括号子序列么?合法括号序列的含义便是,在这个序列中,所有的左括号都有唯一的右括号匹配:所有的右括号都有唯一的 ...

  9. 【ZYNQ-7000开发之九】使用VDMA在PL和PS之间传输视频流数据

    [ZYNQ-7000开发之九]使用VDMA在PL和PS之间传输视频流数据 原创 2016年01月14日 11:35:02 标签: VDMA / zynq / zedbaord / AXI 10384 ...

  10. 【大话QT之十三】系统软件自己主动部署实现方案

    本篇文章是对[大话QT之十二]基于CTK Plugin Framework的插件版本号动态升级文章的补充,在上篇文章中我们阐述的重点是新版本号的插件已经下载到plugins文件夹后应该怎样更新本地正在 ...