mysql을 시작할 수 없습니다 : InnoDB : 충돌 후 업그레이드가 지원되지 않습니다


16

Homebrew 설치에서 MySQL을 실행하려고하지만 시도 할 때 계속 실패 mysql.server start합니다.

/usr/local/var/mysql/<name>.local.err책을 읽고 몇 초 마다이 오류 메시지를 계속 보냅니다.

2018-06-20T20:38:54.6NZ mysqld_safe Logging to '/usr/local/var/mysql/<computer name>.local.err'.
2018-06-20T20:38:54.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/var/mysql
2018-06-20T20:38:54.379228Z 0 [System] [MY-010116] [Server] /usr/local/opt/mysql/bin/mysqld (mysqld 8.0.11) starting as process 6271
2018-06-20T20:38:54.383128Z 0 [Warning] [MY-010159] [Server] Setting lower_case_table_names=2 because file system for /usr/local/var/mysql/ is case insensitive
2018-06-20T20:38:54.449869Z 1 [ERROR] [MY-012526] [InnoDB] InnoDB: Upgrade after a crash is not supported. This redo log was created with MySQL 5.7.20. Please follow the instructions at http://dev.mysql.com/doc/refman/8.0/en/upgrading.html
2018-06-20T20:38:54.449947Z 1 [ERROR] [MY-012930] [InnoDB] InnoDB: Plugin initialization aborted with error Generic error.
2018-06-20T20:38:54.919197Z 1 [ERROR] [MY-011013] [Server] Failed to initialize DD Storage Engine.
2018-06-20T20:38:54.919769Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2018-06-20T20:38:54.919814Z 0 [ERROR] [MY-010119] [Server] Aborting
2018-06-20T20:38:54.920978Z 0 [System] [MY-010910] [Server] /usr/local/opt/mysql/bin/mysqld: Shutdown complete (mysqld 8.0.11)  Homebrew.
2018-06-20T20:38:54.6NZ mysqld_safe mysqld from pid file /usr/local/var/mysql/bae.local.pid ended

답변:


17

내 로그에 똑같은 오류가있었습니다. 닛폰의 대답을 세우기 위해.

MySQL의 모든 버전을 제거하십시오 (5.7.21, 5.7.22 및 8.0.11이 있음).

brew uninstall --force mysql

제거 및 수리 확인 :

brew services list 그리고 brew doctor

원본 MySQL 이름 바꾸기 :

mv /usr/local/var/mysql /usr/local/var/old.mysql

최신 MySQL 설치 (현재 8.0.11) :

brew install mysql

MySQL 보안 설치 :

/usr/local/bin/mysql_secure_installation

처음 에이 오류가 발생했습니다. Error: Access denied for user 'dbadmin'@'localhost' (using password: YES)

사용자 수준 구성을 사용하고 있습니다. 그래서 .my.cnf로 이름을 바꾸고 보안 설치를 다시 실행했습니다.

mv /Users/[your username]/.my.cnf /Users/[your username]/old.my.cnf /usr/local/bin/mysql_secure_installation

설치 프롬프트에서 다음 옵션을 입력했습니다 Y, 0, Y, N, N, Y, Y.

MySQL Workbench 업그레이드 이후에도 MySQL Workbench (GA 6.3.10)에 연결할 수 없었지만 최종적으로 MySQL을 시작한 것으로 보입니다. 다음과 같은 오류 메시지가 나타납니다.

"인증 플러그인 'caching_sha2_password'을 (를)로드 할 수 없습니다 : dlopen (/usr/local/mysql/lib/plugin/caching_sha2_password.so, 2) : 이미지를 찾을 수 없습니다"

이 문제를 해결하기 위해 MySQL Workbench 8.0.11 rc (개발 릴리스 버전)를 다운로드했습니다. GUI를 사용하여 새 비밀번호 규칙을 준수하기 전에 보유한 사용자를 추가했습니다. 더 안전한 비밀번호로 ~ / .my.cnf를 업데이트하고 이름을 변경했습니다. 그런 다음 내 DB를 복원했습니다.

