Mysql 安全加固经验总结

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

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]组的用户名。

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

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

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

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

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

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

查看用户,ip 及 密钥

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

参数说明:

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

2、databasename:数据库名;

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

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

查看mysql 可访问的用户,ip

5. 防sql注入

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

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

6. 线上操作

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

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

7.架构

选择合适的高可用架构

8.其他

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

Original: https://www.cnblogs.com/zjdxr-up/p/16705962.html
Author: 香吧香
Title: Mysql 安全加固经验总结

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/589703/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • RPC学习—-Thrift快速入门和Java简单示例

    一.什么是RPC? RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术…

    Java 2023年5月29日
    086
  • IDEA通用配置

    文件的自动author注释 posted @2020-09-18 16:54 风小雅 阅读(197 ) 评论() 编辑 Original: https://www.cnblogs….

    Java 2023年6月6日
    089
  • 跟着 Guava、Spring 学习如何设计观察者模式

    文章首发在公众号(龙台的技术笔记),之后同步到掘金和个人网站:xiaomage.info 今天讲解一篇行为型设计模式,什么是行为型?行为型主要负责设计 类或对象之间的交互。工作中常…

    Java 2023年6月14日
    080
  • entitybuilder–一个简单的业务通用框架

    关于业务通用框架的思考 业务系统是千差万别的,例如,保存、更新和删除订单,或者保存订单和保存客户,走的根本不是一个流程。但是,它们还是有共同点,它们的流程大致可以分成下面的几个部分…

    Java 2023年6月13日
    076
  • Android Studio安装插件重启插件消失

    问题 安装插件后,已经提示让重启IDE,但是重启后发现插件是安装失败了 解决方法 原因是自己改了配置,如果下载的插件是jar包,则可以安装,如果是zip压缩文件的插件,则是要我们手…

    Java 2023年6月13日
    077
  • 2022-8-19 第六组 JDBC(2)

    PreparedStatement:执行sql的对象 1. SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题 1. &#x8F93…

    Java 2023年6月13日
    091
  • 面试遇到的常用问题

    一、线程池的问题 1、newSingleThreadExecutor 创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因…

    Java 2023年6月6日
    087
  • Win10文件、文件夹被占用解决方法

    有时删除文件/弹出移动硬盘的时候会出现文件或文件夹或磁盘被占用的情况,从而无法删除文件/文件夹或安全弹出移动硬盘。这时可以在资源管理器中搜索该文件、文件夹,来找到对应的程序。使用了…

    Java 2023年6月9日
    090
  • java8 对 list 的各项操作(交差并集)

    示例代码: public static void main(String[] args) { List list1 = new ArrayList<>(); list1…

    Java 2023年5月29日
    091
  • Mybatis系列全解(五):全网最全!详解Mybatis的Mapper映射文件

    封面:洛小汐作者:潘潘 若不是生活所迫,谁愿意背负一身才华。 ; 前言 上节我们介绍了 《 Mybatis系列全解(四):全网最全!Mybatis配置文件 XML 全貌详解 》,内…

    Java 2023年6月13日
    098
  • 将vue项目部署到服务器并通过外网访问的三种方式(springboot中static/nginx)

    一.将vue项目打包后生成的dist目录下的文件复制到springboot项目里面 前端vue项目先通过npm run build生成dist目录 2.将dist中目录文件放入sp…

    Java 2023年6月5日
    098
  • 设计模式之访问者模式

    大多数情况下你不需要访问者模式,但当一旦需要访问者模式时,那就是真的需要它了,这是设计模式创始人的原话。可以看出应用场景比较少,但需要它的时候是不可或缺的,这篇文章就开始学习最后一…

    Java 2023年6月8日
    087
  • 如果Controller里有私有的方法,能成功访问吗?

    背景 原因 cglib代理的锅 换成JDK动态代理呢 参考 背景 写代码的时候,复制粘贴的时候,没注意到方法的属性,就导致了Controller里有了一个私有的方法,然后访问这个接…

    Java 2023年6月8日
    0101
  • springboot1.5.4 log4j

    resources下面添加: log4j.properties: # log4j.rootCategory=INFO, stdout, file, errorfile log4j….

    Java 2023年5月30日
    0128
  • 阿里云视频点播

    参考示例:https://help.aliyun.com/document_detail/53406.html 注意点:有一个依赖包是下载不来的,我们需要手动下载并解压(其他包也是…

    Java 2023年6月13日
    0127
  • day02-用户登录功能实现

    多用户即时通讯系统02 4.编码实现01 4.1功能实现-用户登录 4.1.1功能说明 因为还没有学习数据库,我们人为规定 用户名/id = 100,密码为 123456 就可以登…

    Java 2023年6月15日
    079
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球