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运行如下命令:
cd mysql.exe所在路径
mysql -u root -p
弹出Enter password:输入您的数据库密码 链接到mysql数据库。 假如你的用户是root ,那么运行如下命令:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '您的数据库密码' WITH GRANT OPTION;
-- % 可以换成指定IP地址,实现安全加固
然后刷新一下权限
flush privileges;
这样就可以在客户端连接mysql了。
linux:
首先,你需要修改 MySQL 的配置文件,以允许MySQL监听所有网络接口,而不仅仅是本地主机。 打开 MySQL 的配置文件,通常在 /etc/mysql/my.cnf 或 /etc/mysql/mysql.conf.d/mysqld.cnf,或者在 CentOS/RHEL 上可能位于 /etc/my.cnf。
nano /etc/mysql/mysql.conf.d/mysqld.cnf
在文件中,找到以下行:
bind-address = 127.0.0.1
将其修改为:
bind-address = 0.0.0.0 # 允许所有网络接口, 可以换成指定IP地址,实现安全加固
3. 采用子用户
添加一个用户并授权,供后台使用,不用root连接mysql
4. 关闭mysql远程host解析
解释:客户端与server连接时,mysql会解析请求,将请求中的ip地址,根据dns或者host解析为计算机网络名,然后以计算机网络名与客户端构建有效链接。 问题:没配置host或dns那肯定是会解析失败的 解决方法:
- 在服务器端配置hosts文件,把客户端ip和计算机名写好,让它能解析成功。(这种情况只适用于客户端ip固定的情况)
- 直接关闭mysql server的反向解析功能 在my.ini(window系统下)/my.cnf(linux系统下)中,增加如下配置:
[mysqld]
skip-name-resolve