MySQL社区

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 3790|回复: 1
打印 上一主题 下一主题

[权限及安全] MySQL安全和管理

[复制链接]
跳转到指定楼层
1#
发表于 2012-6-15 16:35:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 hm3030 于 2012-6-15 16:40 编辑

目的:
  • 识别MySQL 安全问题
  • 改进MySQL 安装过程
  • 识别数据问题
  • 提高数据一致性和安全
  • 审计


安装安全:
  • 默认是可怕的

                  hack MySQL:

  • MySQL默认安装对super用户无密码可以登录
  • 匿名访问
  • 在配置文件里面提供superuser和密码
  • shell里面带密码登录,history文件
  • 无权限的用户可以访问MySQL权限表:整个mysql库
  • 能启动和停止mysqld进程,可以重置密码:--skip-grant-tables
  • 暴力检查
  • 应用使用明文密码,用户可能有某些特权

                   破坏MySQL:
  • 窃取CPU周期:select md5(a.c),md5(b.c) from a,b order by rand();
  • 强迫disk I/O:set session tmp_table_size=1024*4;
  • 匿名访问            

  • 最低限度:$mysql_secure_installation

    • 移除匿名用户
    • 移除test库
    • 移除非localhost root用户
    • 设置root密码                    

操作系统
  • 默认总是不安全的
  • 永远不要用root用户运行mysqld
  • 分离data、binary logs、logs、configuration、backups、个别目录权限
  • root用户安装,单独MySQL目录的权限:


chown -R root:root PATH/mysql
chown -R mysql:mysql PATH/mysql/{data,log,binlog,etc}
chmod 700 PATH/mysql/{data,binlog}
chmod 750 PATH/mysql/{etc,log}
  • 网络

    • MySQL监听的TCP/IP端口

      • 默认端口3306
      • --skip-networking 禁用tcp/ip

  • 防火墙管理
权限和特权
  • 用户权限

    • 最佳方法:


create user admin@localhost identified by 'admin_password';
grant  create,select,insert,update,delete on db.* to admin@localhost;

    • 通常方法:                        


                               create user super_user@'%';
                               grant all on *.* to super_user@'%';
  • grant all on *.*

    • grant all on *.* to user@'%';         

                                *.*       让你可以访问所以库里面所以表
                                 @‘%’     让你可以从任何外部位置访问
                                 All         授予你所以权限
数据一致性(data in != data out?)  
  • sql_mode:strict_all_tables,no_zero_date,no_zero_in_date,no_engine_substitution

审计
  • status variables :select variable_name,variable_vaule from information_schema.global_status where variable_name like 'com_alter%';
  • binary log:mysqlbinlog /path/binlog_file > binlog.txt ;grep -ie ALTER -e CREATE -e DROP binlog.txt
  • schema比较:mysqldump -uroot -p --no-data --all-databases --skip-dump-date|sed -e "s/AUTO_INCREMENT=[^\ ] / /">schema.`date +%Y%m%d.%H%M`sql; diff schema.1 schema.2
  • 审计插件(5.5): http://dev.mysql.com/doc/refman/5.5/en/audit-plugins.html
总结:

  • MySQL默认不是安全的
  • OS安全
  • 合适的用户权限
不涵盖:
  • Replication
  • SSL
  • Backups
  • SQL Injection


                                          

评分

1

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享淘帖 顶1 踩
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|MySQL社区 ( 京ICP备07012489号   
联系人:周生; 联系电话:13911732319

GMT+8, 2024-4-23 18:46 , Processed in 0.064406 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表