[Mysql] mysql 진입을 못하겠습니다

안녕하세요.

글 작성을 상세 하게 하려다 보니 좀 길어 질수 있음을 미리 알려 드립니다.

우분투 14.04 설치시 mysql 설치 항목 체크 함. (즉, 우분투 설치 하면서 같이 설치 됨)
이 상태에서 mysql 접속시도 하다가 안되서,
[b:3euycs9u] apt-get remove mysql-server
apt-get install mysql-server[/b:3euycs9u]
를 실행 했고요.

  • 다음은 현재 설치된 패키지 입니다.
    [b:3euycs9u]# dpkg -l | grep mysql[/b:3euycs9u] (명령을 실행 하여 패키지 명만 올립니다.)

libdbd-mysql-perl
libmysqlclient18:amd64
mysql-client-5.5
mysql-client-core-5.5
mysql-common
mysql-server
mysql-server-5.5
mysql-server-core-5.5
php5-mysql

[b:3euycs9u]# ps -ef | grep mysql[/b:3euycs9u] (아래 데몬을 kill 3740 으로 죽이면 바로 다른 pid 로 살아나더군요.)
mysql 3740 1 0 14:23 ? 00:00:02 /usr/sbin/mysqld

[b:3euycs9u]# cat my.cnf[/b:3euycs9u]
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock #파일 위치 확인 했습니다.

[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock #파일 위치 확인 했습니다.
nice = 0

[mysqld]
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
lc-messages-dir = /usr/share/mysql
skip-external-locking

[b:3euycs9u]# /etc/init.d/mysql restart[/b:3euycs9u]

  • Stopping MySQL database server mysqld
    …done.
  • Starting MySQL database server mysqld
    …done.
  • Checking for tables which need an upgrade, are corrupt or were not closed cleanly.

[b:3euycs9u]# tail -f error.log[/b:3euycs9u] (관련 내용으로 ibdata1을 .bak로 백업하고 cp -a 로 다시 카피는 해봤습니다.)
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.

] 현재까지의 상태에서 다음과 같이 진행 했습니다.
[b:3euycs9u]# /etc/init.d/mysql stop[/b:3euycs9u]

[b:3euycs9u]# killall mysqld[/b:3euycs9u]
[b:3euycs9u]# mysqld_safe --skip-grant &[/b:3euycs9u]
[1] 6216

140529 16:10:04 mysqld_safe Can’t log to error log and syslog at the same time. Remove all --log-error configuration options for --syslog to take effect.

140529 16:10:04 mysqld_safe Logging to ‘/var/log/mysql/error.log’.
140529 16:10:04 mysqld_safe A mysqld process already exists

] 위와 같이 내용으로 error.log 에도 140529 16:10:04 mysqld_safe A mysqld process already exists 라고 남더군요.
] 그래서 아래와 같이 했습니다.
[b:3euycs9u]# mysql_secure_installation[/b:3euycs9u]

Enter current password for root (enter for none): (엔터)
ERROR 1045 (28000): Access denied for user ‘root’@‘localhost’ (using password: NO)

] 여기서 넘어가질 안더군요. 인터넷의 글을 보면 저기서 암호를 누르고 넘어가면 된다고 하는데 말이에요. 하아~~

] 아무튼 다시 아래와 같이 해봅니다.

[b:3euycs9u]# /etc/init.d/mysql restart[/b:3euycs9u]

  • Stopping MySQL database server mysqld
    …done.
  • Starting MySQL database server mysqld
    …done.
  • Checking for tables which need an upgrade, are corrupt or were not closed cleanly.

] 위와 같이 떨어지긴 하지만, error.log 를 보면
InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.
140529 16:16:51 InnoDB: Unable to open the first data file
InnoDB: Error in opening ./ibdata1
140529 16:16:51 InnoDB: Operating system error number 11 in a file operation.
InnoDB: Error number 11 means ‘Resource temporarily unavailable’.
InnoDB: Some operating system error numbers are described at
InnoDB: http://dev.mysql.com/doc/refman/5.5/en/ … codes.html
140529 16:16:51 InnoDB: Could not open or create data files.
140529 16:16:51 InnoDB: If you tried to add new data files, and it failed here,
140529 16:16:51 InnoDB: you should now edit innodb_data_file_path in my.cnf back
140529 16:16:51 InnoDB: to what it was, and remove the new ibdata files InnoDB created
140529 16:16:51 InnoDB: in this failed attempt. InnoDB only wrote those files full of
140529 16:16:51 InnoDB: zeros, but did not yet use them in any way. But be careful: do not
140529 16:16:51 InnoDB: remove old data files which contain your precious data!
140529 16:16:51 [ERROR] Plugin ‘InnoDB’ init function returned error.
140529 16:16:51 [ERROR] Plugin ‘InnoDB’ registration as a STORAGE ENGINE failed.
140529 16:16:51 [ERROR] Unknown/unsupported storage engine: InnoDB
140529 16:16:51 [ERROR] Aborting

