Another MySQL start problem

Discussion in 'Server Operation' started by Numerizen, May 28, 2010.

  1. Numerizen

    Numerizen Member

    Hello all,

    I recently upgraded my Etch server to Lenny.

    At the same time, I also messed with the /var directory, trying to symlink it to another partition to save space.

    At some point, mysql stopped working, and I can't manage to start it again.

    Starting manually doesn't help :

    Code:
    Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!
    
    Here's the syslog :

    Code:
    May 28 08:09:10 numerizen /etc/init.d/mysql[3635]: 0 processes alive and '/usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf ping' resulted in
    May 28 08:09:10 numerizen /etc/init.d/mysql[3635]: ^G/usr/bin/mysqladmin: connect to server at 'localhost' failed
    May 28 08:09:10 numerizen /etc/init.d/mysql[3635]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'
    May 28 08:09:10 numerizen /etc/init.d/mysql[3635]: Check that mysqld is running and that the socket: '/var/run/mysqld/mysqld.sock' exists!
    May 28 08:09:10 numerizen /etc/init.d/mysql[3635]:
    
    Which is not really helpful.

    I'm almost sure it's a permissions problem, as I had to fix some for other services.

    I tried to purge the package and reinstall but no luck.

    I tried to create /var/run/mysqld/mysqld.sock manually but it didn't do any good.

    Code:
    
    [client]
    port            = 3306
    socket          = /var/run/mysqld/mysqld.sock
    
    # Here is entries for some specific programs
    # The following values assume you have at least 32M ram
    
    # This was formally known as [safe_mysqld]. Both versions are currently parsed.
    [mysqld_safe]
    socket          = /var/run/mysqld/mysqld.sock
    nice            = 0
    
    [mysqld]
    #
    # * Basic Settings
    #
    user            = mysql
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    port            = 3306
    basedir         = /usr
    datadir         = /var/lib/mysql
    tmpdir          = /tmp
    language        = /usr/share/mysql/english
    skip-external-locking
    
    # escpecially if they contain "#" chars...
    # Remember to edit /etc/mysql/debian.cnf when changing the socket location.
    [client]
    port            = 3306
    socket          = /var/run/mysqld/mysqld.sock
    
    # Here is entries for some specific programs
    # The following values assume you have at least 32M ram
    
    # This was formally known as [safe_mysqld]. Both versions are currently parsed.
    [mysqld_safe]
    socket          = /var/run/mysqld/mysqld.sock
    nice            = 0
    
    [mysqld]
    #
    # * Basic Settings
    #
    user            = mysql
    pid-file        = /var/run/mysqld/mysqld.pid
    socket          = /var/run/mysqld/mysqld.sock
    port            = 3306
    basedir         = /usr
    datadir         = /var/lib/mysql
    tmpdir          = /tmp
    language        = /usr/share/mysql/english
    skip-external-locking
    #
    # localhost which is more compatible and is not less secure.
    #bind-address           = 127.0.0.1
    # 
    # * Fine Tuning
    # 
    key_buffer              = 16M
    max_allowed_packet      = 16M
    thread_stack            = 128K
    thread_cache_size       = 8
    max_connections        = 15
    table_cache            = 512
    #thread_concurrency     = 10
    # 
    # * Query Cache Configuration
    # 
    
    query_cache_limit       = 16M
    query_cache_size        = 64M
    query_cache_type        = 1
    #
    # * Logging and Replication
    # 
    # Both location gets rotated by the cronjob.
    # Be aware that this log type is a performance killer.
    #log            = /var/log/mysql/mysql.log
    #
    # Error logging goes to syslog. This is a Debian improvement :)
    #
    # Here you can see queries with especially long duration
    #log_slow_queries       = /var/log/mysql/mysql-slow.log
    #long_query_time = 2
    #log-queries-not-using-indexes
    #
    # The following can be used as easy to replay backup logs or for replication.
    #server-id              = 1
    #log_bin                        = /var/log/mysql/mysql-bin.log
    # WARNING: Using expire_logs_days without bin_log crashes the server! See README.Debian!
    #expire_logs_days       = 10
    #max_binlog_size         = 100M
    #binlog_do_db           = include_database_name
    #binlog_ignore_db       = include_database_name
    #
    # * BerkeleyDB
    #
    # Using BerkeleyDB is now discouraged as its support will cease in 5.1.12.
    skip-bdb
    # 
    # * InnoDB
    #
    # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
    # Read the manual for more InnoDB related options. There are many!
    # You might want to disable InnoDB to shrink the mysqld process by circa 100MB.
    skip-innodb
    #
    # * Security Features
    # 
    # Read the manual, too, if you want chroot!
    # chroot = /var/lib/mysql/   
    #
    # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
    #
    # ssl-ca=/etc/mysql/cacert.pem
    # ssl-cert=/etc/mysql/server-cert.pem
    # ssl-key=/etc/mysql/server-key.pem
    
    
     
    [mysqldump]
    quick
    quote-names
    max_allowed_packet      = 16M
    
    [mysql]
    #no-auto-rehash # faster start of mysql but no tab completition
    
    [isamchk]
    key_buffer              = 16M
    
    #
    # * NDB Cluster
    #
    # See /usr/share/doc/mysql-server-*/README.Debian for more information.
    #
    # The following configuration is read by the NDB Data Nodes (ndbd processes)
    # not from the NDB Management Nodes (ndb_mgmd processes).
    # 
    # [MYSQL_CLUSTER]
    # ndb-connectstring=127.0.0.1
    
     
    # 
    # * IMPORTANT: Additional settings that can override those from this file!
    # 
    !includedir /etc/mysql/conf.d/
    
    My production server is down and any help or hint would be greatly appreciated.

    Thanks for your time
     
  2. Numerizen

    Numerizen Member

    Fixed

    Ok, sorry for the unneeded message.

    It happened that bind working directory wasn't writable and bind didn't start.

    Also, permissions in /var/lib/mysql were wrong.

    A few chgrp and chmod fixed this.

    Sorry again.
     
  3. Numerizen

    Numerizen Member

    I stumbled on this again : the /var/lib/mysql folder has wrong permissions (root:root instead of mysql:mysql).

    This is easy enough to fix, but I wonder if anyone has an explanation as to why this directory keeps being reverted to root ownership ?
     

Share This Page