Skip to content

MySQL安全加固

1. 升级到最新版

下载地址为 https://dev.mysql.com/downloads/installer/ ,这里注意,不要跨大版本升级,只升级小版本号。注意只使用长期维护的稳定版本。

2. 设置mysql允许连接IP

默认mysql只允许本地连接,需要设置允许远程连接。
如果未设置,外部请求会报1130:MySQL ERROR 1130: Host x.x.x.x is not allowed to connect to this MySQL server

windows MySQL Oracle版本:

  Oracle官方安装版给配备的mysql workbench等配套软件,很多配置可以使用mysql workbench来配置,但是如果是解压版,很多配置需要自己编辑配置文件来配置。 打开mysql workbench
选择“users and privileges”选项卡,点击add Account按钮。   LoginName 填 root   Limit to Host Matching 填 %(代表允许所有ip地址)   Password 和 Confirm Password 填写管理员密码   点击apply,应用设置即可。

widnows 解压版:

cmd运行如下命令:

shell
cd mysql.exe所在路径
mysql -u root -p

弹出Enter password:输入您的数据库密码 链接到mysql数据库。 假如你的用户是root ,那么运行如下命令:

sql
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '您的数据库密码' WITH GRANT OPTION;
--  % 可以换成指定IP地址,实现安全加固

然后刷新一下权限

sql
flush privileges;

这样就可以在客户端连接mysql了。

linux:

  首先,你需要修改 MySQL 的配置文件,以允许MySQL监听所有网络接口,而不仅仅是本地主机。   打开 MySQL 的配置文件,通常在 /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf,或者在 CentOS/RHEL 上可能位于 /etc/my.cnf。

sh
nano /etc/mysql/mysql.conf.d/mysqld.cnf

在文件中,找到以下行:

ini
bind-address = 127.0.0.1

将其修改为:

ini
bind-address = 0.0.0.0   # 允许所有网络接口, 可以换成指定IP地址,实现安全加固

3. 采用子用户

添加一个用户并授权,供后台使用,不用root连接mysql

4. 关闭mysql远程host解析

解释:客户端与server连接时,mysql会解析请求,将请求中的ip地址,根据dns或者host解析为计算机网络名,然后以计算机网络名与客户端构建有效链接。 问题:没配置host或dns那肯定是会解析失败的 解决方法:

  1. 在服务器端配置hosts文件,把客户端ip和计算机名写好,让它能解析成功。(这种情况只适用于客户端ip固定的情况)
  2. 直接关闭mysql server的反向解析功能 在my.ini(window系统下)/my.cnf(linux系统下)中,增加如下配置:
ini
[mysqld]
skip-name-resolve