2007年5月22日星期二

[转载]详细讲解MySQL数据库的安全配置

  MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统。它具有功能强、使用简便、管理方便、运行速度快、安全可靠性强等优点,用户可利用许多语言编写访问MySQL 数据库的程序,特别是与PHP更是黄金组合,运用十分广泛。

  由于MySQL是多平台的数据库,它的默认配置要考虑各种情况下都能适用,所以在我们自己的使用环境下应该进行进一步的安全加固。作为一个MySQL的系统管理员,我们有责任维护MySQL数据库系统的数据安全性和完整性。

  MySQL数据库的安全配置必须从两个方面入手,系统内部安全和外部网络安全,另外我们还将简单介绍编程时要注意的一些问题以及一些小窍门。

2、系统内部安全:

  首先简单介绍一下MySQL数据库目录结构。MySQL安装好,运行了mysql_db_install脚本以后就会建立数据目录和初始化数据库。如果我们用MySQL源码包安装,而且安装目录是/usr/local/mysql,那么数据目录一般会是/usr/local/mysql/var。数据库系统由一系列数据库组成,每个数据库包含一系列数据库表。MySQL是用数据库名在数据目录建立建立一个数据库目录,各数据库表分别以数据库表名作为文件名,扩展名分别为MYD、MYI、frm的三个文件放到数据库目录中。

  MySQL的授权表给数据库的访问提供了灵活的权限控制,但是如果本地用户拥有对库文件的读权限的话,攻击者只需把数据库目录打包拷走,然后拷到自己本机的数据目录下就能访问窃取的数据库。所以MySQL所在的主机的安全性是最首要的问题,如果主机不安全,被攻击者控制,那么MySQL的安全性也无从谈起。其次就是数据目录和数据文件的安全性,也就是权限设置问题。

  从MySQL主站一些老的binary发行版来看,3.21.xx版本中数据目录的属性是775,这样非常危险,任何本地用户都可以读数据目录,所以数据库文件很不安全。3.22.xx版本中数据目录的属性是770,这种属性也有些危险,本地的同组用户既能读也能写,所以数据文件也不安全。3.23.xx版本数据目录的属性是700,这样就比较好,只有启动数据库的用户可以读写数据库文件,保证了本地数据文件的安全。

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

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,那么我们的操作就不会被记录到这两个文件里了。

3、外部网络安全:

  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 |
+-----------+------+----------+-------------+------------+
4 rows in set (0.00 sec)


  Windows平台的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 |
| % | root | | Y | Y |
| localhost | | | Y | Y |
| % | | | N | N |
+-----------+------+----------+-------------+------------+
4 rows in set (0.00 sec)

  我们先来看Unix平台的user表。其中redhat只是我试验机的机器名,所以实际上Unix平台的MySQL默认只允许本机才能连接数据库。但是缺省root用户口令是空,所以当务之急是给root用户加上口令。给数据库用户加口令有三种方法:

  1)在shell提示符下用mysqladmin命令来改root用户口令: shell>mysqladmin -uroot password test。

  这样,MySQL数据库root用户的口令就被改成test了。(test只是举例,我们实际使用的口令一定不能使用这种易猜的弱口令)

  2)用set password修改口令:mysql> set password for root@localhost=password('test');。

  这时root用户的口令就被改成test了。

  3)直接修改user表的root用户口令:

mysql> use mysql;
mysql> update user set password=password('test') where user='root';
mysql> flush privileges;

  这样,MySQL数据库root用户的口令也被改成test了。其中最后一句命令flush privileges的意思是强制刷新内存授权表,否则用的还是缓冲中的口令,这时非法用户还可以用root用户及空口令登陆,直到重启MySQL服务器。

  我们还看到user为空的匿名用户,虽然它在Unix平台下没什么权限,但为了安全起见我们应该删除它:mysql> delete from user where user=''; 。

  Windows版本MySQL的user表有很大不同,我们看到Host字段除了localhost还有是%。这里%的意思是允许任意的主机连接MySQL服务器,这是非常不安全的,给攻击者造成可乘之机,我们必须删除Host字段为%的记录: mysql>delete from user where host='%'; 。

  默认root用户的空密码也是必须修改,三种修改方法和Unix平台一样。

我们注意到Host字段为localhost的匿名用户拥有所有的权限!就是说本地用户用空的用户名和空的口令登陆MySQL数据库服务器可以得到最高的权限!所以匿名用户必须删除!


mysql> delete from user where user='';


  对user表操作以后不要忘了用flush privileges来强制刷新内存授权表,这样才能生效。


  默认安装的Windows版MySQL存在的不安全因素太多,我们在安装后一定要进一步配置!


  MySQL的5个授权表:user, db, host, tables_priv和columns_priv提供非常灵活的安全机制,从MySQL 3.22.11开始引入了两条语句GRANT和REVOKE来创建和删除用户权限,可以方便的限制哪个用户可以连接服务器,从哪里连接以及连接后可以做什么操作。作为MySQL管理员,我们必须了解授权表的意义以及如何用GRANT和REVOKE来创建用户、授权和撤权、删除用户。

  在3.22.11版本以前的MySQL授权机制不完善,和新版本也有较大的不同,建议升级到最新版本的MySQL。(本书的操作例子是以MySQL 3.23.49为样本)我们先来了解授权表的结构。

  1)MySQL授权表的结构与内容:

