Mysql 安全加固经验总结

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: Mysql 安全加固经验总结

本文为博主原创,转载请注明出处:

目录

  1.内网部署Mysql

  2. 使用独立用户运行msyql

  3.为不同业务创建不同的用户,并设置不同的密钥

  4.指定mysql可访问用户ip和权限

  5. 防sql注入

  6. 线上操作

  7.架构

  8.其他

1.内网部署Mysql

  mysql 数据库在使用过程中,需要给服务提供连接和访问的权限,而不需要进行公网连接和访问,所以在安全环境和现网环境部署mysql 的时候,在没有公网权限的主机上进行部署,让服务通过内网的地址进行连接和访问;

  部署在无公网的好处,可以避免了公网的攻击;MySQL只对内网开放

2. 使用独立用户运行msyql

  绝对不要作为使用root用户运行MySQL服务器。这样做非常危险,因为任何具有FILE权限的用户能够用root创建文件(例如,~root/.bashrc)。mysqld拒绝使用root运行,除非使用–user=root选项明显指定。应该用普通非特权用户运行mysqld。正如安装过程一样,为数据库建立独立的linux中的mysql账户,该账户用来只用于管理和运行MySQL。

  要想用其它用户启动mysqld,,增加user选项指定/etc/my.cnf选项文件或服务器数据目录的my.cnf选项文件中的[mysqld]组的用户名。

#vim /etc/my.cnf
[mysqld]
user=mysql

该命令使服务器用指定的用户来启动,无论你手动启动或通过mysqld_safe或mysql.server启动,都能确保使用mysql的身份。也可以在启动数据库加上user参数。

# /usr/local/mysql/bin/mysqld_safe --user=mysql &

  作为其它linux用户而不用root运行mysqld,你不需要更改user表中的root用户名,因为MySQL账户的用户名与linux账户的用户名无关。确保mysqld运行时,只使用对数据库目录具有读或写权限的linux用户来运行。

3.为不同业务创建不同的用户,并设置不同的密钥

  永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

  添加用户,并设置用户登录密码;

  且密码需要满足复杂度的要求:尽量并且不要使用固定密码,实行每个用户单独密码;长度在16位以上 ,包含大小写字母,数字,特殊符号等;且需要包含三种类型;

create user user_name@'ip'  identified by 'user-password';

  查看用户,ip 及 密钥

SELECT user, host, authentication_string FROM user;

4.指定mysql可访问用户ip和权限

Grant 【privileges】 ON databasename.tablename TO 'username'@'host';

  参数说明:

    1、privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL;

    2、databasename:数据库名;

    3、tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*。

  用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:

GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;

  查看mysql 可访问的用户,ip

SELECT user, host FROM user;

5. 防sql注入

  永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和 双"-"进行转换等。

  永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。

6. 线上操作

  修改或删除数据前先备份,先备份,先备份(重要事情说三遍)

  线上变更一定要有回退方案

7.架构

  选择合适的高可用架构

8.其他

  DDL操作要谨慎,对于大表的alter操作最好使用 pt-online-schema-change

  具体可看这篇: https://www.cnblogs.com/zjdxr-up/p/15564339.html

 

 

 

标签: mysql , 安全

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
6月前
|
监控 关系型数据库 MySQL
《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)
《MySQL 简易速速上手小册》第7章:MySQL监控和日志分析(2024 最新版)
95 3
|
6月前
|
存储 JSON 关系型数据库
《MySQL 简易速速上手小册》第9章:高级 MySQL 特性和技巧(2024 最新版)
《MySQL 简易速速上手小册》第9章:高级 MySQL 特性和技巧(2024 最新版)
79 1
|
3月前
|
安全 关系型数据库 MySQL
[mysql]安全加固
[mysql]安全加固
|
关系型数据库 MySQL 数据安全/隐私保护
安装mySQL2021详细教程-已完善
安装mySQL2021详细教程-已完善
|
SQL 监控 安全
数据库原理及MySQL应用 | 数据库安全加固
数据库安全至关重要,可从多方面对数据库进行加固。
308 0
数据库原理及MySQL应用 | 数据库安全加固
|
SQL 存储 Oracle
MySQL 初级使用指南
MySQL 初级使用指南
233 0
MySQL 初级使用指南
|
存储 SQL 监控
MySQL开发规范之我见
MySQL开发规范之我见
134 0
|
缓存 网络协议 关系型数据库
[玩转MySQL之二]MySQL连接机制浅析及运维
使用MySQL数据库的第一步必然是建立连接登录,无论是通过mysql的客户端。无论是通过mysql的客户端,还是通过C-API,JDBC标准接口连接数据库,这个过程一定少不了。那么它的内部机制是怎样的?有哪些参数配置以及会出现哪些问题?
3080 0
|
SQL 存储 关系型数据库
|
关系型数据库 MySQL 数据库