3306 MYSQL 访问 安全配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3306 MYSQL 访问 安全配置相关的知识,希望对你有一定的参考价值。

我是2003系统 想设置3306只允许本机访问 外部无法访问、
请问怎么设置

给我一个IP安全策略 谢谢

首先出现的是安装向导欢迎界面,直接点击“Next”继续,选择安装类型,选择“自定义”custom安装,然后点“Next”下一步,出现自定义安装界面,选择安装路径:C:\mysql Server 4.1(可自定义)点“OK”返回到自定义安装界面,路径已改为设置的路径,点“Next”,准备开始安装,点“Install”开始安装,完成后出现创建MySQL.com帐号的界面。

如果是首次使用MySQL,选“Create anew free MySQL.com accout”,点“Next”,输入你的Email地址和自己设定的用于登录MySQL.com的密码,填完后点“Next”进入第二步,填写姓名等相关信息,填完点“Next”,进入第三步,填完电话号码、公司名称等信息后,点“Next”,然后出现预览你刚才填的信息的界面,点“Next”出现安装完成界面。

注意,这里有个配置向导的选项(Configure the MySQL Server now),建议勾选立即配置你的MySQL。许多说安装完MySQL后无法启动,原因就在于没有配置MySQL。

点击“Finish”完成安装,并开始配置MySQL,点“Next”,进入配置类型选择页面。选“Detailed configuration”(详细配置),点“Next”,进入服务类型选择页面。选“Developer Machine”(开发者机器),这样占用系统的资源不会很多,点“Next”后,进入数据库用法选择页面。

选择“Multifunctional Database”,点“Next”,进入选择InnoDB数据存放位置页面,不用更改设置,直接放在Installation Path安装目录里即可,然后点“Next”,选择MySQL的同时联接数,选择“Manual Setting”,设置为100(根据自己需要,酌情设置)

点“Next”,配置MySQL在TCP/IP通讯环境中的端口选择默认的3306端口即可。点“Next”,选择MySQL中的字符设置,注意,这里的选择将会影响你是否能在MySQL中使用中文。选择gb2312字符集以便支持简体中文,点“Next”,设置Windows服务选项,注意,这里的选择很关键。

“Install As Windows Service”一定要勾选,这是将MySQL作为Windows的服务运行。“Service Name”就用默认的“MySQL”下面的“Launch the MySQL Server automatically”一定要勾选,这样Windows启动时,MySQL就会自动启动服务,要不然就要手工启动MySQL。

许多人说安装MySQL后无法启动、无法连接、出现10061错误,原因就在这里。点“Next”,设置根帐号root的登录密码,“Modify Security Settings”是设置根帐号的密码,输入你设定的密码即可。 “Create An Anonymous Account”是创建一个匿名帐号,这样会导致未经授权的用户非法访问你的数据库,有安全隐患,建议不要勾选。点“Next”,MySQL配置向导将依据你上面的所有设定配置MySQL,以便MySQL的运行符合你的需要,点“Execute”开始配置,当出现“Service started successfully”时,说明你的配置完成,MySQL服务启动成功点“Finish”完成,整个MySQL的配置完成,剩下的就是用MySQL客户端连接MySQL服务器,然后使用了。
参考技术A 过去查询Mysql的时候,都见3306对所有端口开放着,感觉不安全。

netstat -anlp | grep mysql
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 638/mysqld
unix 2 [ ACC ] STREAM LISTENING 12305521 638/mysqld /tmp/mysql.sock

当然,也想过用Iptables来实现,不过好像还是不行。

iptables -A INPUT -p tcp -s $ANY --dport 3306 -j DROP

引用Chinaunix文章所说:

*安全配置* 为了数据的安全,可以考虑让MySQL只守候在127.0.0.1上,这样从Internet上就无法直接访问数据库了。 修改/etc/init.d/mysql文件 在start部分找到类似下面这行 $bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file &
修改成
$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file --bind-address=127.0.0.1 &

重起MySQL
/etc/init.d/mysql restart

最后netstat -l确认一下:
tcp 0 0 localhost:mysql *:* LISTEN

OK

而我修改/etc/init.d/mysq,找到:
把原先的

$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file >/dev/null 2>&1 &

变为

$bindir/mysqld_safe --datadir=$datadir --pid-file=$pid_file --bind-address=127.0.0.1 &

重启mysql:/etc/init.d/mysql restart

