手机版
你好,游客 登录 注册 搜索
背景:
阅读新闻

MySQL的安装与配置祥解2

[日期:2006-09-23] 来源:Linux公社  作者:Linux [字体: ]

3.23.xx版本数据目录的属性是700,这样就比较好,只有启动数据库的用户可以读写数据库文件,保证了本地数据文件的安全。

如果启动MySQL数据库的用户是mysql,那么象如下的目录和文件的是安全的,请注意数据目录及下面的属性:

shell>ls -l /usr/local/mysql

total 40

drwxrwxr-x   2 root   root       4096 Feb 27 20:07 bin

drwxrwxr-x   3 root   root       4096 Feb 27 20:07 include

drwxrwxr-x   2 root   root       4096 Feb 27 20:07 info

drwxrwxr-x   3 root   root       4096 Feb 27 20:07 lib

drwxrwxr-x   2 root   root       4096 Feb 27 20:07 libexec

drwxrwxr-x   3 root   root       4096 Feb 27 20:07 man

drwxrwxr-x   6 root   root       4096 Feb 27 20:07 mysql-test

drwxrwxr-x   3 root   root       4096 Feb 27 20:07 share

drwxrwxr-x   7 root   root       4096 Feb 27 20:07 sql-bench

drwx------   4 mysql   mysql     4096 Feb 27 20:07 var

shell>ls -l /usr/local/mysql/var

total 8

drwx------   2 mysql   mysql     4096 Feb 27 20:08 mysql

drwx------   2 mysql   mysql     4096 Feb 27 20:08 test

shell>ls -l /usr/local/mysql/var/mysql

total 104

-rw-------   1 mysql   mysql       0 Feb 27 20:08 columns_priv.MYD

-rw-------   1 mysql   mysql     1024 Feb 27 20:08 columns_priv.MYI

-rw-------   1 mysql   mysql     8778 Feb 27 20:08 columns_priv.frm

-rw-------   1 mysql   mysql       302 Feb 27 20:08 db.MYD

-rw-------   1 mysql   mysql     3072 Feb 27 20:08 db.MYI

-rw-------   1 mysql   mysql     8982 Feb 27 20:08 db.frm

-rw-------   1 mysql   mysql       0 Feb 27 20:08 func.MYD

-rw-------   1 mysql   mysql     1024 Feb 27 20:08 func.MYI

-rw-------   1 mysql   mysql     8641 Feb 27 20:08 func.frm

-rw-------   1 mysql   mysql       0 Feb 27 20:08 host.MYD

-rw-------   1 mysql   mysql     1024 Feb 27 20:08 host.MYI

-rw-------   1 mysql   mysql     8958 Feb 27 20:08 host.frm

-rw-------   1 mysql   mysql       0 Feb 27 20:08 tables_priv.MYD

-rw-------   1 mysql   mysql     1024 Feb 27 20:08 tables_priv.MYI

-rw-------   1 mysql   mysql     8877 Feb 27 20:08 tables_priv.frm

-rw-------   1 mysql   mysql       428 Feb 27 20:08 user.MYD

-rw-------   1 mysql   mysql     2048 Feb 27 20:08 user.MYI

-rw-------   1 mysql   mysql     9148 Feb 27 20:08 user.frm

如果这些文件的属主及属性不是这样,请用以下两个命令修正之:

shell>chown -R mysql.mysql /usr/local/mysql/var

shell>chmod -R go-rwx /usr/local/mysql/var

用root用户启动远程服务一直是安全大忌,因为如果服务程序出现问题,远程攻击者极有可能获得主机的完全控制权。MySQL从3.23.15版本开始时作了小小的改动,默认安装后服务要用mysql用户来启动,不允许root用户启动。如果非要用root用户来启动,必须加上-user=root的参数(./safe_mysqld -user=root &)。因为MySQL中有LOAD DATA INFILE和SELECT ... INTO OUTFILE的SQL语句,如果是root用户启动了MySQL服务器,那么,数据库用户就拥有了root用户的写权限。不过MySQL还是做了一些限制的,比如LOAD DATA INFILE只能读全局可读的文件,SELECT ... INTO OUTFILE不能覆盖已经存在的文件。

本地的日志文件也不能忽视,包括shell的日志和MySQL自己的日志。有些用户在本地登陆或备份数据库的时候为了图方便,有时会在命令行参数里直接带了数据库的密码,如:

shell>/usr/local/mysql/bin/mysqldump -uroot -ptest test>test.sql

shell>/usr/local/mysql/bin/mysql -uroot -ptest

这些命令会被shell记录在历史文件里,比如bash会写入用户目录的.bash_history文件,如果这些文件不慎被读,那么数据库的密码就会泄漏。用户登陆数据库后执行的SQL命令也会被MySQL记录在用户目录的.mysql_history文件里。如果数据库用户用SQL语句修改了数据库密码,也会因.mysql_history文件而泄漏。所以我们在shell登陆及备份的时候不要在-p后直接加密码,而是在提示后再输入数据库密码。

另外这两个文件我们也应该不让它记录我们的操作,以防万一。

shell>rm .bash_history .mysql_history

shell>ln -s /dev/null .bash_history

shell>ln -s /dev/null .mysql_history

上门这两条命令把这两个文件链接到/dev/null,那么我们的操作就不会被记录到这两个文件里了。

外部网络安全

MySQL数据库安装好以后,Unix平台的user表是这样的:

mysql> use mysql;

Database changed

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

+-----------+------+----------+-------------+------------+

| Host     | User | Password | Select_priv | Grant_priv |

+-----------+------+----------+-------------+------------+

| localhost | root |       | Y       | Y       |

| RedHat   | root |       | Y       | Y       |

| localhost |     |       | N       | N       |

| redhat   |     |       | N       | N       |

+-----------+------+----------+-------------+------------+

linux
相关资讯       mysql 
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款