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]组的用户名。
#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索引对数据检索的性能至关重要,盲目的增加索引不仅不能带来性能的提升,反而会消耗更多的额外资源,本篇总结了一些MySQL索引实战经验. 索引是用于快速查找记录的一种数据结构.索引就像是数据库中 ...
- lamp下mysql安全加固
lamp下mysql安全加固 1.修改root用户口令,删除空口令 缺省安装的MySQL的root用户是空密码的,为了安全起见,必须修改为强密码,所谓的强密码,至少8位,由字母.数字和符号组成的不规律 ...
- [转载] 多年积累的 mysql 运维经验
原文: http://mp.weixin.qq.com/s?__biz=MzA3MzYwNjQ3NA==&mid=207132223&idx=1&sn=f5d98146f282 ...
- mysql最佳优化经验
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...
- mysql分表经验总结
一.为什么要分表? 当一张的数据达到几百万时,你查询一次所花的时间会变多,如果有联合查询的话,有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间.根据个人经验,mysql执行一个s ...
- 使用golang插入mysql性能提升经验
前言 golang可以轻易制造高并发,在某些场景很合适,比如爬虫的时候可以爬的更加高效.但是对应某些场景,如文件读写,数据库访问等IO为瓶颈的场合,就没有什么优势了. 前提基础 1.golang数据库 ...
- Mysql安全加固
1.确保MYSQL_PWD环境变量未设置 描述 MYSQL_PWD环境变量的使用意味着MYSQL凭证的明文存储,极大增加MySQL凭据泄露风险. 加固建议 删除系统环境变量中MySQL密码(MYSQL ...
- MySQL查询测试经验
测试表geoinfo,整个表超过1100万行,表结构: CREATE TABLE `geoinfo` ( `objectid` ) NOT NULL AUTO_INCREMENT , `latitud ...
- Mysql之SQL经验基础积累
1.根据create_time排序,如何确保null值的排在最前面: 解决办法: ,), a.create_time DESC 结果如下图:
随机推荐
- Arrays.asList的使用
Arrays.asList的作用是将数组转化为list,一般是用于在初始化的时候,设置几个值进去,简化代码,省去add的部分. 示例: List<String> menuList = Ar ...
- 项目git commit时卡主不良代码:husky让Git检查代码规范化工作
看完 <前端规范之Git工作流规范(Husky + Commitlint + Lint-staged) https://www.cnblogs.com/Yellow-ice/p/15349873 ...
- Java双重校验单例模式详解
单例模式双重检测java实现: public class Singleton { private volatile static Singleton instance = null; //#1 pub ...
- SQLZOO练习二--SELECT from Nobel Tutorial
We continue practicing simple SQL queries on a single table. This tutorial is concerned with a table ...
- 1 什么是Zookeeper 能干什么
1 Zookeeper 概述 美团,饿了么,淘宝,58 同城等等应用都是 zookeeper 的现实生活版 博主我开了个饭店,如何才能让大家都能吃到我们的饭菜?需要入驻美团,这样大家就可以在美团 ap ...
- 2020.7.19 区间 dp 阶段测试
打崩了-- 事先说明,今天没有很在状态,所以题解就直接写在代码注释里的,非常抱歉 T1 颜色联通块 此题有争议,建议跳过 题目描述 N 个方块排成一排,第 i 个颜色为 Ci .定义一个颜色联通块 [ ...
- 吐泡泡_via牛客网
题目 链接:https://ac.nowcoder.com/acm/contest/28537/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言 ...
- 从零开始Blazor Server(1)--项目搭建
项目介绍 本次项目准备搭建一个使用Furion框架,Blazor的UI使用BootstrapBlazor.数据库ORM使用Freesql的后台管理系统. 目前的规划是实现简单的注册,登录.增加管理员跟 ...
- SkiaSharp 之 WPF 自绘 投篮小游戏(案例版)
此案例主要是针对光线投影法碰撞检测功能的示例,顺便做成了一个小游戏,很简单,但是,效果却很不错. 投篮小游戏 规则,点击投篮目标点,就会有一个球沿着相关抛物线,然后,判断是否进入篮子里,其实就是一个矩 ...
- ajax.readyState与ajax.status一览
ajax.readyState 0 -(未初始化)还没有调用send()方法 1 -(载入)已调用send()方法,正在发送请求 2 -(载入完成)send()方法执行完成,已经接收到全部响应内容 3 ...