-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 从版本开始时作了小小的改动,默认安装后服务要用 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
评论0
最新资源