mysql> desc user;
+-----------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-----------------+------+-----+---------+-------+
| Host | char(60) binary | | PRI | | |
| User | char(16) binary | | PRI | | |
| Password | char(16) binary | | | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Reload_priv | enum('N','Y') | | | N | |
| Shutdown_priv | enum('N','Y') | | | N | |
| Process_priv | enum('N','Y') | | | N | |
| File_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
+-----------------+-----------------+------+-----+---------+-------+
17 rows in set (0.01 sec)

  user表是5个授权表中最重要的一个,列出可以连接服务器的用户及其加密口令,并且它指定他们有哪种全局(超级用户)权限。在user表启用的任何权限均是全局权限,并适用于所有数据库。所以我们不能给任何用户访问mysql.user表的权限!

权限说明:

+-----------+-------------+-------------------+
| 权限指定符| 列名 |权限操作 |
+-----------+-------------+-------------------------------+
| Select | Select_priv | 允许对表的访问,
不对数据表进行访问的select语句不受影响,比如select 1+1|
+-----------+-------------+-------------------------------+
| Insert | Insert_priv | 允许对表用insert语句进行写入操作。 |
+-----------+-------------+-------------------------------+
| Update | Update_priv | 允许用update语句修改表中现有记录。 |
+-----------+-------------+-------------------------------+
| Delete | Delete_priv | 允许用delete语句删除表中现有记录。 |
+-----------+-------------+-------------------------------+
| Create | Create_priv | 允许建立新的数据库和表。 |
+-----------+-------------+-------------------------------+
| Drop | Drop_priv | 允许删除现有的数据库和表。 |
+-----------+-------------+-------------------------------+
| Index | Index_priv | 允许创建、修改或删除索引。 |
+-----------+-------------+-------------------------------+
| Alter | Alter_priv | 允许用alter语句修改表结构。 |
+-----------+-------------+-------------------------------+
| Grant | Grant_priv | 允许将自己拥有的权限授予其它用户,包括grant。 |
+-----------+-------------+-------------------------------+
| Reload | Reload | 允许重载授权表,刷新服务器等命令。 |
+-----------+-------------+-------------------------------+
| Shutdown | Shudown_priv| 允许用mysqladmin
shutdown命令关闭MySQL服务器。该权限比较危险, |
| | | 不应该随便授予。 |
+-----------+-------------+-------------------------------+
| Process | Process_priv| 允许查看和终止
MySQL服务器正在运行的线程(进程)以及正在执行的查询语句 |
| | | ,包括执行修改密码的查询语句。该权限比较危险,不应该随便授予。 |
+-----------+-------------+-------------------------------+
| File | File_priv | 允许从服务器上读全局可读文件和写文件。
该权限比较危险,不应该随便授予。|
+-----------+-------------+-------------------------------+

mysql> desc db;
+-----------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-----------------+------+-----+---------+-------+
| Host | char(60) binary | | PRI | | |
| Db | char(64) binary | | PRI | | |
| User | char(16) binary | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
+-----------------+-----------------+------+-----+---------+-------+
13 rows in set (0.01 sec)

  db表列出数据库,而用户有权限访问它们。在这里指定的权限适用于一个数据库中的所有表。

mysql> desc host;
+-----------------+-----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-----------------+------+-----+---------+-------+
| Host | char(60) binary | | PRI | | |
| Db | char(64) binary | | PRI | | |
| Select_priv | enum('N','Y') | | | N | |
| Insert_priv | enum('N','Y') | | | N | |
| Update_priv | enum('N','Y') | | | N | |
| Delete_priv | enum('N','Y') | | | N | |
| Create_priv | enum('N','Y') | | | N | |
| Drop_priv | enum('N','Y') | | | N | |
| Grant_priv | enum('N','Y') | | | N | |
| References_priv | enum('N','Y') | | | N | |
| Index_priv | enum('N','Y') | | | N | |
| Alter_priv | enum('N','Y') | | | N | |
+-----------------+-----------------+------+-----+---------+-------+
  host表与db表结合使用在一个较好层次上控制特定主机对数据库的访问权限,这可能比单独使用db好些。这个表不受GRANT和REVOKE语句的影响,所以,你可能发觉你根本不是用它。

mysql> desc tables_priv;
+-------------+-----------------------------+----+
| Field | Type | Null | Key | Default | Extra |
+-------------+-----------------------------+----+
| Host | char(60) binary | | PRI | | |
| Db | char(64) binary | | PRI | | |
| User | char(16) binary | | PRI | | |
| Table_name | char(60) binary | | PRI | | |
| Grantor | char(77) | | MUL | | |
| Timestamp | timestamp(14) | YES | | NULL | |
| Table_priv | set('Select','Insert', | | | | |
| | 'Update','Delete','Create', | | | | |
| | 'Drop','Grant','References',| | | | |
| | 'Index','Alter') | | | | |
| Column_priv | set('Select','Insert', | | | | |
| | 'Update','References') | | | | |
+-------------+-----------------------------+----+
8 rows in set (0.01 sec)

  tables_priv表指定表级权限。在这里指定的一个权限适用于一个表的所有列。

