更改MySQL tmpdir杀死了InnoDB的function

我有一个查询失败,因为我没有足够的临时空间。 于是,我在/data/tmp的另一个分区上创build了一个目录,将这个目录chmod编辑为777 ,并更新my.cnf来读取: tmpdir = /data/tmp 。 我能够顺利重启守护进程,并且在日志中没有报告错误。 这是重新启动守护进程时的所有日志显示:

 Mar 17 16:45:05 Casala-Dev-LX01 /etc/mysql/debian-start[3166]: Upgrading MySQL tables if necessary. Mar 17 16:45:05 Casala-Dev-LX01 /etc/mysql/debian-start[3169]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored Mar 17 16:45:05 Casala-Dev-LX01 /etc/mysql/debian-start[3169]: Looking for 'mysql' as: /usr/bin/mysql Mar 17 16:45:05 Casala-Dev-LX01 /etc/mysql/debian-start[3169]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck Mar 17 16:45:05 Casala-Dev-LX01 /etc/mysql/debian-start[3169]: This installation of MySQL is already upgraded to 5.1.41, use --force if you still need to run mysql_upgrade Mar 17 16:45:05 Casala-Dev-LX01 /etc/mysql/debian-start[3176]: Checking for insecure root accounts. Mar 17 16:45:05 Casala-Dev-LX01 /etc/mysql/debian-start[3180]: Triggering myisam-recover for all MyISAM tables Mar 17 16:45:05 Casala-Dev-LX01 kernel: [93900.335357] type=1503 audit(1300380305.417:117): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_1.MYI" Mar 17 16:45:05 Casala-Dev-LX01 kernel: [93900.335453] type=1503 audit(1300380305.417:118): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_1.MYI" Mar 17 16:45:05 Casala-Dev-LX01 kernel: [93900.335553] type=1503 audit(1300380305.417:119): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_1.MYI" Mar 17 16:45:05 Casala-Dev-LX01 kernel: [93900.335591] type=1503 audit(1300380305.417:120): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_1.MYI" Mar 17 16:45:05 Casala-Dev-LX01 kernel: [93900.335628] type=1503 audit(1300380305.417:121): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_1.MYI" Mar 17 16:45:05 Casala-Dev-LX01 kernel: [93900.335731] type=1503 audit(1300380305.417:122): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_1.MYI" Mar 17 16:45:05 Casala-Dev-LX01 kernel: [93900.335893] type=1503 audit(1300380305.417:123): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_1.MYI" Mar 17 16:55:32 Casala-Dev-LX01 kernel: [94526.730200] type=1503 audit(1300380932.157:125): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_0.MYI" Mar 17 16:55:32 Casala-Dev-LX01 kernel: [94526.753333] type=1503 audit(1300380932.177:126): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_0.MYI" Mar 17 16:55:40 Casala-Dev-LX01 kernel: [94534.677693] type=1503 audit(1300380940.107:127): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_0.MYI" Mar 17 16:55:40 Casala-Dev-LX01 kernel: [94534.837802] type=1503 audit(1300380940.267:128): operation="mknod" pid=3164 parent=1 profile="/usr/sbin/mysqld" requested_mask="c::" denied_mask="c::" fsuid=104 ouid=104 name="/data/tmp/#sql_c54_0.MYI" 

但是,当我login到数据库时,InnoDB表不起作用。 我不断收到错误, ERROR 1286 (42000): Unknown table engine 'InnoDB' 。 MyISAM表工作得很好。 我在这里读到这可能是一个与innodb_buffer_pool_size指定的大小有关的innodb_buffer_pool_size ,所以我尝试了一个范围的大小,一直到32M 。 不pipe这个设置如何,守护进程继续正常启动,InnoDB引擎默默地失败(通过SHOW ENGINES;确认SHOW ENGINES; ),我继续变得更加沮丧。

扩展DerfK的apparmorbuild议,检查你的apparmorconfiguration

Ubuntu的:

 /etc/apparmor.d/usr.bin.mysqld 

 /data/tmp/ r, /data/tmp/* rw 

到目录列表。