Search This Blog

2014-04-20

在GNU/Linux设置MySQL开机启动失败

在openSUSE 12.3,使用的是自带的MariaDB,本机测试环境用到了,每次重启机器以后再运行Web服务器都得手动开一下,麻烦。设置一下开机启动。原来以为运行一下"chkconfig mysql on"就好了,可是"chkconfig --list | grep mysql"的时候发现还不行,超出预期,开始调试:
> strace -fx -o strace-chkconfig-mysql-on.txt chkconfig mysql on

less strace-chkconfig-mysql-on.txt ,部分内容如下:
Pre[-]
6879  stat("///usr/lib/systemd/system/mysql.service", 0x1e47138) = -1 ENOENT (No such file or directory)
6879  stat("///lib/systemd/system/mysql.service", 0x1e47138) = -1 ENOENT (No such file or directory)
6879  stat("///run/systemd/system/mysql.service", 0x1e47138) = -1 ENOENT (No such file or directory)
6879  stat("///etc/systemd/system/mysql.service", 0x1e47138) = -1 ENOENT (No such file or directory)
...
6880  execve("/sbin/insserv", ["/sbin/insserv", "-p", "//etc/init.d", "mysql"], [/* 15 vars */]) = 0
...
6880  stat("mysql", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
6880  openat(AT_FDCWD, "mysql/rc0.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
6880  openat(AT_FDCWD, "mysql/rc1.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
6880  openat(AT_FDCWD, "mysql/rc2.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
6880  openat(AT_FDCWD, "mysql/rc3.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
6880  openat(AT_FDCWD, "mysql/rc4.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
6880  openat(AT_FDCWD, "mysql/rc5.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
6880  openat(AT_FDCWD, "mysql/rc6.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
6880  openat(AT_FDCWD, "mysql/rcS.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
6880  openat(AT_FDCWD, "mysql/boot.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)

当前用户目录下有一个mysql目录,进到test目录再试试:
> sudo strace -fx -o strace-chkconfig-mysql-on.txt chkconfig mysql on
> chkconfig --list | grep mysql
mysql 0:off 1:off 2:off 3:on 4:off 5:on 6:off
真好了。
查看新的strace-chkconfig-mysql-on.txt,部分内容如下:
6948  stat("mysql", 0xba6138)           = -1 ENOENT (No such file or directory)
...
6948  symlink("../mysql", "//etc/init.d/rc3.d/S50mysql") = 0
6948  symlink("../mysql", "//etc/init.d/rc5.d/S50mysql") = 0
6948  symlink("../mysql", "//etc/init.d/rc3.d/K50mysql") = 0
6948  symlink("../mysql", "//etc/init.d/rc5.d/K50mysql") = 0

"../mysql"需要确认一下:
> find /etc/init.d/ -iname "*mysql*" -exec ls -l {} +
-rwxr-xr-x 1 root root 18865 Sep 23 19:12 /etc/init.d/mysql
lrwxrwxrwx 1 root root     8 Jan 20 11:48 /etc/init.d/rc3.d/K50mysql -> ../mysql
lrwxrwxrwx 1 root root     8 Jan 20 11:48 /etc/init.d/rc3.d/S50mysql -> ../mysql
lrwxrwxrwx 1 root root     8 Jan 20 11:48 /etc/init.d/rc5.d/K50mysql -> ../mysql
lrwxrwxrwx 1 root root     8 Jan 20 11:48 /etc/init.d/rc5.d/S50mysql -> ../mysql
确实没问题。

> mv mysql/ mysql.del
用户目录下的mysql目录没啥有用的东西,不知道哪个进程生成的。

=文章版本=

20140419

No comments:

Post a Comment