mysql> desc columns_priv;
+-------------+------------------------+------+---+
| Field | Type | Null | Key | Default | Extra |
+-------------+------------------------+------+---+
| Host | char(60) binary | | PRI | | |
| Db | char(64) binary | | PRI | | |
| User | char(16) binary | | PRI | | |
| Table_name | char(64) binary | | PRI | | |
| Column_name | char(64) binary | | PRI | | |
| Timestamp | timestamp(14) | YES | | NULL | |
| Column_priv | set('Select','Insert', | | | | |
| | 'Update','References') | | | | |
+-------------+------------------------+------+---+
7 rows in set (0.00 sec)

  columns_priv表指定列级权限。在这里指定的权限适用于一个表的特定列。

  2)MySQL授权表运行机制:

  MySQL的访问控制分两个步骤:

  a)服务器检查是否允许该用户连接。

  b)如果该用户有权连接,那么服务器还会检查它的每一个请求是否有足够的权限。比如:用户检索数据库中的一个表需要有这个数据库的select权限,用户删除数据库中的一个表需要有这个数据库的drop权限。

  授权表的user, db, host表使用这两个步骤,tables_priv和columns_priv表只使用第二步(检查请求)。每个授权表包含决定一个权限何时运用的范围列和决定授予哪种权限的权限列。

  范围列指定表中的权限何时运用。每个授权表条目包含User和Host列来指定权限何时运用于一个给定用户从给定主机的连接。其他表包含附加的范围列,如db表包含一个Db列指出权限运用于哪个数据库。类似地,tables_priv和columns_priv表包含范围字段,缩小范围到一个数据库中的特定表或一个表的特定列。

下面是user表的Host字段和User字段组合的一些例子:

+-----------------------------+--------+--------------+
| Host值 | User值 | 匹配的连接 |
+-----------------------------+--------+--------------+
| 'x.y.z' | 'test' | test用户只能从x.y.z连接数据库 |
+-----------------------------+--------+--------------+
| 'x.y.z' | '' | 任何用户可以从x.y.z连接数据库 |
+-----------------------------+--------+--------------+
| '%' | 'test' | test用户可以从任意主机连接数据库 |
+-----------------------------+--------+--------------+
| '' | '' | 任何用户可以从任意主机连接数据库 |
+-----------------------------+--------+--------------+
| '%.y.z' | 'test' | test用户可以从y.z域的任意主机连接数据库 |
+-----------------------------+--------+--------------+
| 'x.y.% ' | 'test' | test用户可以从x.y.net,
x.y.com, x.y.edu等主机连接数据库|
+-----------------------------+--------+--------------+
| '192.168.1.1' | 'test' | test用户可以从IP地址为
192.168.1.1的主机连接数据库 |
+-----------------------------+--------+--------------+
| '192.168.1.% ' | 'test' | test用户可以从C类子网
192.168.1中的任意主机连接数据库 |
+-----------------------------+--------+--------------+
| '192.168.1.0/255.255.255.0' | 'test' | 同上 |
+-----------------------------+--------+--------------+

  SQL的字符串通配符%表示匹配任意字符,可以是0个字符,通配符_表示匹配一个字符。

  权限列指出在范围列中指定的用户拥有何种权限。该表使用GRANT语句的权限名称。对于绝大多数在user、db和host表中的权限列的名称与GRANT语句中有明显的联系。如Select_priv对应于SELECT权限。

  3)授权表使用举例:

  grant用于给增加用户和创建权限,revoke用于删除用户权限。

  下面是一些用grant增加用户和创建权限的例子:

mysql> grant all privileges on *.* to
test@localhost identified by 'test' with grant option;

  这句增加一个本地具有所有权限的test用户(超级用户),密码是test。ON子句中的*.*意味着"所有数据库、所有表"。with grant option表示它具有grant权限。

mysql> grant select,insert,update,delete,create,drop
privileges on test.* to test1@'192.168.1.0/255.255.255.0' identified by 'test';

  这句是增加了一个test1用户,口令是test,但是它只能从C类子网192.168.1连接,对test库有select,insert,update,delete,create,drop操作权限。

  用grant语句创建权限是不需要再手工刷新授权表的,因为它已经自动刷新了。

  给用户创建权限还可以通过直接修改授权表:

mysql> insert into user values("localhost","test",password("test"),"Y","Y","Y","Y","Y","Y",
"Y","Y","Y","Y","Y","Y","Y","Y");
mysql> flush privileges;

  这两句和上面第一句grant的效果是一样的,也是增加了一个本地的test超级用户。我们看到用grant方便多了,而且还不需flush privileges:

mysql> insert into user (host,user,password) values
("192.168.1.0/255.255.255.0","test1",PASSWORD("test"));
mysql> insert into db values("192.168.1.0/255.255.255.0",
"test","test1","Y","Y","Y","Y","Y","Y","N","N","N","N")
mysql> flush privileges;

  这三句和上面第二句grant的效果也是一样的,也是增加了一个只能从C类子网192.168.1连接,对test库有select,insert,update,delete,create,drop操作权限的test1用户,口令是test。要取消一个用户的权限,使用revoke语句。revoke的语法非常类似于grant语句,除了to用from取代并且没有identified by和with grant option子句,下面是用revoke删除用户权限的例子:

