5

I have checked for other occurences of my.cnf and I have found only one occurrence of /etc/my.cnf.

Then, I went ahead to fix in my values, e.g. query_cache_size etc.

After saving and literally rebooting, the values in my.cnf have not been applied. I'm using CentOS 5.6, LAMP on Apache 2, MySQL 5.0.77

Any help?

i ran also

[root@veepiz ~]# ps aux | grep mysql
root     16202  0.0  0.1  61220   704 pts/0    D+   03:17   0:00 grep mysql
root     32054  0.0  0.1  63888   536 ?        S    Jul24   0:00 /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mysql --socket=/var/lib/mysql/mysql.sock --log-error=/var/log/mysqld.log --pid-file=/var/run/mysqld/mysqld.pid --user=mysql
mysql    32096  6.0  1.6 250592  8352 ?        Sl   Jul24  19:14 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --user=mysql --pid-file=/var/run/mysqld/mysqld.pid --skip-external-locking --port=3306 --socket=/var/lib/mysql/mysql.sock

here is the content of /etc/init.d/mysqld

#!/bin/bash
#
# mysqld    This shell script takes care of starting and stopping
#       the MySQL subsystem (mysqld).
#
# chkconfig: - 64 36
# description:  MySQL database server.
# processname: mysqld
# config: /etc/my.cnf
# pidfile: /var/run/mysqld/mysqld.pid

# Source function library.
. /etc/rc.d/init.d/functions

# Source networking configuration.
. /etc/sysconfig/network


prog="MySQL"

# extract value of a MySQL option from config files
# Usage: get_mysql_option SECTION VARNAME DEFAULT
# result is returned in $result
# We use my_print_defaults which prints all options from multiple files,
# with the more specific ones later; hence take the last match.
get_mysql_option(){
    result=`/usr/bin/my_print_defaults "$1" | sed -n "s/^--$2=//p" | tail -n 1`
    if [ -z "$result" ]; then
        # not found, use default
        result="$3"
    fi
}

get_mysql_option mysqld datadir "/var/lib/mysql"
datadir="$result"
get_mysql_option mysqld socket "$datadir/mysql.sock"
socketfile="$result"
get_mysql_option mysqld_safe log-error "/var/log/mysqld.log"
errlogfile="$result"
get_mysql_option mysqld_safe pid-file "/var/run/mysqld/mysqld.pid"
mypidfile="$result"

start(){
    touch "$errlogfile"
    chown mysql:mysql "$errlogfile" 
    chmod 0640 "$errlogfile"
    [ -x /sbin/restorecon ] && /sbin/restorecon "$errlogfile"
    if [ ! -d "$datadir/mysql" ] ; then
        action $"Initializing MySQL database: " /usr/bin/mysql_install_db --datadir="$datadir" --user=mysql
        ret=$?
        chown -R mysql:mysql "$datadir"
        if [ $ret -ne 0 ] ; then
        return $ret
        fi
    fi
    chown mysql:mysql "$datadir"
    chmod 0755 "$datadir"
    # Pass all the options determined above, to ensure consistent behavior.
    # In many cases mysqld_safe would arrive at the same conclusions anyway
    # but we need to be sure.
    /usr/bin/mysqld_safe   --datadir="$datadir" --socket="$socketfile" \
        --log-error="$errlogfile" --pid-file="$mypidfile" \
        --user=mysql >/dev/null 2>&1 &
    ret=$?
    # Spin for a maximum of N seconds waiting for the server to come up.
    # Rather than assuming we know a valid username, accept an "access
    # denied" response as meaning the server is functioning.
    if [ $ret -eq 0 ]; then
        STARTTIMEOUT=30
        while [ $STARTTIMEOUT -gt 0 ]; do
        RESPONSE=`/usr/bin/mysqladmin --socket="$socketfile" --user=UNKNOWN_MYSQL_USER ping 2>&1` && break
        echo "$RESPONSE" | grep -q "Access denied for user" && break
        sleep 1
        let STARTTIMEOUT=${STARTTIMEOUT}-1
        done
        if [ $STARTTIMEOUT -eq 0 ]; then
                    echo "Timeout error occurred trying to start MySQL Daemon."
                    action $"Starting $prog: " /bin/false
                    ret=1
            else
                    action $"Starting $prog: " /bin/true
            fi
    else
            action $"Starting $prog: " /bin/false
    fi
    [ $ret -eq 0 ] && touch /var/lock/subsys/mysqld
    return $ret
}

stop(){
        MYSQLPID=`cat "$mypidfile"  2>/dev/null `
        if [ -n "$MYSQLPID" ]; then
            /bin/kill "$MYSQLPID" >/dev/null 2>&1
            ret=$?
            if [ $ret -eq 0 ]; then
                STOPTIMEOUT=60
                while [ $STOPTIMEOUT -gt 0 ]; do
                    /bin/kill -0 "$MYSQLPID" >/dev/null 2>&1 || break
                    sleep 1
                    let STOPTIMEOUT=${STOPTIMEOUT}-1
                done
                if [ $STOPTIMEOUT -eq 0 ]; then
                    echo "Timeout error occurred trying to stop MySQL Daemon."
                    ret=1
                    action $"Stopping $prog: " /bin/false
                else
                    rm -f /var/lock/subsys/mysqld
                    rm -f "$socketfile"
                    action $"Stopping $prog: " /bin/true
                fi
            else
                action $"Stopping $prog: " /bin/false
            fi
        else
            ret=1
            action $"Stopping $prog: " /bin/false
        fi
        return $ret
}

restart(){
    stop
    start
}

condrestart(){
    [ -e /var/lock/subsys/mysqld ] && restart || :
}

# See how we were called.
case "$1" in
  start)
    start
    ;;
  stop)
    stop
    ;;
  status)
    status mysqld
    ;;
  restart)
    restart
    ;;
  condrestart)
    condrestart
    ;;
  *)
    echo $"Usage: $0 {start|stop|status|condrestart|restart}"
    exit 1
esac

exit $?
2
  • Did you put the query_cache_size variable into the [mysqld] section of my.cnf?
    – lg_
    Jul 25, 2011 at 9:44
  • Could you add your my.cnf settings, as well as a list of specific values that you're changing and aren't being applied? Also, are there any errors in your mysql error log to indicate why the values aren't being applied? Jul 25, 2011 at 13:19

1 Answer 1

2

You can force-feed mysqld whatever my.cnf you want by using the --defaults-file flag.

E.g. On Red Hat-ish systems:

/usr/bin/mysqld_safe --defaults-file=/etc/my_alt.cnf &
1
  • Better make sure your cnf file is complete though when you go that route…this is better in the long run though as then you'll exactly what settings are in place. Also, once you do that, better make sure that my_alt.cnf file is in some source control server ;)
    – TechieGurl
    Sep 26, 2011 at 14:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.