• Msyql的my.cnf配置文件参数详解及安全优化


    一、参数详解

    1.禁用local_infile选项会降低攻击者通过SQL注入漏洞器读取敏感文件的能力
    local-infile=0
    
    2.5.6以上版本应禁用符号链接以防止各种安全风险
    skip_symbolic_links=yes
    
    3.使用此选项,会导致所有客户端都对所有数据库具有不受限制的访问权限。
    skip-grant-tables 【禁用】
    
    4.当log-raw记录启用时,有权访问日志文件的人可能会看到纯文本密码。
    log-raw=off
    
    5.MYSQL_PWD环境变量的使用意味着MYSQL凭证的明文存储,极大增加MySQL凭据泄露风险。
    MYSQL_PWD
    
    6.启动错误日志
    log-error=<log_path>
    

    二、安全优化

    1.使用非默认端口,降低被初级扫描危险
    port = 3307
    
    2.使用非root用户启动mysql
    user = mysql
    
    3.匿名登录检查
    delete from user where user='';
    flush privileges;
    
    4.避免在主机名中只使用通配符,有助于限定可以连接数据库的客户端,否则服务就开放到了公网
    执行SQL更新语句,为每个用户指定允许连接的host范围。 
       1. 登录数据库,执行use mysql; ;   
       2. 执行语句select user,Host from user where Host='%';查看HOST为通配符的用户; 
       3. 删除用户或者修改用户host字段,删除语句:DROP USER 'user_name'@'%'; 。更新语句:update user set host = <new_host> where host = '%';。 
       4. 执行SQL语句:
          OPTIMIZE TABLE user;
          flush privileges;
    
    5.启动错误日志,快速定位问题
    log-error=<log_path>
    
    6.mysql5.7执行sql报错,1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'csc_risk.a.DefaultDate' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by, Time: 0.035000s 
    查看sql_mode:
     SELECT @@sql_mode;
     ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
    解决:
     配置文件:
     sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION  
     临时修改:
     全局修改,适用于新建数据库
     SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
     适用于已有数据库
     SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    
    
  • 相关阅读:
    python调用c++动态库报错
    Python自动化测试常用库整理
    Linux kswapd0 进程CPU占用过高快速处理方法
    Linux安装jdk8及环境变量配置
    免费的网站安全检查和恶意软件扫描程序
    【Java】对象的创建、初始化和使用
    【Java】数组的创建、遍历和复制
    【Java】Java 语言中流程控制语句(分支语句、循环语句、转移语句)的一些新特性
    【Java】Java 语言中操作符的一些新特性
    【Java】常量与变量(局部变量、成员变量)
  • 原文地址:https://www.cnblogs.com/wangchengshi/p/13962841.html
Copyright © 2020-2023  润新知