日期:2014-05-16  浏览次数:20929 次

mysql安全配置

?

1?????? 安全策略

1.1?? 管理意义上的数据安全

访问 MySQL 数据库必须首先访问数据库的某个权限、即以某个权限模式用户的身份登录,大部分的安全管理主要通过模式用户的权限来实现。

MySQL 的相关权限信息主要存放在 grant tables 的系统表中,即 mysql.User mysql.db mysql.Host mysql.table_priv 和、 mysql.column_priv 表中, MySQL 启动时装入内存。应尽量使用 GRANT REVOKE CREATE USER DROP USER 来进行用户和权限的变更操作。

:GRANT SELECT.UPDATE,DELETE,INSERT EXECUTE ON test_shop.* TO ‘ test_guest ’@’localhost’;

查看某用户权限,如 SHOW GRANTS FOR 'test_guest'@' localhost '

?

1.2?? 防范故障角度的数据安全

数据文件是操作系统级的对象,因此一般来讲具有相当的脆弱性、而且依赖于操作系统的性能特点。由于磁盘介质的因素、一个大的数据文件上个别数据块的损坏可能导致整个数据文件的不可用,这对一个系统来说是灾难性的,而且大的表空间或数据文件的恢复是困难和耗时的。

巨大对象的分区在性能角度之外也有安全的因素,当磁盘错误使一个巨大表中一个单独的数据块不能读写时可能导致整个表不可用,必须恢复包含该表的整个表空间。

考虑到数据仓库问题。可以进行以下操作:

对数据量大且不进行写操作的表,使用 myisampack 工具,生成压缩、只读 MyISAM 表。可以压缩 40% - 50% 的表文件空间。具体操作如下:

A 压缩文件: >myisampack ../data/music_shop/ 表名 .MYI

B 重建索引: >myisamchk -rq --sort-index --analyze../data/test_shop/ 表名 .MYI

C 强制 mysqld 使用新表: > mysqladmin flush-tables

如果要进行写操作,可以解压缩一个压缩的表,恢复原有状态,使用 myisamchk 如: myisamchk --unpack ../data/music_shop/ 表名 .MYI

最后,系统上线后,随着数据量的增加,会发现数据目录下的磁盘空间越来越下,造成安全隐患。可以采取两种措施。一种针对 MyISAM 存储引擎的表,在建表时分别指定数据目录和索引目录到不同的磁盘空间,而默认会同时放在数据目录下。另外一种针对 InnoDB 存储引擎的表,因为数据文件和索引文件在一起的,所以无法将它们分离。当磁盘空间不足时,可以增加一个新的数据文件,这个文件放在有充足空间的磁盘上。具体请查阅参数 innodb_data_file_path 设置。

1.3?? 容灾与备份机制

A)、??????? 建立主从数据库集群,采用 MySQL 复制

MySQL 复制的优点:

1 如果主服务器出现问题,可以快速切换到从服务器;

2 可以在从服务器上执行查询操作,降低主服务器的访问压力; <