查看后实现:natstat -l

tcp 0 0 localhost.localdo:mysql *:* LISTEN
参考技术B mysql-4.1.13-win32.zip(Windows downloads)
http://dev.mysql.com/downloads/mysql/4.1.html
参考技术C 建议你去MYSQL的官方网站找找. 参考技术D http://biz.edong.com/store/register.php

参考资料:请采纳

mysql安全基线设置

一、禁用local-infile选项 | 访问控制

禁用local_infile选项会降低攻击者通过SQL注入漏洞器读取敏感文件的能力

编辑Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置local-infile参数为0,并重启mysql服务: 
``` 
local-infile=0
 ```

二、删除‘test‘数据库 | 服务配置

测试数据库可供所有用户访问,并可用于消耗系统资源。删除测试数据库将减少mysql服务器的攻击面。

登陆数据库执行以下SQL语句删除test数据库:
```
DROP DATABASE test;
flush privileges;
```

三、确保没有用户配置了通配符主机名 | 身份鉴别

避免在主机名中只使用通配符,有助于限定可以连接数据库的客户端,否则服务就开放到了公网

技术图片
执行SQL更新语句,为每个用户指定允许连接的host范围。
1.  登录数据库,执行`use mysql;` ;
2.  执行语句`select user,Host from user where Host=‘%‘;`查看HOST为通配符的用户;
3.  删除用户或者修改用户host字段,删除语句:`DROP USER ‘user_name‘@‘%‘;` 。更新语句:`update user set host = <new_host> where host = ‘%‘;`。
4.  执行SQL语句:
```
OPTIMIZE TABLE user;
flush privileges;
```
技术图片

 

四、禁用symbolic-links选项 | 服务配置

禁用符号链接以防止各种安全风险

编辑Mysql配置文件/etc/my.cnf,在[mysqld] 段落中配置`symbolic-links=0`,5.6及以上版本应该配置为`skip_symbolic_links=yes`,并重启mysql服务。

 

五、修改默认3306端口 | 服务配置

避免使用熟知的端口,降低被初级扫描的风险

编辑/etc/my.cnf文件,[mysqld] 段落中配置新的端口参数,并重启mysql服务:
```
port=3506 
```

 

六、为Mysql服务使用专用的最低特权帐户 | 访问控制

使用最低权限帐户运行服务可减小MySQL天生漏洞的影响。受限帐户将无法访问与MySQL无关的资源,例如操作系统配置。

使用非root和非sudo权限用户启动Mysql服务

 

七、禁止使用--skip-grant-tables选项启动Mysql服务 | 访问控制

使用此选项,会导致所有客户端都对所有数据库具有不受限制的访问权限。

编辑Mysql配置文件/etc/my.cnf,删除skip-grant-tables参数,并重启mysql服务

 

八、确保配置了log-error选项 | 安全审计

启用错误日志可以提高检测针对mysql和其他关键消息的恶意尝试的能力,例如,如果错误日志未启用,则连接错误可能会被忽略。

编辑Mysql配置文件/etc/my.cnf,在[mysqld_safe] 段落中配置log-error参数,<log_path>代表存放日志文件路径,如:/var/log/mysqld.log,并重启mysql服务: 
```
log-error=<log_path>
```

九、确保log-raw选项没有配置为ON | 安全审计

当log-raw记录启用时,有权访问日志文件的人可能会看到纯文本密码。

编辑Mysql配置文件/etc/my.cnf,删除log-raw参数,并重启mysql服务

十、确保MYSQL_PWD环境变量未设置 | 身份鉴别

mysql_pwd环境变量的使用意味着mysql凭证的明文存储,极大增加mysql凭据泄露风险。

删除系统环境变量中Mysql密码(MYSQL_PWD)配置

十一、匿名登陆检查 | 身份鉴别

检查Mysql服务是否允许匿名登陆

登陆Mysql数据库,执行以下命令删除匿名帐户:
```
 delete from user where user=‘‘;
flush privileges;
```

以上是关于3306 MYSQL 访问 安全配置的主要内容,如果未能解决你的问题,请参考以下文章

在腾讯云上配置mysql远程访问(windows)

Aliyun mysql配置 远程访问 10038

docker安装启动配置MySql

数据库安全MySql远程访问设置

如何在 CentOS 7 上安装和安全配置 MariaDB 10

MYSQL8.0注入新特性