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;
mysql>flush privileges;
mysql>quit;
|
修改为一个不容易猜的ID
4.删除历史命令记录
这些历史文件包括~/.bash_history、~/.mysql_history等。如果打开它们,你会大吃一惊,怎么居然有一些明文的密码在这里?!
#cat /dev/null > ~/.bash_history
#cat /dev/null > ~/.mysql_history
|
PHP和MySQL通信
默认情况下,PHP会通过/tmp/mysql.sock来和MySQL通信,但这里的一个大问题是MySQL生成的根本不是它,而是/chroot/mysql/tmp/mysql.sock。解决的办法就是做一个连接:
#ln /chroot/mysql/tmp/mysql.sock /tmp/mysql.sock
|
注意:由于hard links不能在文件系统的分区之间做,所以该处的连接必须位于同一分区内部。
自启动配置
自启动配置前先提示一点:即用于PHP的数据库需要用一个新建的帐号,其上有数据库权限设置,比如FILE、GRANT、ACTER、SHOW DATABASE、RELOAD、SHUTDOWN、PROCESS、SUPER等。
自启动脚本示例:
#!/bin/sh
CHROOT_MYSQL=/chroot/mysql
SOCKET=/tmp/mysql.sock
MYSQLD=/usr/local/mysql/libexec/mysqld
PIDFILE=/usr/local/mysql/var/`hostname`.pid
CHROOTUID=/usr/bin/chrootuid
echo -n " mysql"
case "$1" in
start)
rm -rf ${SOCKET}
nohup ${CHROOTUID} ${CHROOT_MYSQL} mysql ${MYSQLD} >/dev/null 2>&1 &
sleep 5 && ln ${CHROOT_MYSQL}/${SOCKET} ${SOCKET}
;;
stop)
kill `cat ${CHROOT_MYSQL}/${PIDFILE}`
rm -rf ${CHROOT_MYSQL}/${SOCKET}
;;
*)
echo ""
echo "Usage: `basename $0` {start|stop}" >&2
exit 64
;;
esac
exit 0
|
文件位于/etc/rc.d/init.d下,名为mysqld,注意要可执行。
#chmod +x /etc/rc.d/init.d/mysqld
#ln -s /etc/rc.d/init.d/mysql /etc/rc3.d/S90mysql
#ln -s /etc/rc.d/init.d/mysql /etc/rc0.d/K20mysql
|
结论:尽管我们不能做到100%的安全,但是这些措施可以保护我们的系统更加安全!
参考资料:
Artur Maj 《Securing MySQL》
Xuzhikun 《MySQL数据库安全配置》
晏子 译 《MySQL中文参考手册》
|
如果您对本文有任何疑问或者建议,请到讨论区发表您的意见:
>>
论坛入口 <<
上一篇:
gdb (GNU 调试器):基础
下一篇:
用Linux搭建全自动的虚拟主机(上)
【文章评论】
【收藏本文】
【推荐好友】
【打印本文】
【我要投稿】 【论坛讨论】