Mysql数据库的安全配置、实用技巧 |
1、前言 MySQL 是 彻底网络化的跨平台关系型数据库系统,同时是 存在客户机/服务器体系 构造的 分布式数据库治理系统 。它 存在 性能强、 使用简便、治理容易、运行速度快、安全牢靠性强等 长处,消费者可利用许多语言编写 拜访MySQL 数据库的程序,特殊是与PHP更是黄金组合, 使用十分 宽泛 。 因为MySQL是多平台的数据库,它的默许配置要考量各种状况下都能 实用,所以在我们自己的 使用环境下应该进 前进一步的安全加固 。作为一个MySQL的系统治理员,我们有责任 保护MySQL数据库系统的数据安全性和 完全性 。 MySQL数据库的安全配置必须从两个方面 动手,系统内部安全和外部网络安全,另外我们还将 容易介绍编程时要 留神的一些问题以及一些小 秘诀 。 2、系统内部安全 首先 容易介绍一下MySQL数据库目录 构造 。MySQL安装好,运行了mysql_db_install脚本以后就会 构建数据目录和初始化数据库 。假如我们用MySQL源码包安装,并且安装目录是/usr/local/mysql,那么数据目录普通会是/usr/local/mysql/var 。数据库系统由一系列数据库构成,每个数据库包括一系列数据库表 。MySQL是用数据库名在数据目录 构建 构建一个数据库目录,各数据库表分别以数据库表名作为文件名, 扩大名分别为MYD、MYI、frm的三个文件放到数据库目录中 。 MySQL的授权表给数据库的 拜访提供了灵便的权限操纵,然而假如当地消费者 占有对库文件的读权限的话, 突击者 惟独把数据库目录打包拷走, 而后拷到自己本机的数据目录下就能 拜访窃取的数据库 。所以MySQL所在的主机的安全性是最首要的问题,假如主机不安全,被 突击者操纵,那么MySQL的安全性也无从谈起 。其次便是数据目录和数据文件的安全性,也便是权限设置问题 。 从MySQL主站一些老的binary发行版来看,3.21.xx版本中数据目录的属性是775,这样十分惊险,任何当地消费者都 可以读数据目录,所以数据库文件很不安全 。3.22.xx版本中数据目录的属性是770,这种属性也有些惊险,当地的同组消费者既能读也能写,所以数据文件也不安全 。3.23.xx版本数据目录的属性是700,这样就 比较好,惟独启动数据库的消费者 可以读写数据库文件, 保障了当地数据文件的安全 。 假如启动MySQL数据库的消费者是mysql,那么象如下的目录和文件的是安全的,请 留神数据目录及下面的属性: shell>ls -l /usr/local/mysql total 40 drwxrwxr-x 2 root root 4096 Feb 27 20:07 bin drwxrwxr-x 3 root root 4096 Feb 27 20:07 include drwxrwxr-x 2 root root 4096 Feb 27 20:07 info drwxrwxr-x 3 root root 4096 Feb 27 20:07 lib drwxrwxr-x 2 root root 4096 Feb 27 20:07 libexec drwxrwxr-x 3 root root 4096 Feb 27 20:07 man drwxrwxr-x 6 root root 4096 Feb 27 20:07 mysql-test drwxrwxr-x 3 root root 4096 Feb 27 20:07 share drwxrwxr-x 7 root root 4096 Feb 27 20:07 sql-bench drwx------ 4 mysql mysql 4096 Feb 27 20:07 var shell>ls -l /usr/local/mysql/var total 8 drwx------ 2 mysql mysql 4096 Feb 27 20:08 mysql drwx------ 2 mysql mysql 4096 Feb 27 20:08 test shell>ls -l /usr/local/mysql/var/mysql total 104 -rw------- 1 mysql mysql 0 Feb 27 20:08 columns_priv.MYD -rw------- 1 mysql mysql 1024 Feb 27 20:08 columns_priv.MYI -rw------- 1 mysql mysql 8778 Feb 27 20:08 columns_priv.frm -rw------- 1 mysql mysql 302 Feb 27 20:08 db.MYD -rw------- 1 mysql mysql 3072 Feb 27 20:08 db.MYI -rw------- 1 mysql mysql 8982 Feb 27 20:08 db.frm -rw------- 1 mysql mysql 0 Feb 27 20:08 func.MYD -rw------- 1 mysql mysql 1024 Feb 27 20:08 func.MYI -rw------- 1 mysql mysql 8641 Feb 27 20:08 func.frm -rw------- 1 mysql mysql 0 Feb 27 20:08 host.MYD -rw------- 1 mysql mysql 1024 Feb 27 20:08 host.MYI -rw------- 1 mysql mysql 8958 Feb 27 20:08 host.frm -rw------- 1 mysql mysql 0 Feb 27 20:08 tables_priv.MYD -rw------- 1 mysql mysql 1024 Feb 27 20:08 tables_priv.MYI -rw------- 1 mysql mysql 8877 Feb 27 20:08 tables_priv.frm -rw------- 1 mysql mysql 428 Feb 27 20:08 user.MYD -rw------- 1 mysql mysql 2048 Feb 27 20:08 user.MYI -rw------- 1 mysql mysql 9148 Feb 27 20:08 user.frm 假如这些文件的属主及属性不是这样,请用以下两个命令 修改之: shell>chown -R mysql.mysql /usr/local/mysql/var shell>chmod -R go-rwx /usr/local/mysql/var |