LINUX.ORG.RU
ФорумAdmin

MySQL литл проблем


0

0

Возникла проблема с мускулом. Дистриб АСП 9.2.
Когда все оставлять по умолчанию, то пашет нормально, но когда я
поменял пароли рута для мускула, то при перезапуске демона выдало такое:
/usr/libexec/mysqld: Can't read dir of '/tmp/.private/root/' (Errcode: 13)
Cannot initialize InnoDB as 'innodb_data_file_path' is not set.
If you do not want to use transactional InnoDB tables, add a line
skip-innodb
to the [mysqld] section of init parameters in your my.cnf
or my.ini. If you want to use InnoDB tables, add to the [mysqld]
section, for example,
innodb_data_file_path = ibdata1:10M:autoextend
But to get good performance you should adjust for your hardware
the InnoDB startup options listed in section 2 at
http://www.innodb.com/ibman.html
/usr/libexec/mysqld: ready for connections 

040913 08:33:43  mysqld started
/usr/libexec/mysqld: Can't read dir of '/tmp/.private/root/' (Errcode: 13)
/usr/libexec/mysqld: ready for connections
040913  9:50:23  /usr/libexec/mysqld: Normal shutdown

040913  9:50:23  /usr/libexec/mysqld: Shutdown Complete
 

когда прописать в my.cnf строчку skip-innodb то все вроде ок,
но при перезапуске демона выдает сбой, хотя сам мускул запускается

040913 09:50:23  mysqld ended

040913 09:52:49  mysqld started
/usr/libexec/mysqld: ready for connections 

и ещо, вот с етой директорией'/tmp/.private/' ниче сделать незя,
причем смена владельца и прав ниче недает :(
Меня вот что интересует: это что-то значительное, или можна так оставлять?

Возможно дело в том что в my.cnf прописаны пути для пространства InnoDB теперь недоступные для mysqld... Проверь my.cnf. Если так все оставиш то тебе не будет доступен тип InnoDB для таблиц.

co6aka
()

Этожеж вроде обсуждалось уже неоднократно.
/tmp/.private - работа pam_mktemp.
mysql_safe стартует из под рута, таким образом tmpdir = /tmp/.private/root, затем он понижает привелегии до пользователя mysql и он уже ничего с .private/root сделать не может.
# lsattr -d /tmp/.private/
Если особо не заморачиваться выход такой:
В инит скрипте mysql (/etc/init.d/mysql) меняем нечито вроде
$bindir/mysqld_safe --datadir=$da...
на
env TMP=/tmp TMPDIR=/tmp $bindir/mysqld_safe --datadir=$da...

finger
()
Ответ на: комментарий от finger

я чуток запутался :( вот скрипт, где и что поменять?

#!/bin/bash
# mysqld	This shell script takes care of starting and stopping
#		the MySQL subsystem (mysqld).
# chkconfig: - 78 12
# 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"
datadir="/var/lib/mysql"
start(){
	touch /var/log/mysqld.log
	chown mysql.mysql /var/log/mysqld.log 
	chmod 0640 /var/log/mysqld.log
	if [ ! -d $datadir/mysql ] ; then
	    action $"Initializing MySQL database: " /usr/bin/mysql_install_db
	    ret=$?
	    chown -R mysql.mysql $datadir
	    if [ $ret -ne 0 ] ; then
	    	return $ret
	    fi
	fi
	chown -R mysql.mysql $datadir
	chmod 0755 $datadir
	/usr/bin/safe_mysqld  --defaults-file=/etc/my.cnf >/dev/null 2>&1 &
	ret=$?
        # Spin for a maximum of ten seconds waiting for the server to come up
	if [ $ret -eq 0 ]; then
            for x in 1 2 3 4 5 6 7 8 9 10; do
            if [ -n "`/usr/bin/mysqladmin ping 2> /dev/null`" ]; then
                    break;
            else
                    sleep 1;
            fi
            done
            if !([ -n "`/usr/bin/mysqladmin ping 2> /dev/null`" ]); then
                    echo "Timeout error occurred trying to start MySQL Daemon."
                    action $"Starting $prog: " /bin/false
            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(){
        /bin/kill `cat /var/run/mysqld/mysqld.pid  2> /dev/null ` > /dev/null 2>&1
	ret=$?
	if [ $ret -eq 0 ]; then
	    action $"Stopping $prog: " /bin/true
	else
    	    action $"Stopping $prog: " /bin/false
	fi
	[ $ret -eq 0 ] && rm -f /var/lock/subsys/mysqld
	[ $ret -eq 0 ] && rm -f $datadir/mysql.sock
	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 $?

AngryALF
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.