网络安全 频道

如何安全配置和应用MySQL数据库(5)

 配置服务器

  为了更加安全地使用MySQL,需要对MySQL的数据库进行安全配置。由于Chroot的原因,配置文件也会有所不同。

  1.关闭远程连接

  首先,应该关闭3306端口,这是MySQL的默认监听端口。由于此处MySQL只服务于本地脚本,所以不需要远程连接。尽管MySQL内建的安全机制很严格,但监听一个TCP端口仍然是危险的行为,因为如果MySQL程序本身有问题,那么未授权的访问完全可以绕过MySQL的内建安全机制。关闭网络监听的方法很简单,在/chroot/mysql/etc/my.cnf文件中的[mysqld]部分,去掉#skip-networking前面的“#”即可。

  关闭了网络,本地程序如何连接MySQL数据库呢?本地程序可以通过mysql.sock来连接,速度比网络连接更快。后文将提到关于mysql.sock的具体情况。

  MySQL的备份通常使用SSH来执行。

  2.禁止MySQL导入本地文件

  下面将禁止MySQL中用“LOAD DATA LOCAL INFILE”命令。这个命令会利用MySQL把本地文件读到数据库中,然后用户就可以非法获取敏感信息了。

  为了禁止上述命令,在/chroot/mysql/etc/my.cnf文件的[mysqld]部分加入下面语句:

set-variable=local-infile=0

  为了管理方便,一般在系统中的MySQL管理命令如mysql、mysqladmin、mysqldump等,使用的都是系统的/etc/my.cnf文件。如果要连接,它会寻找/tmp/mysql.sock文件来试图连接MySQL服务器,但是这里要连接的是chroot下的MySQL服务器。解决办法有两个:一个是在管理命令后面加入--socket=/chroot/mysql/tmp/mysql.sock。例如:

#/usr/local/mysql/bin/mysql -root -p --socket=/chroot/mysql/tmp/mysql.sock

  另一个就是在/etc/my.cnf的[client]部分加入socket=/chroot/mysql/tmp/mysql.sock。显然,第二种方法方便多了。

  3.修改MySQL的root用户ID和密码

#chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld &

#/usr/local/mysql/bin/mysql -uroot

.......

mysql>SET PASSWORD FOR root@localhost=PASSWORD(new_password);

  要尽量养成在mysql下输入密码的习惯,因为Shell下面输入的时候可能会被其它人看见。

mysql>use mysql;

mysql>update user set user="wghgreat" where user="root";

mysql>select Host,User,Password,Select_priv,Grant_priv from user;

mysql>delete from user where user=;

mysql>delete from user where password=;

mysql>delete from user where host=%;

mysql>drop database test;

  修改为一个不容易猜的ID:

mysql>flush privileges;

mysql>quit;

0
相关文章