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;


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%的安全,但是这些措施可以保护我们的系统更加安全。