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
用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不能覆盖已经存在的文件。