Bug #29727 | Unable to start MySQL after install from RPM | ||
---|---|---|---|
Submitted: | 11 Jul 2007 17:24 | Modified: | 12 Mar 2008 19:42 |
Reporter: | Gerry Reno | Email Updates: | |
Status: | Duplicate | Impact on me: | |
Category: | MySQL Server: Installing | Severity: | S1 (Critical) |
Version: | 5.1.20-beta | OS: | Linux (Fedora 7) |
Assigned to: | CPU Architecture: | Any |
[11 Jul 2007 17:24]
Gerry Reno
[11 Jul 2007 18:48]
Gerry Reno
Applied patch from bug 29634 and it stops the 'touch' and 'chown' errors from mysqld_safe but MySQL still will not start. [root@grp-01-50-51 tmp]# mysqld_safe 070711 14:37:43 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql <hit Ctrl-Z here> [1]+ Stopped mysqld_safe [root@grp-01-50-51 tmp]# [root@grp-01-50-51 tmp]# ps -e | grep mysql 7658 pts/1 00:00:00 mysqld_safe 7690 pts/1 00:00:00 mysqld [root@grp-01-50-51 tmp]# service mysql status MySQL running (7690) [ OK ] [root@grp-01-50-51 tmp]# service mysql stop Shutting down MySQL. [ OK ] [root@grp-01-50-51 tmp]# [root@grp-01-50-51 tmp]# service mysql start Starting MySQL.../etc/init.d/mysql: line 159: kill: (7798) - No such process [FAILED] [root@grp-01-50-51 tmp]# something is preventing MySQL from starting. In /etc/init.d/mysql, it is dying in function wait_for_pid(): wait_for_pid () { i=0 while test $i -ne $service_startup_timeout ; do sleep 1 case "$1" in 'created') test -s $pid_file && i='' && break kill -0 $2 || break # if the program goes away, stop waiting <--- DIES HERE ;; 'removed') test ! -s $pid_file && i='' && break ;; *) echo "wait_for_pid () usage: wait_for_pid created|removed" exit 1 ;; esac echo $echo_n ".$echo_c" i=`expr $i + 1` done if test -z "$i" ; then log_success_msg return 0 else log_failure_msg return 1 fi }
[11 Jul 2007 19:11]
Gerry Reno
Ok I tried starting MySQL using mysqld_safe with the exact same arguments that the init script is using and it starts fine: [root@grp-01-50-51 tmp]# /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/grp-01-50-51.pid 070711 15:01:02 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql <check in another terminal and yes mysql is running> So why is the pid disappearing for the init script? When it fails I check mysql: [root@grp-01-50-51 tmp]# ps -e | grep mysql 7658 pts/1 00:00:00 mysqld_safe 7690 pts/1 00:00:00 mysqld <defunct> and yes the pid is dead. So I can start MySQL successfully from the command line but I cannot start it using the 'service' init script. So now I'm really confused. I've backup out the install on the this server and reinstalled everything and still I see these errors.
[11 Jul 2007 19:17]
Gerry Reno
I also 'su - mysql' and tried running mysqld_safe with the same arguments as the init script and it too runs fine.
[11 Jul 2007 19:47]
Gerry Reno
Put some 'set -x' in the init 'mysql' script: [root@grp-01-50-51 tmp]# service mysql start Starting MySQL+ /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/grp-01-50-51.pid + ps -e + grep mysql 8807 pts/1 00:00:00 mysql 8814 pts/1 00:00:00 mysqld_safe 8816 pts/1 00:00:00 mysql 8820 pts/1 00:00:00 mysqld_safe + wait_for_pid created 8814 + i=0 + test 0 -ne 900 + sleep 1 070711 15:43:36 mysqld_safe Starting mysqld daemon with databases from /var/lib/mysql + case "$1" in + test -s /var/lib/mysql/grp-01-50-51.pid + kill -0 8814 + echo -n . .++ expr 0 + 1 + i=1 + test 1 -ne 900 + sleep 1 + case "$1" in + test -s /var/lib/mysql/grp-01-50-51.pid + kill -0 8814 + echo -n . .++ expr 1 + 1 + i=2 + test 2 -ne 900 + sleep 1 070711 15:43:38 mysqld_safe mysqld from pid file /var/lib/mysql/grp-01-50-51.pid ended + case "$1" in + test -s /var/lib/mysql/grp-01-50-51.pid + kill -0 8814 /etc/init.d/mysql: line 159: kill: (8814) - No such process + break + test -z 2 + log_failure_msg + /etc/redhat-lsb/lsb_log_message failure [FAILED] + return 1 + return_value=1 + set +x Hope this helps.
[11 Jul 2007 19:52]
Gerry Reno
And here is the same output from a working server: [root@grp-01-50-50 mysql]# service mysql start Starting MySQL+ /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/lib/mysql/grp-01-50-50.pid + ps -e + grep mysql 7244 pts/2 00:00:00 mysql 7251 pts/2 00:00:00 mysqld_safe 7252 pts/2 00:00:00 mysqld_safe <defunct> + wait_for_pid created 7251 + i=0 + test 0 -ne 900 + sleep 1 + case "$1" in + test -s /var/lib/mysql/grp-01-50-50.pid + i= + break + test -z '' + log_success_msg + /etc/redhat-lsb/lsb_log_message success [ OK ] + return 0 + return_value=0 + set +x
[12 Jul 2007 1:44]
Gerry Reno
Ok, our SELinux policy is set to Enforcing on all our systems. And I tracked this problem down to a SELinux AVC denial for creation of mysql.sock and the pid file. The way I fixed the problem was to perform a 'fixfiles relabel' with a reboot. So I'm not sure where the responsibility lies here, with MySQL or with SELinux so I'm leaving this bug open. The system originally had the Fedora mysql package installed (but never used) and it was removed using yum. I think this may somehow have some bearing on the security contexts and maybe a note to that effect should be placed in a faq. Here is one of the AVC denial alerts: Summary SELinux is preventing /usr/sbin/mysqld (mysqld_t) "create" to mysql.sock (var_lib_t). Detailed Description SELinux denied access requested by /usr/sbin/mysqld. It is not expected that this access is required by /usr/sbin/mysqld and this access may signal an intrusion attempt. It is also possible that the specific version or configuration of the application is causing it to require additional access. Allowing Access Sometimes labeling problems can cause SELinux denials. You could try to restore the default system file context for mysql.sock, restorecon -v mysql.sock If this does not work, there is currently no automatic way to allow this access. Instead, you can generate a local policy module to allow this access - see http://fedora.redhat.com/docs/selinux-faq-fc5/#id2961385 Or you can disable SELinux protection altogether. Disabling SELinux protection is not recommended. Please file a http://bugzilla.redhat.com/bugzilla/enter_bug.cgi against this package. Additional Information Source Context user_u:system_r:mysqld_t Target Context user_u:object_r:var_lib_t Target Objects mysql.sock [ sock_file ] Affected RPM Packages MySQL-server-5.1.20-0.glibc23 [application] Policy RPM selinux-policy-2.6.4-23.fc7 Selinux Enabled True Policy Type targeted MLS Enabled True Enforcing Mode Enforcing Plugin Name plugins.catchall_file Host Name grp-01-50-51 Platform Linux grp-01-50-51 2.6.21-1.3228.fc7 #1 SMP Tue Jun 12 15:37:31 EDT 2007 i686 athlon Alert Count 37 First Seen Wed 11 Jul 2007 12:02:09 PM EDT Last Seen Wed 11 Jul 2007 08:27:32 PM EDT Local ID e25b070f-610b-47f2-a8cb-fc8570c04114 Line Numbers Raw Audit Messages avc: denied { create } for comm="mysqld" egid=495 euid=496 exe="/usr/sbin/mysqld" exit=0 fsgid=495 fsuid=496 gid=495 items=0 name="mysql.sock" pid=2686 scontext=user_u:system_r:mysqld_t:s0 sgid=495 subj=user_u:system_r:mysqld_t:s0 suid=496 tclass=sock_file tcontext=user_u:object_r:var_lib_t:s0 tty=pts1 uid=496
[8 Aug 2007 0:52]
Ben Vaughn
I am having similar startup issues to this -- except my SQL will start, just throws the error: 19:50:18 awhq8231 (~) [156] # start_mysql 19:50:21 awhq8231 (~) [157] # usage: touch [-acfhm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ... usage: chown [-fhv] [-R [-H | -L | -P]] owner[:group] file ... chown [-fhv] [-R [-H | -L | -P]] :group file ...
[10 Aug 2007 21:58]
Ruben Carrillo
Hi Gerry, At security level you need to select SELinux and enable the box of Disable SELinux protection for mysqld daemon Regards Ruben C.
[17 Aug 2007 20:35]
Sarah Novotny
having same problem on centos4 with fresh install of MySQL-server-community-5.0.45-0.rhel4 and, my SELinux policy is disabled. Sarah
[30 Jan 2008 11:35]
Valeriy Kravchuk
Please, try to repeat with newer versions, 5.1.22 and/or 5.0.51a, and SELinux disabled, and inform about the results.
[1 Mar 2008 0:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[12 Mar 2008 19:42]
Susanne Ebrecht
This is a duplicate of bug #29595 All reporters here, please try to use our packages that you can download from: http://dev.mysql.com/downloads/ This seems to be a problem from the package maintainer of your OS and is not MySQL related.