이 시점에서 보안 설치 중에 설정 한 새 비밀번호와 root를 사용하여 워크 벤치에 연결할 수있었습니다.

정리 (이름이 바뀐 디렉토리와 그 내용을 제거하십시오) :

rm -r /usr/local/var/old.mysql


1
이것은 어제 원래 포스터 의해 이미 스스로 대답 했습니다.
JakeGould

4
아마도 그것은 이미 스스로 대답했지만, 필요한 정확한 단계를 찾는 사람들에게는 필수적인 세부 사항은 아닙니다.
Sturm

/usr/local/var/mysql처음에 단순히 이름을 제거하지 않고 이름을 바꾸는 목적은 무엇입니까 ? old.mysql정리 단계 이외의 다른 곳에서는 사용되지 않습니다. 데이터베이스를 보존하면서 MySQL을 다시 설치하는 것이 도움이 되었기 때문에 묻습니다.
user2763030

내가 한 이유는 나중에 데이터를 원할 경우를 위해서였습니다. 모든 로컬 데이터베이스는 프로덕션 환경의 복제본이므로 업그레이드 프로세스 후에 아무것도 백업하지 않고 동기화했습니다. mysql 8이 암호에 대한 암호화 규칙을 업데이트했지만 이전 버전의 데이터베이스를 사용할 수 있다고 생각합니다. sha2 대신 이전 인증 방법을 사용하기 위해 .my.cnf에 줄을 추가 할 수 있다는 것을 알고 있습니다. 미안하지만 그 부분에 대해 잘 알고 있지 않습니다. 이게 도움이 되길 바란다.
Hunter

당신이 얻을 경우 Error: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)실행하는 동안 /usr/local/bin/mysql_secure_installation, 당신은 내가했던 것처럼 단순히 MySQL 서버를 시작해야 할 수 있습니다. "mysql.server start"를 실행하면됩니다.
Richie Thomas

12

tldr; 새로운 버전의 mysql이 Homebrew를 통해 설치되었습니다. 이전에 설치된 버전으로 되돌립니다.

brew switch mysql X.X.XX` and `brew services restart mysql 

전체 이야기는을 사용하여 최신 버전의 mysql을 설치했을 가능성이 있다는 것입니다 brew upgrade. 의 출력을 검토하십시오 brew info mysql. 여러 버전이 표시 될 수 있습니다.

제 경우에는 다음 두 가지를 모두 보았습니다.

/usr/local/Cellar/mysql/5.7.17
/usr/local/Cellar/mysql/8.0.11

확인 mysql --version하고 최신 8.0.11이 실행 중입니다.

Homebrew에는 switch서비스간에 수행 할 수 있는 명령이 포함되어 있습니다.

버전을 자신의 것으로 바꾸어 이것을 실행하십시오.

brew switch mysql 5.7.17

mysql을 다시 시작하십시오 :

brew services restart mysql

모두 작동 상태로 돌아와야합니다.


1
이것은 최종 답변이미 자체 답변 및 수락 된 답변과 어떻게 다릅니 까?
JakeGould

4
@JakeGould 답변 167207 은 모든 데이터베이스 내용을 삭제 하도록 제안합니다. 내 대답은 brew switch그렇지 않은 것을 사용 하는 것이 좋습니다 .
johnsampson

그럴 수 있지. 좋은 조언. +1
JakeGould

1
좋은 대답입니다. 나를 위해 일했다
Kuppuraj

1
너무 나쁘다 나는 모든 버전의 mysql을 제거하기 전에 이것을 찾지 못했다. FML
andrewtweber

2

문제가에서 이전 설치 인 것 같습니다 /usr/local/var/mysql.

homebrew를 통해 제거 /usr/local/var/mysql,, 실행 brew doctor및 homebrew를 통해 다시 설치 한 후 문제가 해결되었습니다.


/usr/local/var/mysql제거하면 모든 데이터베이스 컨텐츠 가 제거 됩니까?
Nicodemuz

트윗 담아 가기
nipponese

7
아마도 경고로 강조해야합니다!
Nicodemuz
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.