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

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之后,重启服务

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

时间: 2024-08-06 03:45:02

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

windows下mysql配置(第一次)

忙活了大半天,总算配置好了,本文献给windows下没试用过Mysql的小白,勿喷 http://blog.csdn.net/z1074907546/article/details/51482718 1.首先去官网www.mysql.com下载最新版本,我的是5.7.13zip版,就是免安装,可以直接解压到需要的地方. 2.环境变量的配置:计算机->右键->属性->高级系统设置->高级->环境变量  在PATH里面加入解压的地方,比如我是E盘,就加入E:\mysql-5.7.

windows下mysql配置

解压zip包,修改安装目录下的my-default.ini,保存,修改的内容如下 [mysqld] basedir=C:\Program Files\MySQL\MySQL Server 5.6(mysql所在目录) datadir=C:\Program Files\MySQL\MySQL Server 5.6\data (mysql所在目录\data) port=3306 进入mysql的安装目录C:\Program Files\MySQL\MySQL Server 5.6\bin>mysql

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

内容源自:windows下mysql中文乱码, 配置解决方法 解决方法:打开mysql安装目录,打开my.ini文件(如果只有my-default.ini文件,先将其改名为my.ini!!!) 修改内里配置: [mysqld] character-set-server=utf8 [client] default-character-set=utf8 [mysql] default-character-set=utf8 如图: 修改完成后重启MySQL服务:(右键重新启动) 完成: 原文地址:ht

破解windows下MySQL服务启动不了的情况下不能对其进行完全卸载的解决方案

以下的文章主要介绍的是在MySQL服务启动不了的情况下,不能对其进行完全卸载的实际解决办法的描述,以下就是对解决MySQL服务启动不了的情况下具体方案的描述,希望在你今后的学习中会对你有所帮助. MySQL 5.1 安装过程中报apply security setting错误的解决办法 1, 卸载MySQL 2, 删除目录 C:\Documents and Settings\All Users\Application Data\MySQL 3, 重新安装MySQL 就 OK 啦 [MySQL]

Windows 下MySQL zip 安装

主要步骤: 1.下载解压到安装的文件夹 2.配置环境路径 3.配置my.ini文件,设置程序路径和数据存储路径 4.以管理员身份启动Mysqld install(提示sevice安装成功) 5.启动MySQL  net start mysql 以上为基本步骤,但是5.7版本之后可能会有问题,下面复制两篇在安装过程中参考的文章: windows下MySQL 5.7+ 解压缩版安装配置方法  by  CoderCong 方法来自伟大的互联网. 1.去官网下载.zip格式的MySQL Server的压

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

Windows下 MySQL大小写敏感配置 [email protected] http://www.cnblogs.com/swje/ 作者:Zhouwan 2017-3-27 最近在window系统下 操作Linux系统下创建的数据库,发现有些不对劲,比较了半天才发现是大小写敏感的问题造成的.网上搜索了一下,解决了这个问题,做个简明扼要的记录. 按照网上的说明: WINDOWS: 编辑MySQL安装目录下的my.ini 文件,在[mysqld]节下 添加 lower_case_table_n

终于在Windows下能配置INNODB存储引擎了

终于在Windows下能配置INNODB存储引擎了 http://bbs.csdn.net/topics/390808876 退出杀毒软件和防火墙 错误日志文件和my.ini 回复于: 2014-06-16 11:46:11 140616 8:13:59 [ERROR] D:\Program Files (x86)\MySQL\MySQL Server 5.5\bin\mysqld: unknown option '----skip-innodb' 检查启动参数. 对我有用[0] 丢个板砖[0]

Windows下MySQL的绿化与精简

原文:Windows下MySQL的绿化与精简 MySQL本身就支持安装使用,本文只是对自己使用免安装版MySQL的经历记录下来,以便以后查看. 首先是获取Windows下的MySQL免安装版本,这个需要去到MySQL官网进行下载.我一般喜欢把首页页面拖动到最下方,点击MySQL Server进入下载. 我下载了MySQL5.5.33版本(zip包). 得到的文件就是mysql-5.5.33-win32.zip,解压出来后我把名字改成了mysql. 我们保留文件夹bin.data和share,其余

Windows下MySQL多实例运行

关键字:Windows下MySQL多实例运行 阅读前注意事项: 1.有的版本的data目录不直接放在mysql安装目录下,有可能在:C:\ProgramData\MySQL\MySQL Server 5.1\data(不管路径在哪里 指定正确的路径即可) 2.操作步骤:复制MySQL安装目录-->修改my.ini中的端口2处.安装目录和数据目录---->命令安装MySQL windows服务--->修改注册表---->启动新实例的window服务---->正常使用 正文篇: