MySQL数据库生产环境安全规范
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,一、MySQL服务器安全规范1. 禁止应用直连DB,一般通过代理访问2. 禁止DB公网访问。3. 禁止生产和办公互通,需生产环境和办公环境隔离。4. Linux系统初始化安全选项:1)、一些alias
千家信息网最后更新 2025年11月07日MySQL数据库生产环境安全规范一、MySQL服务器安全规范
1. 禁止应用直连DB,一般通过代理访问
2. 禁止DB公网访问。
3. 禁止生产和办公互通,需生产环境和办公环境隔离。
4. Linux系统初始化安全选项:
1)、一些alias,写入/etc/profile,防止误操作
alias c='clear'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias MySQL='MySQL -U'
其中MySQL -U,防止update和delete没有指定条件,拒绝操作。
2)、删除linux操作日志信息、MySQL操作历史记录,避免被拖库。
rm .bash_history .MySQL_history
ln -s /dev/null .bash_history
ln -s /dev/null .MySQL_history
3)、避免"Too many open files"
OS限制:cat /etc/security/limits.conf,MySQL用户能够打开65535个文件描述符
MySQL soft nofile 65535
MySQL hard nofile 65535
my.cnf参数修改:
open_files_limit = 65535
innodb_open_files=65535
5. MySQL初始化配置安全选项:
1)、合理规划目录结构,日志目录顺序写建议机械盘(binlog/slowlog/relaylog),数据目录随机写建议ssd。
2)、MySQL相关目录设置专用MySQL组和用户,MySQL后台启动方式不能以root来启动,比如通过MySQL用户 。
3)、设置bind-address为内网本机IP。
4)、修改MySQL默认服务端口号,不推荐使用3306,不同业务设置不同的端口号。
5)、通过修改max_connections和max_user_connections来控制最大连接数,过载保护。
6)、启用safe-user-create,用户不能用GRANT语句创建新用户,除非用户有MySQL.user表的INSERT权限。
7)、禁止local-infile=1,打开load data local file权限,避免数据泄漏和黑客攻击。
8)、禁止skip-grant-tables启动,防止MySQL绕过权限系统
9)、配置加上skip-name-resolve,防止主机名不被解析。
10)、禁止skip-networking,其它机器不能使用tcp/ip连接。
11)、禁止symbolic-links=1,关闭软链接功能。
二、MySQL帐号管理安全策略和MySQL权限相关的系统表:
1. MySQL.USER表
2. MySQL.DB表
3. MySQL.TABLES_PRIV表
4. MySQL.COLUMNS_PRIV表
自上而下,逐级验证,逐级进行账户权限的粒度控制
MySQL初始化:
1. 删除线上密码长度小于16的帐号。
2. 删除非root账户
3. 删除非localhost和127.0.0.1账户。
4. 删除test数据库
5. 账号区分:监控帐号、管理帐号、复制帐号、备份帐号、应用帐号
1)、监控帐号(localhost和127.0.0.1):
GRANT SELECT,PROCESS,REPLICATION CLIENT
2)、备份帐号(localhost和127.0.0.1):
GRANT SELECT,LOCK TABLES,RELOAD
3)、复制帐号(对应主库ip):
GRANT REPLICATION SLAVE,REPLICATION CLIENT
4)、管理帐号(对应代理ip):
GRANT ALL PRIVILEGES
5)、root帐号
root密码采用强密码策略,至少32位随机密码,推荐使用pwgen和makepasswd来生成32位随机密码,包含大小写、数字、字母、特殊字符。
root帐号只授权localhost和127.0.0.1,不得授予%权限。
root帐号建议每3个月修改一次,不同实例,设置不同的root密码。
6)、应用帐号
a. 应用帐号不得拥有Super、Create、Drop、File,Grant,Reload,Shutdown,Process等权限。
b. 最小权限原则:select,insert,update,delete权限,禁止应用帐号权限设置为all。
c. 应用帐号不得拥有系统数据库(MySQL)的任何权限,不能使用*.*来授权。
d. 应用帐号只给所属应用的数据库授权,只给其所属应用的IP或代理授权。
e. MySQL从库必须添加read-only,只给select权限,严禁all,导致只读失效。
f. 应用帐号密码策略同root,建议每3个月修改一次。
三、MySQL数据安全策略
1. 物理(xtrabackup)和逻辑(MySQLdump)相结合的备份策略,全备+增量+异地。
2. 数据库备份文件定期回放,定期验证备份的可恢复性。
3. 针对重要业务系统建立delay数据库或者采取Linux初始化时设置lvm策略,可快照闪回。
4. 假设有Binlog Server,遇到紧急情况可数据恢复。
附:MySQL命令行提示配置
MySQL -uroot -p123456 --prompt="MySQL-\\v->[\\r:\\m:\\s] [\\u@\\h:\\d] >"
1. 禁止应用直连DB,一般通过代理访问
2. 禁止DB公网访问。
3. 禁止生产和办公互通,需生产环境和办公环境隔离。
4. Linux系统初始化安全选项:
1)、一些alias,写入/etc/profile,防止误操作
alias c='clear'
alias cp='cp -i'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias MySQL='MySQL -U'
其中MySQL -U,防止update和delete没有指定条件,拒绝操作。
2)、删除linux操作日志信息、MySQL操作历史记录,避免被拖库。
rm .bash_history .MySQL_history
ln -s /dev/null .bash_history
ln -s /dev/null .MySQL_history
3)、避免"Too many open files"
OS限制:cat /etc/security/limits.conf,MySQL用户能够打开65535个文件描述符
MySQL soft nofile 65535
MySQL hard nofile 65535
my.cnf参数修改:
open_files_limit = 65535
innodb_open_files=65535
5. MySQL初始化配置安全选项:
1)、合理规划目录结构,日志目录顺序写建议机械盘(binlog/slowlog/relaylog),数据目录随机写建议ssd。
2)、MySQL相关目录设置专用MySQL组和用户,MySQL后台启动方式不能以root来启动,比如通过MySQL用户 。
3)、设置bind-address为内网本机IP。
4)、修改MySQL默认服务端口号,不推荐使用3306,不同业务设置不同的端口号。
5)、通过修改max_connections和max_user_connections来控制最大连接数,过载保护。
6)、启用safe-user-create,用户不能用GRANT语句创建新用户,除非用户有MySQL.user表的INSERT权限。
7)、禁止local-infile=1,打开load data local file权限,避免数据泄漏和黑客攻击。
8)、禁止skip-grant-tables启动,防止MySQL绕过权限系统
9)、配置加上skip-name-resolve,防止主机名不被解析。
10)、禁止skip-networking,其它机器不能使用tcp/ip连接。
11)、禁止symbolic-links=1,关闭软链接功能。
二、MySQL帐号管理安全策略和MySQL权限相关的系统表:
1. MySQL.USER表
2. MySQL.DB表
3. MySQL.TABLES_PRIV表
4. MySQL.COLUMNS_PRIV表
自上而下,逐级验证,逐级进行账户权限的粒度控制
MySQL初始化:
1. 删除线上密码长度小于16的帐号。
2. 删除非root账户
3. 删除非localhost和127.0.0.1账户。
4. 删除test数据库
5. 账号区分:监控帐号、管理帐号、复制帐号、备份帐号、应用帐号
1)、监控帐号(localhost和127.0.0.1):
GRANT SELECT,PROCESS,REPLICATION CLIENT
2)、备份帐号(localhost和127.0.0.1):
GRANT SELECT,LOCK TABLES,RELOAD
3)、复制帐号(对应主库ip):
GRANT REPLICATION SLAVE,REPLICATION CLIENT
4)、管理帐号(对应代理ip):
GRANT ALL PRIVILEGES
5)、root帐号
root密码采用强密码策略,至少32位随机密码,推荐使用pwgen和makepasswd来生成32位随机密码,包含大小写、数字、字母、特殊字符。
root帐号只授权localhost和127.0.0.1,不得授予%权限。
root帐号建议每3个月修改一次,不同实例,设置不同的root密码。
6)、应用帐号
a. 应用帐号不得拥有Super、Create、Drop、File,Grant,Reload,Shutdown,Process等权限。
b. 最小权限原则:select,insert,update,delete权限,禁止应用帐号权限设置为all。
c. 应用帐号不得拥有系统数据库(MySQL)的任何权限,不能使用*.*来授权。
d. 应用帐号只给所属应用的数据库授权,只给其所属应用的IP或代理授权。
e. MySQL从库必须添加read-only,只给select权限,严禁all,导致只读失效。
f. 应用帐号密码策略同root,建议每3个月修改一次。
三、MySQL数据安全策略
1. 物理(xtrabackup)和逻辑(MySQLdump)相结合的备份策略,全备+增量+异地。
2. 数据库备份文件定期回放,定期验证备份的可恢复性。
3. 针对重要业务系统建立delay数据库或者采取Linux初始化时设置lvm策略,可快照闪回。
4. 假设有Binlog Server,遇到紧急情况可数据恢复。
附:MySQL命令行提示配置
MySQL -uroot -p123456 --prompt="MySQL-\\v->[\\r:\\m:\\s] [\\u@\\h:\\d] >"
帐号
权限
应用
数据
密码
用户
策略
安全
数据库
备份
系统
不同
建议
目录
账户
代理
管理
配置
环境
生产
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
斗地主服务器填什么
取所有mysql数据库中
网络安全预警开展情况
顶牛数据库技术
网络技术普及
光遇出现服务器错误什么意思
闵行区智能软件开发设备
服务器管理教程视频教程
怎么停止运行数据库
金融数据库在线阅读
校园网多网融合网络安全保障
电脑什么是远程服务器
莱芜凤巢网络技术
基带软件开发高级工程师
专科计算机网络技术职业
如何使用打印服务器
服务器硬盘8块做raid
中国网络安全策略
卡巴基因网络安全球图
长沙市芙蓉区大熊网络技术工作室
网络技术面试题目
网络技术基础会计
网络技术部培训
网络安全防备实施配备
视频会议软件开发找哪家公司
网络安全发培训
西充软件开发文档
博山mes管理软件开发公司
大学生网络安全知识不及格
山东语音网络技术市场价