mysql 실행이 안됩니다.
mysql 5.1.34를 아래와 같이설치하였습니다.
인스톨
./configure --prefix=/usr/local/server/mysql --with-charset=utf8
--with-extra-charsets=all && make && make install
디비생성
mysql_install_db --user=mysql
디렉터리 퍼미션 설정
chown root.mysql -R /usr/local/server/mysql
chown mysql.mysql -R /usr/local/server/mysql/var
환경설정파일 복사
cp /usr/local/server/mysql/share/mysql/my-medium.cnf /etc/my.cnf
스크립트 등록.
cp /usr/local/server/mysql/share/mysql/mysql.server /etc/init.d/mysqld
chkconfig --add mysqld
리눅스 설치시 APM관련 RPM을 제외하고 깔아서 다른 경로에 있는 my.cnf 파일을 참조하지도
않을테고... DB를 생성해 주었음에도...
실행이 되지를 않습니다. 이 경우 무엇이 문제가 되는 걸까요?
tmp디렉터리는 기본 sticky bit먹여져 있구요.
sock파일은 /tmp에 존재하지 않네요...
./mysql
ERROR 2002(HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock'(2)
service mysql start
MYSQL manager or server PID file could not be found! [FAILED]
Starting MySQL.Manager of pid-file quit without updation fi [FAILED]
도움 부탁드리겠습니다.
가물가물한데.. my.cnf
가물가물한데.. my.cnf 에서 sock 파일 생성 위치를 지정해줄 수 있습니다.
소켓파일 위치를 직접 지정해줘보시는건 어떨까요
---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/
답변
답변 감사드립니다...
.
.
.
# The following options will be passed to all MySQL clients
[client]
#password = your_password
port = 3306
socket = /usr/local/server/mysql/var/mysql.sock
# Here follows entries for some specific programs
# The MySQL server
[mysqld]
port = 3306
socket = /usr/local/server/mysql/var/mysql.sock
skip-locking
key_buffer = 16M
.
.
.
허나... 이와 같이 하였으나 같은 증상이네요...
에러메세지에선
에러메세지에선 '/tmp/mysql.sock' 에서 소켓파일을 못찾는다고 하고 있으니 저기다가 만들어보시는건 어떨까요;
아, 그것보다 mysql 실행시에 my.cnf 위치를 지정해줄 수 있을텐데.. 그거부터 해보시는건 어떨까요
설정파일을 못읽어서 생기는 문제가 아닌가 싶기도 하네요
---------------------------------------
http://www.waitfor.com/
http://www.textmud.com/
cp
cp /usr/local/server/mysql/share/mysql/mysql.server /etc/init.d/mysqld
여기서 복사한 /etc/init.d/mysqld 파일을 살펴보세요.
소스로 설치할때 기준 디렉토리가 /usr/local/mysql 인것으로 기억합니다.
스크립트 파일에서 디렉토리 관련 정보를 잘 살펴 보고 수정해 주면 될듯 하네요.
mysql.sock을 한번
mysql.sock을 한번 생성해 보았으나 되지 않습니다.
아마도 실행중에만 생기는 파일이라 그런 것 같네요.
말씀하신 서버 스크립트를 한 번 봐보았습니다.
my.cnf파일의 위치를 수정해 보고자 하였으나
제 형편없는 분석실력으로 보니...
my.cnf가 /etc/아래에 있던가 아니면 아니던 간에 상관은 없는 것 같습니다.
기본 /etc/my.cnf의 경로가 아니라면 basedir에 지정한 곳의 하위에서 읽어오는 것으로 판단됩니다.
> # [mysqld]
> # basedir=
>
> basedir=/usr/local/server/mysql <-----------------고친부분
> datadir=/usr/local/server/mysql/var <------------------고친부분
>
> service_startup_timeout=900
>
> pid_file=
> server_pid_file=
> use_mysqld_safe=1
> user=mysql
> if test -z "$basedir"
> then
> basedir=/usr/local/server/mysql
> bindir=/usr/local/server/mysql/bin
> if test -z "$datadir"
> then
> datadir=/usr/local/server/mysql/var
> fi
> sbindir=/usr/local/server/mysql/sbin
> libexecdir=/usr/local/server/mysql/libexec
> else
> bindir="$basedir/bin"
> if test -z "$datadir"
> then
> datadir="$basedir/data"
> fi
> sbindir="$basedir/sbin"
> libexecdir="$basedir/libexec"
> fi
>
> # datadir_set is used to determine if datadir was set (and so should be
> # *not* set inside of the --basedir= handler.)
> datadir_set=
>
> #
> # Use LSB init script functions for printing messages, if possible
> #
> lsb_functions="/lib/lsb/init-functions"
> if test -f $lsb_functions ; then
> . $lsb_functions
> else
> log_success_msg()
> {
> echo " SUCCESS! $@"
> }
> log_failure_msg()
> {
> echo " ERROR! $@"
> }
> fi
>
> #
> # Set pid file if not given
> #
> if test -z "$pid_file"
> then
> pid_file=$datadir/mysqlmanager-`/bin/hostname`.pid
> else
> case "$pid_file" in
> /* ) ;;
> * ) pid_file="$datadir/$pid_file" ;;
> esac
> fi
> if test -z "$server_pid_file"
> then
> server_pid_file=$datadir/`/bin/hostname`.pid
> else
> case "$server_pid_file" in
> /* ) ;;
> * ) server_pid_file="$datadir/$server_pid_file" ;;
> esac
> fi
>
> case "$mode" in
> 'start')
> # Start daemon
>
> # Safeguard (relative paths, core dumps..)
> cd $basedir
>
> manager=$bindir/mysqlmanager
> if test -x $libexecdir/mysqlmanager
> then
> manager=$libexecdir/mysqlmanager
> elif test -x $sbindir/mysqlmanager
> then
> manager=$sbindir/mysqlmanager
> fi
.
.
댓글 달기