140529 16:16:51 [Note] /usr/sbin/mysqld: Shutdown complete

140529 16:16:51 mysqld_safe Number of processes running now: 0
140529 16:16:51 mysqld_safe mysqld restarted
140529 16:16:51 [Warning] Using unique option prefix key_buffer instead of key_buffer_size is deprecated and will be removed in a future release. Please use the full name instead.
140529 16:16:51 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140529 16:16:51 [Note] Plugin ‘FEDERATED’ is disabled.
140529 16:16:51 InnoDB: The InnoDB memory heap is disabled
140529 16:16:51 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140529 16:16:51 InnoDB: Compressed tables use zlib 1.2.8
140529 16:16:51 InnoDB: Using Linux native AIO
140529 16:16:51 InnoDB: Initializing buffer pool, size = 128.0M
140529 16:16:51 InnoDB: Completed initialization of buffer pool

긴글 읽어 주셔서 감사합니다.

위와 같이 했습니다.
아직도 mysql 에 접속을 못하고 있습니다.

에러 로그 보니까 start 시켜도 자꾸 ibdata1 이게 해결이 안되서 자꾸 Shutdown 시키는거 같은데 도무지 모르겠네요.

도와주세요. 간절 합니다.

우선 에러는 아닌 것 같습니다만 서비스 중지시 pid가 제대로 죽지 않는 것 같습니다.

kill -9 <pid> 명령어로 완전히 죽여 보시고 서비스를 다시 시작해 보십시오.
그리고 innodb_data_home_dir 부분을 체크해 보십시오.

] 댓글 감사합니다.
] innodb_data_home_dir 는 어디를 말씀 하시는 지요?

my.cnf
[mysqld]
datadir = /var/lib/mysql

] 를 말씀 하시는 건가요?

] 맞다면 다음과 같습니다.
drwx------ 4 mysql mysql 4096 5월 29 16:54 mysql/

] mysql 폴더의 내용 입니다.
-rw-rw---- 1 mysql mysql 18874368 5월 29 16:15 ibdata1
-rw-rw---- 1 mysql mysql 18874368 5월 29 14:14 ibdata1.bak
-rw-rw---- 1 mysql mysql 18874368 5월 29 14:20 ibdata2.bak

] 그리고 말씀 해주신, kill -9 <pid> 명령으로 서비스를 죽여 봤습니다.

ps -ef | grep mysqld

mysql 7428 1 0 16:54 ? 00:00:00 /usr/sbin/mysqld

kill -9 7428

ps -ef | grep mysqld

mysql 7581 1 1 17:01 ? 00:00:00 /usr/sbin/mysqld

] 와 같이 죽질 안아요. 바로 다시 다른 pid 로 상주 해 있습니다.
] 저게 mysqld 데몬이 맞는거 같은데, 왜 안죽는지 모르겠습니다.
] init 0 으로 서버를 완전히 껐다가 다시 켜도 그대로 올라와있습니다.

] 아무튼 관심과 댓글 다시한번 감사 드립니다.

일단 응급처치로 datadir에서 아래와 같이 해보십시오.

cd /var/lib/mysql

mkdir bak

mv ibdata1 bak/.

mv ib_logfile* bak/.

cp -a bak/ibdata1 ibdata1

cp -a bak/ib_logfile* .

service mysql restart

재시작을 해보시고 innoDB에 대한 설정을 구글링 하셔서 my.cnf에 설정하시기 바랍니다.
모르시겠으면 mariaDB의 소스 파일의 support 디렉토리 항목을 참고하셔서 설정하시기 바랍니다.

만약 재시작시 문제가 있다면 kill 명령을 다시 실행해 보십시오.