当前位置:StudyEZ>学易考试社区>IT>数据库>教你一步一步地加强MySQL的安全性 (1)

教你一步一步地加强MySQL的安全性 (1)

上一主题 下一主题
1页, 共1页 (共1楼)

教你一步一步地加强MySQL的安全性 (1)

2007-02-14 5:16 下午
本文的实验都假设PHP模块已经安装在了Apache Web服务器上了,并且被放在了目录 /chroot/httpd下。除此以外,我们还作了如下的假设:

MySQL数据库仅被同主机上的PHP使用;

默认的管理工具像mysqladmin、mysql和 mysqldump,被用来管理数据库。另外,远程的数据备份将使用SSH协议执行。

为了获得更高的安全性能,对于MySQL的安装和配置,应该与以下的安全要求相符合:

1) MySQL数据库应该在被改变了默认根目录的环境下运行;

2) MySQL进程必须使用一个在系统进程中唯一的UID/GID;

3) 对MySQL的访问仅限于本地;

4) 保证MySQL根账户的密码不易被猜测;

5) 禁止对数据库的匿名访问;

6) 删除系统自带的所有的示例数据库和表;

安装MySQL

在我们开始加强MySQL的安全性之前,必须在服务器上安装它。我们在操作系统上来创建一个组和用户帐号,并使之唯一,使之与MySQL数据库相关联,方法如下:


pw groupadd mysql
pw useradd mysql -c "MySQL Server" -d /dev/null -g mysql -s /sbin/nologin


1.编译MySQL

我们先来在目录/usr/local/mysql下编译和安装MySQL软件:


./configure --prefix=/usr/local/mysql --with-mysqld-user=mysql
--with-unix-socket-path=/tmp/mysql.sock --with-mysqld-ldflags=-all-static
make
su
make install
strip /usr/local/mysql/libexec/mysqld
scripts/mysql_install_db
chown -R root /usr/local/mysql
chown -R mysql /usr/local/mysql/var
chgrp -R mysql /usr/local/mysql


总的来说,在Apache服务器上安装MySQL的过程基本上与手动安装等同。可能唯一的不同点就是使用了一些参数而已,像指定了./configure行。这里最重要的不同点在于参数“--with-mysqld-ldflags=-all-static”的使用,它可以使MySQL服务器使用静态连接。就像在第三部分涉及到的其他参数一样,这将显著简化改变服务器的根路径的过程,它们通知make程序安装在目录/usr/local/mysql下,以mysql账户的权限运行MySQL的后台程序,并且在/tmp目录下创建mysql.sock套接字。

2.拷贝配置文件

在执行了上面的命令后,我们还必须拷贝默认的配置文件以与期望的数据库大小一致。例如:


cp support-files/my-medium.cnf /etc/my.cnf
chown root:sys /etc/my.cnf
chmod 644 /etc/my.cnf


3.启动服务器

到这里为止,MySQL已经完全安装了,并且整装待发了。我们可以通过执行下面的命令来启动MySQL的服务器:


/usr/local/mysql/bin/mysqld_safe &


4.测试连接

尝试与一个数据库建立连接:


/usr/local/mysql/bin/mysql -u root mysql


如果连接成功,系统将显示如下内容:


Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2 to server version: 4.0.13-log
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.


然后,我们就可以看看本机上有哪些数据库,如下所示:


mysql> show databases;
+----------+
| Database |
+----------+
| mysql |
| test |
+----------+


2 rows in set (0.00 sec)

然后退出当前命令,使用如下命令:


mysql> quit;


一旦连接成功建立,我们就可以通过如下命令关闭数据库:


/usr/local/mysql/bin/mysqladmin -u root shutdown

1页, 共1页 (共1帖)