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. ES6 const用法

    1.const声明一个只读的常量.一旦声明,常量的值就不能改变. 2.const的作用域与let命令相同:只在声明所在的块级作用域内有效. 3.const命令声明的常量也是不提升,只能在声明的位置后面 ...

  2. jumpserver v0.5.0 创建用户和管理机器

    用户管理-创建用户    data 用户详情 如下 创建用户组 data 资产列表添加资产 jumpserver 的 root 公钥需保持到 后端服务器的 authorized_keys 里, 然后测 ...

  3. Android MimeType的用途以及所有类型

    MIME TYPE描述 多用途互联网邮件扩展(MIME,Multipurpose Internet Mail Extensions)是一个互联网标准,它扩展了电子邮件标准,使其能够支持非ASCII字符 ...

  4. C++之声明与定义的区别

    直接举例,在C++中,声明与定义的区别如下: extern int a;//若有extern关键字,则只是声明 int b;//若没有extern关键字,则为声明+定义 int a;//若之前已经声明 ...

  5. Windows+Nginx+IIS做图片分布式存储详细步骤

    最近几天,一直在学习nginx在windows平台下的使用,为了寻找几种大量图片分布式存储而且有相对简单的存储方案 nginx是一种,还找到一种MongoDB GridFS 这两种方案我还是比较中意的 ...

  6. apache设置头

    Apache 及开启压缩及Header信息隐藏:http://centilinux.blog.51cto.com/1454781/792820

  7. 点滴积累【JS】---JS小功能(JS实现模仿微博发布效果)

    效果: 思路: 利用多功能浮动运动框架实现微博效果,首先,将textarea中的属性添加到新创建的li里面然后,再将li添加到ul里面,再利用浮动运动框架将数据动态的显示出来. 代码: <hea ...

  8. 记一次netty版本冲突,报java.lang.NoSuchMethodError: io.netty.util.internal.ObjectUtil.checkPositive的问题

    elasticsearch 5.6中使用TransportClient初始化抛异常 在引入elasticsearch5.6的transportclient包中,会引入netty进行通信. <!- ...

  9. bashrc,bash_profile和/etc/profile

    bashrc,bash_profile和/etc/profile 最近老出现在shell里面能跑的程序用鼠标双击app去不能跑.究其原因是因为环境变量的问题. 在类unix系统中一般有三个bash配置 ...

  10. Xilinx资源优化问题

    资源优化问题:Xilinx ise 出现资源不够的问题(ERROR:Cpld:868 - Cannot fit the design into any of the specified devices ...