加固你的MySQL
+--------------+ | mysql | | test | +--------------+ 2 rows in set (0.00 sec) mysql>quit
连接成功,可以关闭数据库:
#/usr/local/mysql/bin/mysqladmin -uroot shutdown
如果连接失败则需要仔细分析出错原因:
#more /usr/local/mysql/var/`hostname`.err
Chrooting
1.Chrooting环境
Chroot是Unix/类Unix的一种手段,它的建立会将其与主系统几乎完全隔离,也就是说,一旦遭到什么问题,也不会危及到正在运行的主系统。这是一个非常有效的办法,特别是在配置网络服务程序的时候。
2.Chroot的准确工作
首先,应当建立如图1示目录结构:
图1 目录结构 #mkdir -p /chroot/mysql/dev #mkdir -p /chroot/mysql/etc #mkdir -p /chroot/mysql/tmp #mkdir -p /chroot/mysql/var/tmp #mkdir -p /chroot/mysql/usr/local/mysql/libexec #mkdir -p /chroot/mysql/usr/local/mysql/share/mysql/english
然后设定目录权限:
#chown -R root:sys /chroot/mysql #chmod -R 755 /chroot/mysql #chmod 1777 /chroot/mysql/tmp
3.拷贝mysql下的程序和文件到chroot下
#cp -p /usr/local/mysql/libexec/mysqld /chroot/mysql/usr/local/mysql/libexec/ #cp -p /usr/local/mysql/share/mysql/english/errmsg.sys /chroot/mysql/usr/local/mysql/share/mysql/english/ #cp -p /etc/hosts /chroot/mysql/etc/ #cp -p /etc/host.conf /chroot/mysql/etc/ #cp -p /etc/resolv.conf /chroot/mysql/etc/ #cp -p /etc/group /chroot/mysql/etc/ #cp -p /etc/passwd /chroot/mysql/etc/passwd #cp -p /etc/my.cnf /chroot/mysql/etc/
4.编辑chroot下的passwd文件和group文件
#vi /chroot/etc/passwd
删除除了mysql、root、sys的所有行
#vi /chroot/etc/group
删除除了mysql、root的所有行
5.创建特殊的设备文件/dev/null
参照系统的样子做即可:
#ls -al /dev/null crw-rw-rw- 1 root root 1, 3 Jan 30 2003 /dev/null #mknod /chroot/mysql/dev/null c 1 3 #chown root:root /chroot/mysql/dev/null #chmod 666 /chroot/mysql/dev/null
6.拷贝mysql的数据库文件到chroot下
#cp -R /usr/local/mysql/var/ /chroot/mysql/usr/local/mysql/var #chown -R mysql:mysql /chroot/mysql/usr/local/mysql/var
7.安装chrootuid程序
下载chrootuid,然后RPM安装即可。
http://rpm.pbone.net/index.php3/stat/4/idpl/355932/com/ chrootuid-1.3-alt2.i586.rpm.html
8.测试Chroot环境下的MySQL配置
#chrootuid /chroot/mysql mysql /usr/local/mysql/libexec/mysqld &
如果失败请注意chroot目录下面的权限问题。
9.测试连接chroot下的MySQL
#/usr/local/mysql/bin/mysql --socket=/chroot/mysql/tmp/mysql.sock .............. mysql>show databases; mysql>create database wgh; mysql>quit; #ls -al /chroot/mysql/var/ ...............
配置服务器
为了更加安全地使用MySQL,需要对MySQL的数据库进行安全配置;并且由于Chroot的原因,配置文件也会有所不同。
1.关闭远程连接
首先,应该关闭3306端口,这是MySQL的默认监听端口。由于此处MySQL只服务于本地脚本,所以不需要远程连接。尽管MySQL内建的安全机制很严格,但监听一个TCP端口仍然是危险的行为,因为如果MySQL程序本身有问题,那么未授权的访问完全可以绕过MySQL的内建安全机制。关闭网络监听的方法很简单,在/chroot/mysql/etc/my.cnf文件中的[mysqld]部分,去掉#skip-networking前面的“#”即可。
关闭了网络,本地程序如何连接MySQL数据库呢?本地程序可以通过mysql.sock来连接,速度比网络连接更快。后文将提到关于mysql.sock的具体情况。 |