mysql> revoke all on test.* from test1@'192.168.1.0/255.255.255.0';

  这句revoke就撤消了上面第二句grant创建的权限,但是test1用户并没有被删除,必须手工从user表删除:

mysql> delete from user where user='test1';
mysql> flush privileges;


  这样,test1用户就彻底删除了。


  这些只是MySQL授权表的简单使用,更多详细的资料请见MySQL提供的手册。

3、编程需要注意的一些问题:

  不管是用哪种程序语言写连接MySQL数据库的程序,有一条准则是永远不要相信用户提交的数据!

  对于数字字段,我们要使用查询语句:SELECT * FROM table WHERE ID='234',不要使用SELECT * FROM table WHERE ID=234这样的查询语句。MySQL会自动把字串转换为数字字符并且去除非数字字符。如果用户提交的数据经过了mysql_escape_string处理,这样我们就可以完全杜绝了SQL inject攻击。

各种编程语言该注意的问题:

  1)所有Web程序:

    a)尝试在Web表单输入单引号和双引号来测试可能出现的错误,并找出原因所在。

    b)修改URL参数带的%22 ('"'), %23 ('#'), 和 %27 (''')。

    c)对于数字字段的变量,我们的应用程序必须进行严格的检查,否则是非常危险的。

    d)检查用户提交的数据是否超过字段的长度。

    e)不要给自己程序连接数据库的用户过多的访问权限。

  2)PHP:

    a)检查用户提交的数据在查询之前是否经过addslashes处理,在PHP 4.0.3以后提供了基于MySQL C API的函数mysql_escape_string()。

  3)MySQL C API:

    a)检查查询字串是否用了mysql_escape_string() API调用。

  4)MySQL++:

    a)检查查询字串是否用了escape和quote处理。

  5)Perl DBI:

    a)检查查询字串是否用了quote()方法。

  6)Java JDBC:

    a)检查查询字串是否用了PreparedStatement对象。

4、一些小窍门

  1)如果不慎忘记了MySQL的root密码,我们可以在启动MySQL服务器时加上参数--skip-grant-tables来跳过授权表的验证 (./safe_mysqld --skip-grant-tables &),这样我们就可以直接登陆MySQL服务器,然后再修改root用户的口令,重启MySQL就可以用新口令登陆了。


  2)启动MySQL服务器时加上--skip-show-database使一般数据库用户不能浏览其它数据库。

  3)启动MySQL服务器时加上--chroot=path参数,让mysqld守护进程运行在chroot环境中。这样SQL语句LOAD DATA INFILE和SELECT ... INTO OUTFILE就限定在chroot_path下读写文件了。这里有一点要注意,MySQL启动后会建立一个mysql.sock文件,默认是在/tmp目录下。使用了chroot后,MySQL会在chroot_path/tmp去建立mysql.sock文件,如果没有chroot_path/tmp目录或启动MySQL的用户没有这个目录写权限就不能建立mysql.sock文件,MySQL会启动失败。比如我们加了--chroot=/usr/local/mysql/启动参数,那么最好建立一个启动MySQL的用户能写的

/usr/local/mysql/tmp目录,当然我们也可以用--socket=path来指定mysql.sock文件的路径,但这个path一定要在chroot_path里面。

  4)启动MySQL服务器时加上--log-slow-queries[=file]参数,这样mysqld会把SQL命令执行时间超过long_query_time的写入file文件。如果没有指定=file,mysqld默认会写到数据目录下的hostname-slow.log。如果只指定了filename,没有指定路径,那么mysqld也会把filename写到数据目录下。我们通过这个日志文件可以找出执行时间超长的查询语句,然后尽可能的优化它减轻MySQL服务器的负担。

  5)如果我们只需本机使用MySQL服务,那么我们还可以加上--skip-networking启动参数使MySQL不监听任何TCP/IP连接,增加安全性。(非常推荐)

  6)MySQL的更多mysqld启动选项请见MySQL手册4.16.4 mysqld Command-line Options。

304 条评论:

«最旧   ‹较早   201 – 304(共 304 个)
モバゲー 说...

誰でも知ってるモバゲーは人気SNS!当然出合いを求めてる人も多い!そこで男女が出合えるコミュニティーが誕生!ここで友達、恋人が簡単にできちゃいますよ

天皇賞 春 说...

天皇賞 春 2010 最強 予想 で確勝買い目公開中!衝撃の情報を手に入れろ

友達 说...

OLしてます☆気軽にメールくれたらほんと嬉しいです♪仲良くなったら遊びにいきたいなぁ☆ hello-kxt@docomo.ne.jp

モバゲー 说...

モバゲーで探せるご近所掲示板で簡単であい!ゲーム攻略やおススメ小説情報もここでGET!ここでしか見れない裏技も公開中

スタービーチ 说...

スタービーチは誰にもでも幸福をもたらしてくれる。ここでだからこそ見つかるであいはきっと一生の思い出に変わります…そんな体験をあなたに。思う存分スタビをご堪能してください

NHKマイルカップ 说...

2010年NHKマイルカップの鍵を握る馬の、厳選裏情報を特別公開!!情報を元に当たり馬券の量産をしよう

スタービーチ 说...

一時代を築いたスタービーチは閉鎖になってしまいましたが、もう一度楽しい思いをしたい、もう一度遊びたいと思う有志により再度復活しました。本家以上に簡単に会えて楽しい思いを約束します

NHKマイルC 说...

NHKマイルC 2010 予想、オッズ、厳選買い目は?今年の狙うべきポイントを限定公開!

友達 说...

彼女募集中の人やフリーの人は絶対絡んでください☆ゆきとメールしよ♪ chu-chu-chulip@docomo.ne.jp

モバゲー 说...

日本最大、モバゲーより面白いであい系スタービーチがついに復活、進化を遂げた新生スタビをやってみませんか?趣味の合う理想のパートナー探しの手助け、合コンパーティー等も随時開催しています。楽しかった頃のスタビで遊んでみよう

スタービーチ 说...

ついに帰ってきたドキドキスタービーチで素敵な恋をGETしよう♪会員数も50万人突破で以前よりも直ぐに理想の相手にであえちゃう!!恋人募集中!!友達仲間を増やしたい方必見!!素敵なであいをお楽しみ下さい☆

Hチェッカー 说...

簡単な設問に答えるだけであなたの隠されたH度数がわかっちゃうHチェッカー!あの人のムッツリ度もバレちゃう診断を今すぐ試してみよう

ツイッター 说...

今話題のツイッター、mixiやモバゲーなんか目じゃない。規制が無いに等しいから、今がチャンスなんです!!ホンマ体力が持たない位の入れ喰い状態が続いて、ツイッターを放置してた事を後悔してます

ヴィクトリアマイル 2010 说...

ヴィクトリアマイル 2010 予想、オッズ、厳選買い目は?人気が平然と馬券に絡む理由とは

恋人 说...

ちょっとこんなところに書き込むのはちょっとおかしいんですけど…GWは色々楽しめました??私は結婚しているんですけどどこにも連れて行ってもらえませんでした…旦那は友達(?)とマカオに遊びに行ってます…怪しいですよね…私もスカッとパーっとしたいです♪良かったらメールしてくれる人居ませんか? sara-sarar@docomo.ne.jp

ヴィクトリアマイル 说...

ヴィクトリアマイル 2010 予想、オッズ、厳選買い目は?今年の波乱をズバリ!確勝買い目公開中!大穴狙いのギャンブラー必見激アツ情報

モバゲー 说...

モバゲータウンでであいを求めているなら当サイトへ!当コミュニティサイトは本家のモバゲータウンよりはるかにであいやすい、まさにユーザー様の為のサイトとなっております。であいをお楽しみください

SM度チェッカー 说...

飲み会やコンパで必須のSM度チェッカー、お手軽SM度診断!実は真面目な娘程、間逆なドS女王様、遊んでそうな娘はドMな奴隷願望が有るとか。診断結果を元に隠れた性癖を暴いて盛り上がろう

オークス 说...

オークス 2010 予想 オッズ 出走馬 枠順で厳選買い目は?今年の波乱をズバリ!確勝買い目公開中!優駿牝馬はこれでもらったも同然

オークス 2010 说...

オークス 2010 予想 オッズ 出走馬 枠順で万馬券も夢じゃない?人気が平然と馬券に絡む理由とは!?今年の優駿牝馬は荒れるのか

友達 说...

もぅすぐ夏ですね☆一緒に海に行ったりしたいなヾ(>▽<)o himawari-yumeland@docomo.ne.jp

トゥイッター 说...

最近、話題のトゥイッターから始まる理想の関係…理想の恋をこの場で見つけていきませんか

スタービーチ 说...

スタービーチは誰にでも出逢いという奇跡をもたらしてくれる。スタビで理想の関係作りしてみませんか

名言チェッカー 说...

自分の名言を一つは残しませんか、しかし考えると意外と難しい。そんな時に名言チェッカーならあなたの本当の性格を見抜けちゃいます。世界の偉人達が残した名言にはどことなく重みがあるものです

日本ダービー 说...

第77回 日本ダービー 2010 予想、オッズ、厳選買い目は?今年の波乱をズバリ!確勝買い目公開中!結果を出す前に結果がまるわかり

スタービーチ 说...

スタービーチから始まる新たな恋をしませんか?スタビ掲示板を利用して新たな恋をしていきましょう

日本ダービー 说...

第77回 日本ダービー 2010 予想、オッズ、厳選買い目は?人気が平然と馬券に絡む理由とは!?見事に展開を読んで結果を的中させる

出会い 说...

エロセレブとの出会いを完全無料でご提供します。逆援助で高額報酬をゲットしよう

モバゲー 说...

モバゲータウンでいろんな異性と交流を深めあいませんか。異性に対して経験がない方でも簡単にお楽しみいただける、シンプルかつ効率的に優れているサイトとなっています

ツイッター 说...

全世界で大ブームを巻き起こしているツイッター!!それを利用して今まで経験したことがないような恋を経験してみませんか

モテる度チェッカー 说...

モテる度チェッカーが今回リニューアルしました!!今迄と違い診断内容にモテない人と診断された方を救済する、速攻効果が出るモテる為のアドバイスが付きます、またモテる診断された人には、より一層のモテ・テクニックを手に入れませんか

安田記念 说...

第60回 安田記念 2010 予想 オッズ 出走馬 枠順で万馬券をズバリ的中!絶対なるデータが確実に当てるための秘訣

ツイッター 说...

今話題のツイッターで理想の関係を築きませんか。ツイッターで自分の出来事をリアルタイムで表現して相手にその想いを伝えましょう

安田記念 说...

第60回 安田記念 2010 予想 オッズから展開と結果をズバリ当てる!出走馬、枠順など全てを考慮にいれた緻密なデータをもとに検証

友達 说...

気楽に遊べる人募集です♪まずはお友達からヨロシクね!! freedum@docomo.ne.jp

スタービーチ 说...

スタービーチで素敵な愛を掴みませんか?愛に対する理想や想いを現実にしていきましょう

モバゲー 说...

モバゲータウンでは今までとは一味違う出逢いを体験する事ができるのです。これまで良い出逢いがなかった人にはもってこいの無料登録型の掲示板です

ゲーマーチェッカー 说...

ゲーマー達のステイタス、ゲーマーチェッカーであなたのゲーマー度数を測定!!測定結果を元に自分と同レベルのオンライン対戦も出来ます。ゲームが得意な人もそうでない人もどちらも楽しめますよ

スタービーチ 说...

日本最大級のであいコミュニティ「スタービーチ」で恋人を探しませんか。素敵なであいを経験して理想の人と楽しい思い出を作りましょう

スタービーチ 说...

スタービーチが完全リニューアルして復活しました!!あの伝説級のであい系サイトが満を持して再降臨。煌めくような今この瞬間にあなたの胸にもときめきをお届けします

スタービーチ 说...

であい系の元祖はやっぱりスタービーチ!初めてであい系にチャレンジする娘も多いここならゲット率は最強

モバゲー 说...

モバゲータウンでであいを楽しみませんか。気軽に誰でも楽しめるであいサイトとなっています。こんな事をしてみたいなど希望の事が実現できる、そんなであいコミュニティサイトです

gree 说...

greeで楽しめちゃうであい掲示板実現!ここで楽しみませんか?いろんなであいをここで見ていきましょう

Hチェッカー 说...

簡単な設問に答えるだけで、自分の隠されたH度数がわかっちゃうHチェッカー!まさかの結果が待ってるかも。気になる人に上手く使えば、即美味しい展開に持ち込めるかも

ツイッター 说...

誰もが知ってるツイッターがあなたにであいを!?ツイッター利用者増加=であえる確立急増中!!相性ぴったりの方とお付き合いしてみてはいかがでしょうか

不倫 说...

あなたの人生が大きく変わります!薔薇色の不倫であなたの望む不倫体験ができる!割り切り~契約型など、あなたの理想を現実に変える!当サイト独自システムだから誰にもばれずに、安心してご利用頂けます

宝塚記念 说...

第51回 宝塚記念 2010 予想データを完全攻略!出走馬 枠順などからはじきだすデータは文句なし!これで平成22年の宝塚記念はもらったも同然!波乱の展開もあり

スタビ 说...

スタビでの出合いは最高の思い出になる事は間違いありません。運命の人に出逢うまで完全サポートいたしますのでどなたでも気軽に利用する事ができます

SM度チェッカー 说...

お酒の席には必須のSM度チェッカー、実は真面目な娘程、間逆なドS女王様、遊んでそうな娘はドMな奴隷願望が有るとか。お手軽SM度診断結果を元に隠れた性癖を暴いて楽しもう

宝塚記念 2010 说...

宝塚記念 2010 予想データから完全攻略!出走馬 枠順などからはじきだすデータは最強!これで平成22年の宝塚記念はもらったも同然!波乱の展開もあり

ツイッター 说...

ツイッターから始まる人間関係!今話題のツイッターなら新しい出逢いがすぐに見つかります

メル友 说...

全国からメル友募集中の女の子達が、あなたとのであいを待ってるよ!無料エントリーで自由な恋愛を楽しんじゃお

スタービーチ 说...

スタービーチがどこのサイトよりも遊べる確率は高いんです。登録無料で新しい恋をGETしてみませんか

出会い 说...

出会い系サイトで逆援助生活をしよう!エッチなセレブ女性たちが集まっています

モバゲー 说...

モバゲーを使ってご近所さんと知り合えちゃう!新感覚のコミュニティサービスを利用してみよう

玉の輿度チェッカー 说...

今の時代簡単に金持ちになる方法は中々無いけど、可能性は誰しも秘めてます!!そう一番手っ取り早いのは玉の輿です。この玉の輿度チェッカーをキッカケに金持ちになった方が、意外と多いのです。是非あなたも一段高みを目指しませんか

出会い 说...

一流セレブたちが出会いを求めて集まっています。彼女たちからの逆援助でリッチな生活を楽しみましょう

出会い系 说...

セレブの為の出会い系、セレブの雫では女性会員数も増え、男性会員様が不足するという状態となっております。そこで先着順に、男性会員様を募集しております

スタービーチ 说...

日本で一番会員数が多いのはやっぱりスタービーチ!若い娘から熟女まで好みのご近所さんがすぐに見つかる☆無料期間中に試してみませんか

出会い 说...

お金持ちの女性と出会い、彼女たちとHするだけで謝礼がもらえるサイトをご存じですか?高収入の女性ほど、お金を使っていろいろな男性と遊んでいます

モバゲー 说...

流行のモバゲーで友達たくさん!運命の出会いがあるかも!?まだ初めていない人も無料ゲームで遊ぼう

Hチェッカー 说...

みんなでワイワイやるならHチェッカー!!これ一つ有れば偶然を装いつつ、気になる人の隠れエッチ度も分ちゃいます。お近づきアドバイスも付いてるから、これを機会に親密になろう

モニター 说...

副業 在宅 でも出来る モニターアルバイト 募集!数ある副業の中、馬券モニター程稼げる副業はない!初心者の方でも簡単にできるのが最大の特権です

スタービーチ 说...

スタービーチで幸せ掴みませんか?楽しめる出.会.いをしたいならここしかない!今までとは一味もふた味も違う出.会.いを体験していきましょう

逆援助 说...

女の子に逆援助してほしい、女の子と真剣にお付き合いしたい、複数プレイをやってみたい、童貞・処女を卒業したいのなら新感覚コミュニティ・ラブフリーでメル友を探そう

モバゲー 说...

大人気モバゲーが遂に出合いの場所に!モバゲーだから気軽に出会える!出合いに縁がなかった方も是非ご利用くださいませ

スタービーチ 说...

スタービーチは誰にでも出逢いという奇跡をもたらしてくれる。スタビで理想の関係作りしてみませんか

井の中のカ○ズ君 说...

流行りの検索ワードの番組、井の中のカ○ズ君で紹介された在宅ホスト倶楽部っていうワードで簡単にお金稼ぎました。携帯からgoogle検索にアクセスして在宅ホスト倶楽部って検索してみてください☆男性の方なら家でいるだけで1日2万円ぐらい稼げちゃうから本当に楽ちんだよ。誰か一緒にこの仕事で盛り上がろう

モバゲー 说...

モバゲーでは友達から恋愛まで、様々な出 会いを探せる無料のコミュニティサイトです。常時サポートスタッフが掲示板をチェック、サクラや業者を排除しておりますので安心してご利用いただけます

スタービーチ 说...

日本最大級の出会いコミュニティ「スタービーチ」で探しませんか。素敵な出会いを経験して理想の人と楽しい思い出を作りましょう

スタービーチ 说...

スタービーチなら好みの女性がきっと見つかる!会員数ナンバーワンのスタビでご近所さんを探そう

スタービーチ 说...

日本最大級の出会いコミュニティ「スタービーチ」で探しませんか。素敵な出会いを経験して理想の人と楽しい思い出を作りましょう

モバゲー 说...

出会い専門のモバゲーSNSが誕生!メル友、恋人、セフレetc…貴方の理想に合った関係になれちゃいます。素敵な人と過ごしたいならココで見つけてみませんか

玉の輿度チェッカー 说...

世の中手っ取り早く、簡単に金持ちに為ったもん勝ち!!そのためのツールが玉の輿度チェッカーです。心理カウンセラーを雇い、一人一人どうすれば人に好かれるか、最終的に結婚へのプロセスに持っていくかのアドバイスを期間限定で無料サービス中です。上手く玉の輿に乗っければ儲けもんです、一度試してみよう

スタービーチ 说...

最近スタービーチが女の子のコミュニティーサイトで話題中みたい!!夏休み目前ってのもあり登録比率に女性の数が半端ね~、やっぱり夏に一人は辛すぎや~とか思ってたら、暇な娘多すぎ・彼女簡単に出来ちゃった

スタービーチ 说...

出 会いを探しているのなら会員数ナンバーワンのスタービーチ!開放的な夏休みはここで新しい出 会いを見つけよう!

モテる度チェッカー 说...

夏休み目前になり、一人で大事な休みを過ごすのは誰でもイヤと違う?そんな時にモテる度チェッカーで簡単診断、この夏アナタも彼氏・彼女と過ごすための貴重なアドバイスが手に入りますよ、もうアドバイスに対しての感謝のメールが毎日!!アナタもこの夏を乗り遅れるな

グリー 说...

グリー発信!!出会い専門SNS誕生、今話題のgreeから出会いをGETしよう。greeにしかできない事が盛りだくさん!!気軽にメールするだけで出会えるサイト・・・貴方の理想の異性と出会いませんか

モバゲー 说...

モバゲー専門の出会い掲示板が誕生!出会いを求めている方にはオススメのサイトです。幸せな時間を過ごしたい方、淋しい思いをしたくない方はぜひご覧ください

逆援助 说...

逆援助でお金持ちになる事が可能なこの時代。セックスのテクニックさえあれば簡単に大金をゲットする事ができます

スタビ 说...

スタビでできる新しい恋・・・素敵な出合いをするならスタビから始めてみませんか?女性に面識のない方でもサポート機能があるから安心してご利用できます。是非一度利用してみて下さい

モバゲー 说...

モバゲー出会い掲示板は色々な種類の出会いを扱っております。登録無料で新しい恋の始まる事は確実です

ツイッター 说...

今話題沸騰中!?新感覚出会いをツイッターで体験しませんか?リアルタイムで相手が何をしてるか分かるから、理想の人かどうかが簡単に分かる。貴方の理想の人をGETしませんか

mコミュ 说...

素敵な出 会 いで愛を育む♪理想の人と楽しめる関係を築きませんか?mコミュでしか味わえない幸せを掴みましょう

スタービーチ 说...

スタービーチで会える!?理想の異性をGETしよう☆素敵な出会いばかりだから求めている関係も作りやすい!!貴方が求めているのはどういった恋ですか?

名言チェッカー 说...

他の人が言ってる名言や格言って良い事言ってるな~とか思ってる方、名言チェッカーで今日から自分に相応しい言葉を見つけませんか!!これでどんな人にも一目置かれる存在に為れますよ

mixi 说...

mixiをも凌駕する出会い率!!出会いをするならここしかない♪mixiより出会えてしまうこのサイト。一度ハマれば辞めれません。スタービーチで素敵な出会いをしちゃいましょう

モバゲー 说...

モバゲーで出会いをすれば楽しい事は間違いありません。暑いからこそ出会いを楽しむべきなのです。登録無料で簡単に利用可能!

モバゲータウン 说...

モバゲータウンでは恋愛から出合いまでのキッカケをつかめる無料のコミュニティサイトです。常時サポートスタッフが掲示板をチェック、サクラや業者を排除しておりますので安心してご利用いただけます

グリー 说...

グリーで提供しているのは他社にはできない出 会 い。質の悪い出 会 いよりも質の良いものを提供しております。体験してもらえれば違いは一目瞭然

スタビ 说...

スタビが今一番アツイのはご存じでしょうか?夏休みで出会いを探している娘とすぐに会えちゃうんです。登録無料でここまで出会える所は他には存在しません。今登録して良いパートナーに巡り合おう

スタービーチ 说...

出会いのシーズン、夏到来!スタービーチでご近所さんと知り合っちゃおう!ひと夏の体験も女の子は求めている

モバゲー 说...

モバゲーでついに出会いができる!?楽しめる出会い、求めていた出会いはココから始まる。素敵な出会いでまずは関係づくりwしていきましょう

gree 说...

greeで素敵な時間を過ごしたい・・・そんな願望を叶えてくれるサイト誕生!!今までにないドキドキ感と興奮をこのグリーで楽しみましょう

スタビ 说...

スタビで出会いができる!!いつでもどこでも出会いが可能なスタービーチで最高の出会いをしてみませんか

mコミュ 说...

簡単な出逢いはココでできる☆素敵な出逢いをmコミュで体験していきませんか?楽しめる出逢いを経験するならここしかない!!まずはお試しを

ツイッター 说...

新時代突入!ツイッターで始まる出逢い…ここでしかできない出逢いが新しい風を巻き起こす!!素敵な巡りあわせを体験していこう!

SMチェッカー 说...

あなたの秘められたSM度がわかるSMチェッカー!簡単な質問に答えるだけで自分の隠された部分が分かります!みんなで試してみよう

モバゲー 说...

今やモバゲーは押しも押されもせぬ人気SNS!当然出 会いを求めてる人も多い!そこで男女が出 逢えるコミュニティーが誕生!ここなら友達、恋人が簡単にできちゃいますよ

モバゲー 说...

もう夏休みも終わりに近づき、この夏最後の思い出を作りたいと焦ってる方が、モバゲーのコミュニティーに書かれてましたよ!!折角なんで夏の思い出作りに協力して自分も美味しい思いをしてみるのはどうですか?大手スポンサーサイトが付いてるので全部タダですよ

グリー 说...

最近はどこのSNSサイトも規制ばっかりで、ちょっと出 合いに関して書き込みするとアク禁食らうけど、夏休み終盤に差し掛かり色々なサイトを調べた結果、グリーだけはどうも規制が緩んでるみたいです。今がチャンスの時期ですよ

ツイッター 说...

ツイッターで出 合 いを求めるのです。気の合う異性と交流して楽しいひと時をお過ごしください。登録無料で使えるので気軽さは100点満点!

mコミュ 说...

mコミュでならご近所さんと出会える確率99%!友達や恋人を探してる人はここで見つけてみませんか

モテる度チェッカー 说...

夏休みももう終わりに近づきこのまま一人は寂しいのちがう?そこでモテる度チェッカーを使い自分がなぜモテないか診断してもらいましょう。10~20代の女性アドバイザーが多数在籍してるので、アドバイスを参考に夏終盤を楽しもう

«最旧 ‹较早   201 – 304(共 304 个)   较新› 最新»