최근 업그레이드된 가상 머신에서 MySQL 서비스를 시작할 수 없습니다.

최근 업그레이드된 가상 머신에서 MySQL 서비스를 시작할 수 없습니다.

방금 14.04로 업그레이드한 Ubuntu Server를 실행하는 VM이 ​​있습니다. VM은 MySQL 데이터베이스에 대한 액세스를 제공합니다. 그러나 업그레이드 후 데이터베이스가 시작을 거부하고 이를 파악하기에는 이에 대해 충분히 알지 못합니다.

root@vm-1 ~ $ service mysql start
start: Job failed to start

나는 그것을 확인 /var/log/mysql/error.log하고 발견했다:

141001 20:23:10 [Note] Server hostname (bind-address): '127.0.0.1'; port: 3306
141001 20:23:10 [Note]   - '127.0.0.1' resolves to '127.0.0.1';
141001 20:23:10 [Note] Server socket created on IP: '127.0.0.1'.
141001 20:23:10 [ERROR] Can't start server : Bind on unix socket: Permission denied
141001 20:23:10 [ERROR] Do you already have another mysqld server running on socket: /var/run/mysqld/mysqld.sock ?
141001 20:23:10 [ERROR] Aborting

141001 20:23:10  InnoDB: Starting shutdown...
141001 20:23:11  InnoDB: Shutdown completed; log sequence number 24590151085
141001 20:23:11 [Note] /usr/sbin/mysqld: Shutdown complete

파일의 전체 내용을 찾을 수 있습니다여기. 위에 표시된 명령을 실행하기 전에 이를 제거했으므로 service모든 것은 MySQL 서비스를 시작하려는 단일 시도에서 나온 것입니다.

나는 또한 명백한 것들을 확인했습니다:

$ ps ax | grep mysql
 3623 pts/1    S+     0:00 grep --color mysql
$ rm /var/run/mysqld/mysqld.sock
rm: cannot remove ‘/var/run/mysqld/mysqld.sock’: No such file or directory
$ netstat | grep 3306

데이터베이스 디렉터리에 올바른 권한이 있는지 확인했습니다.

$ chown -R mysql:root /data/database/

나는 달려 보았지만 strace뚜렷한 것을 볼 수 없었습니다. 하지만 나는 그것에 대해 거의 알지 못하므로 결과를 찾을 수 있습니다여기.

결국 내 것은 다음 /etc/mysql/my.cnf과 같습니다.

[client]
port        = 3306
socket      = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket      = /var/run/mysqld/mysqld.sock
nice        = 0
[mysqld]
user        = mysql
socket      = /var/run/mysqld/mysqld.sock
port        = 3306
basedir     = /usr
datadir     = /data/database
tmpdir      = /tmp
skip-external-locking
bind-address        = 127.0.0.1
key_buffer      = 16M
max_allowed_packet  = 16M
thread_stack        = 192K
thread_cache_size       = 8
myisam-recover         = BACKUP
query_cache_limit   = 1M
query_cache_size        = 16M
log_error                = /var/log/mysql/error.log
expire_logs_days    = 10
max_binlog_size         = 100M
[mysqldump]
quick
quote-names
max_allowed_packet  = 16M
[mysql]
[isamchk]
key_buffer      = 16M
!includedir /etc/mysql/conf.d/

bind-address위의 줄을 내 네트워크에 있는 컴퓨터의 실제 내부 IP인 , 0.0.0.0127.0.0.0( 127.0.1.1이 줄은 127.0.1.1 foo내 줄 중 하나가 내 가상 머신의 호스트 이름이기 때문입니다) 로 변경해 보았습니다 . /etc/hosts그들 중 누구도 아무런 차이를 만들지 않습니다. 나는 또한 좋은 측정을 위해 그 줄을 주석 처리하려고 했습니다.foo10.1.1.213bind-address

내 시스템 세부정보:

$ cat /etc/issue
Ubuntu 14.04.1 LTS \n \l

$ dpkg -s mysql-server | grep version
Version: 5.5.38-0ubuntu0.14.04.1

답변1

이 문제는 실제로 의류와 관련이 있습니다. 어떤 이유로 이 두 줄은 새 파일에서 주석 처리되었습니다 /etc/apparmor.d/usr.sbin.mysql.

#  /var/lib/mysql/ r,  
#  /var/lib/mysql/** rwk,

주석을 제거하면 문제가 해결되었습니다. 감사해요@벨로그그리고@slm나에게 올바른 방향을 알려준 사람.

관련 정보