数据库的安全是平时安全运维中的重中之重,所以在平时需要做防火墙安全策略,以及主从复制实时热备以及相应的灾容备份措施等等,当然无论是编译安装的还是二进制包部署好MySQL后往往会忽略一些安全隐患,在这里就简要的说一下在MySQL在部署好后所必要删减以及调整。(mysql_X86_64二进制部署可参看:)
一、删除mysql的说明文件以及重要my.cnf配置文件的降权及重要库文件的权限修改
在mysql部署好后在环境路径下会有一些说明文件,在实际生产环境中不需要保留,在这里应该删除
[root@bogon mysql]# ls |grep -E '[A-Z]'
COPYING
INSTALL-BINARY
README
[root@bogon mysql]# ls |grep -E '[A-Z]' |xargs rm -f;
my.cnf是mysqld的配置文件,平时的my.cnf一般是从support-files文件夹下复制修改或者是自己平时写好的文件那它的初始权限就太高了,默认mysqld读取配置文件的顺序可以通过查看环境目录下的mysqld工具查看
[root@bogon bin]# ./mysqld --help --verbose | head -15
···略···
Usage: ./mysqld [OPTIONS]
Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf
The following groups are read: mysqld server mysqld-5.5
The following options may be given as the first argument:
[root@bogon etc]# ls -al|grep my.cnf
-rw-r--r-- 1 root root 5050 10-22 15:05 my.cnf
[root@bogon etc]# chmod 600 my.cnf
[root@bogon etc]# ls -al|grep my.cnf
-rw------- 1 root root 5050 10-22 15:05 my.cnf
[root@localhost etc]# cd /data/mysqldata/#进入datadir目录
[root@localhost mysqldata]# chown mysql:root mysql
[root@localhost mysqldata]# chown mysql:root performance_schema
#这2个重要的库应该改成root属组的
[root@localhost mysqldata]# chown mysql:root /usr/local/mysql/
#mysql的basedir目录下的权限也要改一下
二、删除mysql的匿名用户以及test库
mysql的用户信息都在mysql.user表中,查找匿名用户即User字段为空
mysql> select User,Host,Password from mysql.user;
+------+-----------+----------+
| User | Host | Password |
+------+-----------+----------+
| root | localhost | |
| root | bogon | |
| root | 127.0.0.1 | |
| root | ::1 | |
| | localhost | |
| | bogon | |
+------+-----------+----------+
6 rows in set (0.00 sec)
mysql> drop user ''@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> drop user ''@bogon;
Query OK, 0 rows affected (0.00 sec)
mysql> drop user 'root'@'::1';
Query OK, 0 rows affected (0.00 sec)
test库是mysql的安全隐患,在没有必要时需要删除
12345678910111213 mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> drop database test;
Query OK, 0 rows affected (0.01 sec)
最后在有做好防火墙的基础上给mysql的root用户添加密码,默认安装好后的mysql是没有密码的,添加密码可以用mysqladmin工具或者是直接修改mysql.user表,这个比较简单,在这里就不再赘述了。如此在此基础上在做相应的mysql灾容备份等措施,以保障mysql数据库的数据安全。