손상된 xampp 'mysql.user' 테이블을 어떻게 복구합니까?
어제 Xampp를 사용하여 간단한 웹 기반 유틸리티 도구를 만들었습니다.오늘 계속 작업하고 싶었지만 xampp 제어판에서 이상한 오류가 발생했습니다.
다음은 MySQL 오류 로그입니다.
2019-07-20 23:47:13 0 [Note] InnoDB: Uses event mutexes
2019-07-20 23:47:13 0 [Note] InnoDB: Compressed tables use zlib 1.2.11
2019-07-20 23:47:13 0 [Note] InnoDB: Number of pools: 1
2019-07-20 23:47:13 0 [Note] InnoDB: Using SSE2 crc32 instructions
2019-07-20 23:47:13 0 [Note] InnoDB: Initializing buffer pool, total size = 16M, instances = 1, chunk size = 16M
2019-07-20 23:47:13 0 [Note] InnoDB: Completed initialization of buffer pool
2019-07-20 23:47:13 0 [Note] InnoDB: Starting crash recovery from checkpoint LSN=1819402
2019-07-20 23:47:14 0 [Note] InnoDB: 128 out of 128 rollback segments are active.
2019-07-20 23:47:14 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1"
2019-07-20 23:47:14 0 [Note] InnoDB: Creating shared tablespace for temporary tables
2019-07-20 23:47:14 0 [Note] InnoDB: Setting file 'C:\xampp\mysql\data\ibtmp1' size to 12 MB. Physically writing the file full; Please wait ...
2019-07-20 23:47:14 0 [Note] InnoDB: File 'C:\xampp\mysql\data\ibtmp1' size is now 12 MB.
2019-07-20 23:47:14 0 [Note] InnoDB: Waiting for purge to start
2019-07-20 23:47:14 0 [Note] InnoDB: 10.3.16 started; log sequence number 1819411; transaction id 257
2019-07-20 23:47:14 0 [Note] InnoDB: Loading buffer pool(s) from C:\xampp\mysql\data\ib_buffer_pool
2019-07-20 23:47:14 0 [Note] InnoDB: Buffer pool(s) load completed at 190720 23:47:14
2019-07-20 23:47:14 0 [Note] Plugin 'FEEDBACK' is disabled.
2019-07-20 23:47:14 0 [Note] Server socket created on IP: '127.0.0.1'.
2019-07-20 23:47:14 0 [ERROR] mysqld.exe: Table '.\mysql\user' is marked as crashed and should be repaired
2019-07-20 23:47:14 0 [ERROR] mysqld.exe: Index for table '.\mysql\user' is corrupt; try to repair it
2019-07-20 23:47:14 0 [ERROR] Couldn't repair table: mysql.user
2019-07-20 23:47:14 0 [ERROR] Fatal error: Can't open and lock privilege tables: Index for table 'user' is corrupt; try to repair it
이미 복구하려고 했는데 mySQL 서비스가 시작도 안 돼서 어쩔 수가 없어요
이것은 mariaDB(즉, mySQL)에서 거의 확실히 알려진 버그입니다.자세한 내용은 ApacheFriends.org 을 참조하십시오.사용자 암호가 변경된 후 문제가 발생합니다(종종 사용자 루트).
손실을 줄이고 XAMPP를 7.3.5로 다운그레이드하는 것이 일반적인 조언인 것 같습니다.
그렇지 않으면 예를 들어 7.3.7을 완전히 제거/재설치한 후에도 문제가 나중에 다시 발생할 수 있습니다.
다음은 Windows/X에 대한 우회/수리 방법입니다.AMPP 사용자.백업이 있다고 가정합니다. 백업이 있을 수도 있습니다. 설치 프로세스는 초기 백업을 제공하는 것으로 나타납니다.이 아이디어는 다음 버전이 도착할 때까지 충분히 오래 다운그레이드하지 않고 방송을 재개할 수 있도록 하는 것입니다.
늪에서 벗어나는 가장 빠른 방법은 9단계로 가는 것입니다.
' cmy.를 찾습니다. 'my.ini'(예: c:\xampp\mysql\bin\my.ini).
레이블 '[mysqld]' 뒤에 있는 새 줄에 'skip-grant-tables'를 삽입합니다.나중에 제거합니다.
이제 XAMPP 제어판에서 mySQL을 시작할 수 있습니다.
을 시작하고 'user'를 선택합니다. phpMyAdmin은 'mysql'입니다.
확인해야 합니다. #1034 테이블 'user'의 인덱스가 손상되었습니다. 복구해 보십시오.
왼쪽 패널에서 'myql'을 선택한 후 오른쪽 패널에서 'user'를 선택합니다.
에서 '을 실행한 다음 테이블을 합니다.'선택한 상태' 드롭다운에서 '분석'을 실행한 다음 '수리 테이블'을 실행합니다.
'복구'가 실패할 경우 '테이블 사용자 삭제'를 선택할 수밖에 없습니다.
다음 3개의 파일을 복사하여 배포 백업에서 '사용자' 테이블을 다시 만듭니다.
C:\xampp\mysql\backup\mysql\user.frm
C:\xampp\mysql\backup\mysql\user.MYD
C:\xampp\mysql\backup\mysql\user.MYI
로.
C:\xampp\mysql\data\mysql\
그런 다음 XAMPP를 다시 시작하고 원하는 대로 사용자를 추가/제거/편집합니다.
마지막 한 가지 요점:'user' 테이블과 'db' 테이블 사이에 어떤 연관성이 있는 것 같습니다.단계(7)에 따라 'db' 테이블을 수리해야 할 수도 있습니다.
bellow 명령어를 사용하면 당신은 지금처럼 행복해질 것입니다.
repair table DATABASENAME.TABLENAME use_frm;
이 명령을 실행하기 전에 스토리지 기본 설정과 백업을 사용하여 대문자를 변경해야 한다는 것을 알고 있을 것입니다. :)
테이블 'db'에 대한 #1034-Index가 손상되었습니다. phpmyadmin에서 복구를 시도하십시오.
단계:1 손상된 테이블에 대해 다음 두 가지 쿼리를 실행합니다.
REPAIR TABLE mysql.db
REPAIR TABLE mysql.user
단계:2 아래 이미지를 따릅니다.
손상된 테이블을 확인한 다음 Check all(모두 확인) 옆의 드롭다운을 클릭하고 드롭다운 목록에서 선택합니다.Repair table테이블 유지 관리 그룹에서 선택합니다.
창:
Xampp 폴더로 이동: Xampp->mysql->bin
mysql_upgrade.exe를 두 번 클릭합니다.
브라우저를 새로 고친 후(breakmyadmin)
그냥 사용하기
REPAIR TABLE mysql.user
가장 쉬운 방법
손상된 테이블을 확인한 다음 복구 테이블을 선택/클릭합니다.
이것을 시도해 보세요. 효과가 있기를 바랍니다.
또한 XAMPP 버전 7.3.16에서 이 'bozo' 오류가 발생했으므로 조만간 업그레이드하지 않을 것입니다.SQL 로그를 사용하여 데이터베이스를 관리하므로 오류 --mysql.db에 나열된 특정 테이블을 복구할 수 있었습니다. 명령줄 버전이 무엇인지는 모르겠지만 SQL 로그에서 확인한 옵션의 스크린샷이 있습니다.
해결책을 찾을 때까지 가장 좋은 방법은 다음과 같습니다.
에 가다
phpmyadmin그리고 찾기mysql데이터베이스샘플 이미지 여기을
mysql데이터베이스가 열립니다. 구조가 열립니다.다의확란인의 합니다.
global_priv한 후 에 이블목서테클을릭고마클지릭다합니에막하테이블을 클릭합니다.with selected드롭다운 목록을 클릭합니다.드롭다운 옵션
바로 그거야.이제 가도 됩니다.
다음 두 가지 쿼리를 실행합니다.
CHECK TABLE `users`
그리고.
CHECK TABLE `db`
손상된 테이블에 대해 다음 쿼리 실행
REPAIR TABLE `users`
및/또는
REPAIR TABLE `db`
창:
Apache 및 MySQL이 계속 실행되는지 확인합니다.
- Xampp 폴더로 이동: Xampp->mysql->bin
- mysql_upgrade.exe를 두 번 클릭합니다.
- 브라우저를 새로 고친 후(breakmyadmin)
검증 및 테스트 완료
이것은 저에게 효과가 있었습니다. 사용자 계정의 문제를 해결했습니다.
repair table mysql.db use_frm
xampp에서.
localhost/messagemyadmin
여기서 dbas mysql을 선택합니다.
그런 다음 복구 테이블 global_priv를 실행합니다.
root 사용자의 비밀번호를 변경한 후 1034에 문제가 발생했습니다.저는 phpMyAdmin 페이지의 왼쪽 하단에 있는 콘솔에서 다음과 같은 질문을 했습니다.
수리 테이블 mysql.db
복구 테이블 mysql.user
mysql.user는 테이블이 아니라 뷰이므로 복구할 수 없습니다.걱정하지 말고 mysql에 있는 다른 테이블만 다 고치면 됩니다.
다음을 추가하는 것이 저에게 효과가 있었습니다.
skip-grant-tables
그러나 백업 폴더에서 데이터로 사용을 복원한 후 skip-grant-table을 다시 제거하면 MySQL이 시작되지 않습니다.
MySQL을 실행할 수 없습니다.계속 나오고 있어요.그래서 다른 사람들이 제안한 쿼리를 실행할 수 없었습니다.하지만, 제 해결책은 저에게 조금 더 쉬워 보였습니다.세 개의 메인 DB 백업 파일을 복사했습니다. 루트 설치 위치는 다를 수 있지만, 내 것은C:\xampp\mysql\backup\mysql.
- db.frm
- db.MAD
- db.MAI
항상 파일을 먼저 백업합니다.그런 다음 이 파일들을 데이터 디렉토리에 복사하여 손상된 파일을 덮어썼습니다.C:\xampp\mysql\data\mysql.
이렇게 하면 오류 없이 MySQL을 완벽하게 시작할 수 있었습니다.
mysql을 중지한 다음
my.cnf또는my.ini그 다음에 추가skip-grant-tables원본(새로 고침) MySQL에서 사용자 테이블을 복사하십시오.
[path_data]\mysql\user.frm [path_data]\mysql\user.MYD [path_data]\mysql\user.MYI그런 다음 mysql_upgrade를 실행하는 중
$ mysql_secure_installation
그런 다음 지침을 따릅니다.
이 단계는 Laragon(Windows)에 대한 것입니다.
mysql 데이터베이스를 선택하고 아래 명령을 실행합니다.효과가 있었습니다.수리 테이블global_priv
Xampp에서도 같은 오류가 발생하여 mysql_upgrade.exe로 해결했습니다.
배경:나는 새로운 dbin adminer를 가져와서 해당 db에 대한 사용자를 생성하려고 시도했지만 문제가 발생했습니다.제가 가져오려던 db는 phpmyadmin으로 만든 덤프였습니다.
수행한 작업: 실행했습니다(Gitbash에서 Windows 10으로 이동).
/c/xampp/mysql/bin/mysql_upgrade.exe -u root -p
이 실행 결과에서 오류가 없는 여러 단계를 확인했지만 얼마 전에 가져온 DB의 동일한 보기를 확인했습니다. 유효한 사용자가 없습니다.
...
Phase 3/7: Fixing views
...
The user specified as a definer ('xxx'@'%') does not exist
...
이 실행이 끝날 때 사용자를 생성하려고 시도했는데 정상적으로 작동했습니다.
파티에서 늦었지만 복구에 실패할 경우 사용자 테이블이 보기가 아닌 실제 테이블인지 확인합니다.후자의 경우 다음을 사용하여 복구를 시도할 수 있습니다.
REPAIR VIEW user;
아래 파일을 업데이트해야 합니다. 먼저 \xampp\mysql\bin으로 이동한 다음 mysql_upgrade.exe를 실행하십시오.
저는 이것이 끝나고 나서 일이 되기를 바랍니다.
1단계. XAMPP 설치 디렉토리에서 "\phpMyAdmin\libraries\"를 찾습니다.
2단계. 위 폴더에서 이 파일 > "check_user_privileges.inc.php"를 찾습니다.
3단계. 선택한 코드 편집기에서 위의 파일을 열고 줄 번호 28을 찾습니다.
$checkUserPrivileges->분석허가 표시(); "
4단계. 라인 번호 28을 삭제하고 대신 아래 코드를 추가합니다.
$GLOBALS['is_create_db_priv'] = true;
$GLOBALS['is_reload_priv'] = true;
$GLOBALS['db_to_create'] = '';
$GLOBALS['dbs_where_create_table_allowed'] = array('*');
$GLOBALS['dbs_to_test'] = false;
$GLOBALS['db_priv'] = true;
$GLOBALS['col_priv'] = true;
$GLOBALS['table_priv'] = true;
$GLOBALS['proc_priv'] = true;
5단계. 파일을 저장하고 XAMPP를 다시 시작합니다.
mysql_upgrade를 실행 중입니다.\xampp\bin에 있는 exe에서 문제를 해결했습니다.
언급URL : https://stackoverflow.com/questions/57128891/how-repair-corrupt-xampp-mysql-user-table
'programing' 카테고리의 다른 글
| Returning From Spring WebFlux JSON에서 문자열 배열 대신 문자열 하나를 반환합니다. (0) | 2023.07.23 |
|---|---|
| 첫 번째 공백 발생 시 분할 문자열 (0) | 2023.07.23 |
| Mac에서 pipas 루트로 실행할 때 "권한 거부"를 받는 중 (0) | 2023.07.23 |
| 패키지 사양의 절차 (0) | 2023.07.23 |
| 다중 변수가 없음이 아닌지 확인하는 가장 단순한 방법은 무엇입니까? (0) | 2023.07.23 |
