Mysql이 시작되지 않음 - ibdata1이 손상되었습니까? - 운영 체제 오류 13번 - 권한 문제
전원 장애로 인한 서버 종료.
Mysql은 지금 시작하지 않습니다.
디스크가 꽉 찼지 않습니다.는 Syslog 문서 아래에 .
Oct 11 15:03:31 joe mysqld_safe[24757]: started
Oct 11 15:03:31 joe mysqld[24760]: 101011 15:03:31 InnoDB: Operating system error number 13 in a file operation.
Oct 11 15:03:31 joe mysqld[24760]: InnoDB: The error means mysqld does not have the access rights to
Oct 11 15:03:31 joe mysqld[24760]: InnoDB: the directory.
Oct 11 15:03:31 joe mysqld[24760]: InnoDB: File name ./ibdata1
Oct 11 15:03:31 joe mysqld[24760]: InnoDB: File operation call: 'create'.
Oct 11 15:03:31 joe mysqld[24760]: InnoDB: Cannot continue operation.
ubuntu 또는 apparmor를 사용하는 경우 apparmor에서 이 변경을 허용해야 합니다.
편집 /etc/apparmor.d/usr.sbin.mysqld
고/var/lib/mysql
으로와 DATADIR
.
그건 작동할 거야.
오류:
101130 14:42:51 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pidended101130 18:07:58 mysqld_safe /var/lib/mysql의 데이터베이스를 사용하여 mysqld 데몬을 시작하기101130 18:07:58 InnoDB: 파일 작업 중 운영체제 오류 13번 InnoDB:이 오류는 mysqld에 액세스 권한이 없음을 의미합니다.InnoDB: 디렉토리입니다. InnoDB: 파일 이름 ./ibdata1InnoDB: 파일 작업 호출: 'open'입니다. InnoDB: 작업을 계속할 수 없습니다.
솔루션 SeLinux SeLinux 보안:
[root@localhost ~]# service mysqld 재시작Deterenendo mysqld: [확인]이니치안도 마이스클드: [FALLO][root@localhost ~]# restorecon -R /var/lib/mysql/[root@localhost ~]# service mysqld 재시작Deterenendo mysqld: [확인]이니치안도 mysqld: [OK ][root@localhost ~]#
확인 부탁드립니다.
chown -R mysql:mysql /var/lib/mysql
파일이 손상되지 않았습니다.이러한 오류의 원인은 'error', 즉 'error'로 알 수 있습니다.
toaster:~ morgo$ perror 13
OS error code 13: Permission denied
InnoDB에는 손상 탐지(페이지 체크섬) 기능이 있으며, 문제가 있다면 기꺼이 알려드리겠습니다.
디렉토리 권한이 변경되었거나 my.cnf 파일이 호스로 처리되었으며 데이터 파일을 다른 곳에 다시 만들려고 합니다.
보안 컨텍스트(셀리눅스)를 복원하는 것이 효과가 있었습니다.
restorecon -R /var/lib/mysql/
간단히 말해서 (특히 RHEL/CentOS/Fedora에서) 시도해 보십시오.
getenforce
으로 답하면Enforcing
SELinux를 실행 중입니다.이다다이로 일시적으로 비활성화 합니다.setenforce 0
지금 마리아DB가 시작되는지 확인해보세요!특히 RHEL/CentOS/Fedora 일반적입니다.
이 공식 기사뿐만 아니라 더 아래에 더 많은 것들이 있습니다.
일반적으로
유닉스 환경에는 사용자 접근 권한 외에도 파일 접근을 방해할 수 있는 것들이 더 많습니다.
- SELinux(위 참조) 또는 AppArmor(Dan이 언급한 바와 같이)와 같은 보안 모듈은 이를 허용하지 않을 수 있습니다.
- ACL(Access Control List)을 필요한 파일/디렉토리에 대해 구체적으로 설정할 수 있음
- 모든 상위 폴더를 다른 사용자가 소유할 수 있으며, 다른 사용자를 위해 x(="continuous access")가 설정되어 있지 않습니다.
또한 예상치 못한 다른 요인이 있을 수 있습니다. 예를 들어...
- mysql
datadir
이는다로조이(조됩니다 )./etc/my.cnf
) - Mysql이(이상하게) 다른 사용자로 실행되고 있거나 파일을 다른 사용자가 단순하게 소유하고 있을 수 있습니다.
그냥 머릿속에서 본 것들을 보는 것에 대해 언급하는 것입니다 (그런데 이 답변에 자유롭게 편집/추가하세요).
이 경우 SELinux가 "문제"입니다.
영구적인 솔루션의 경우 적절한 보안 컨텍스트를 복원할 수 있습니다.
restorecon -R /var/lib/mysql/
합니다. 또는 구성을 편집하여 SELinux를 비활성화하거나(일반적으로), SELinux를 비활성화합니다./etc/selinux/config
및 setting ) SELINUX=disabled
아래의 기사에 제시된 바와 같이
- 다음은 mariadb.com 의 공식 도움말 페이지입니다.MariaDB가 시작되지 않으면 어떻게 해야 합니까?
- 그리고 여기 redhat.com 에서 제공하는 것이 있습니다: MariaDB 데이터베이스 위치 변경
분명히 MySQL에도 동일한 방식으로 적용할 수 있습니다.
내 센트에도 똑같은 문제가 있었습니다.OS 박스.mysql data directory를 이동한 후 소유자와 권한이 같은 파일을 복사했으므로 더 이상 서비스를 시작할 수 없었습니다.
SELinux 보안 컨텍스트에 문제가 있었습니다.만약 당신이 당신의 센트를 실행한다면OS stock은 활성화 될 가능성이 높고 MySQL로 원하는 작업을 수행할 수 없습니다.이 문제를 해결하려면:
먼저 이전의 dir와 새로운 dir를 비교합니다.
ls -Z /var/lib/mysql
그리고.
ls -Z /new/mysql/dir
다른 점이 있다면 당신의 문제가 될 가능성이 높습니다.이 내용을 수정하려면:
chcon -R --type=mysql_db_t /new/mysql/dir
-R 스위치는 재귀를 위한 것입니다.하나의 파일만 변경해야 하는 경우에는 생략할 수 있습니다.사용자의 컨텍스트가 제 컨텍스트와 다를 경우(다른 디스트로일 수 있음) 첫 번째 컨텍스트의 출력으로 표시된 컨텍스트를 사용합니다(SELinux stuff의 세 번째 필드여야 함).
ls -Z /var/lib/mysql
나는 같은 문제가 있었고 아래 단계까지 수정했습니다.
작업 디렉토리 /var/lib/mysql
이전 /var/lib/mysql은 알 수 없는 사용자가 소유하고 있었습니다.
mysql로 변경했습니다.
mysql]# chown -R mysql:mysql *
mysql]# service mariadb start
Redirecting to /bin/systemctl start mariadb.service
매력적으로 작동합니다.
내 센트에도 똑같은 문제가 있었습니다.OS 박스.mysql data directory를 이동한 후 소유자와 권한이 같은 파일을 복사했으므로 더 이상 서비스를 시작할 수 없었습니다.
SELinux 보안 컨텍스트에 문제가 있었습니다.만약 당신이 당신의 센트를 실행한다면OS stock은 활성화 될 가능성이 높고 MySQL로 원하는 작업을 수행할 수 없습니다.이 문제를 해결하려면:
먼저 이전의 dir와 새로운 dir를 비교합니다.
ls -Z /var/lib/mysql
그리고.
ls -Z /new/mysql/dir
다른 점이 있다면 당신의 문제가 될 가능성이 높습니다.이 내용을 수정하려면:
chcon -R --type=mysql_db_t /new/mysql/dir
-R 스위치는 재귀를 위한 것입니다.하나의 파일만 변경해야 하는 경우에는 생략할 수 있습니다.
이것이 나에게 떠올랐을 때, 나는 답을 그 안에서 찾았습니다./etc/mysql/my.cnf
구성 파일. 더datadir
선이 가리키지 않았습니다./var/lib/mysql
디렉토리(데이터베이스가 있는 위치).이 경로를 입력하면 서버가 다시 시작하는 데 문제가 없습니다.
SEL 리눅스를 사용하는 경우
전체관리
yum whatprovides /usr/sbin/semanage
당신은policycoreutils-python-2.5-22.el7.x86_64
mysqld 보안 컨텍스트 보기
설치후yum install policycoreutils-python
내 sqld가 어떤 다른 보안 맥락을 갖는지 보면 됩니다.
semanage fcontext -l | grep mysqld
/etc/mysql(/.*)? all files system_u:object_r:mysqld_etc_t:s0
/etc/my\.cnf\.d(/.*)? all files system_u:object_r:mysqld_etc_t:s0
/var/log/mysql.* regular file system_u:object_r:mysqld_log_t:s0
/var/lib/mysql(-files|-keyring)?(/.*)? all files system_u:object_r:mysqld_db_t:s0
/var/run/mysqld(/.*)? all files system_u:object_r:mysqld_var_run_t:s0
/var/log/mariadb(/.*)? all file system_u:object_r:mysqld_log_t:s0
/var/run/mariadb(/.*)? all files system_u:object_r:mysqld_var_run_t:s0
/usr/sbin/mysqld(-max)? regular file system_u:object_r:mysqld_exec_t:s0
/var/run/mysqld/mysqlmanager.* regular file system_u:object_r:mysqlmanagerd_var_run_t:s0
/usr/lib/systemd/system/mysqld.* regular file system_u:object_r:mysqld_unit_file_t:s0
/usr/lib/systemd/system/mariadb.* regular file system_u:object_r:mysqld_unit_file_t:s0
/etc/my\.cnf regular file system_u:object_r:mysqld_etc_t:s0
/root/\.my\.cnf regular file system_u:object_r:mysqld_home_t:s0
/usr/sbin/ndbd regular file system_u:object_r:mysqld_exec_t:s0
/usr/libexec/mysqld regular file system_u:object_r:mysqld_exec_t:s0
/usr/bin/mysqld_safe regular file system_u:object_r:mysqld_safe_exec_t:s0
/usr/bin/mysql_upgrade regular file system_u:object_r:mysqld_exec_t:s0
/etc/rc\.d/init\.d/mysqld regular file system_u:object_r:mysqld_initrc_exec_t:s0
/var/lib/mysql/mysql\.sock socket system_u:object_r:mysqld_var_run_t:s0
/usr/libexec/mysqld_safe-scl-helper regular file system_u:object_r:mysqld_safe_exec_t:s0
/home/[^/]+/\.my\.cnf regular file unconfined_u:object_r:mysqld_home_t:s0
여기에 mysqld에 대한 모든 컨텍스트가 표시됩니다. 설명이 포함된 짧은 목록
- mysqld_etc_t - 구성 파일
- mysqld_db_t - data db 파일
- mysqld_log_t - 로그 파일
- mysqld_exec_t - 실행 파일
따라서 파일에 잘못된 보안 컨텍스트가 있으면 권한이 거부됩니다(오류 13).
해결책
chcon -R -u system_u -t mysqld_db_t /var/lib/mysql
하지만 "정상적인" 권한도 확인해 보십시오.이 문제가 있었습니다.centos
. 당신이 해야합니다.systemctl restart mysql
변경사항에 대해서는
제 상황에서는 셀리눅스의 문제가 있습니다.그리고.
chcon -R --type=mysql_db_t /new/mysql/dir
오류가 발생합니다.
chcon: failed to change context of /new/mysql/dir to root:object_r:mysql_db_t: Invalid argument
.
그래서 명령을 사용합니다.chcon -R root:object_r:mysqld_db_t /new/mysql/dir
.
Synology NAS에서 이 문제가 발생할 경우 Synology 지원 팀의 조언에 따라 해결할 수 있습니다.
사용자님께,
이 문제는 알려진 문제로 확인되었으며 향후 MariaDB 릴리스에서 이 문제를 해결하도록 노력하겠습니다.불편을 끼쳐드려 죄송합니다.
다음은 해결 방법입니다.
- "root" 계정 및 암호(admin과 동일)를 사용하여 DS에 텔넷을 시도하십시오.
- 명령 "echo 1 > /var/services/mysql/VERSION"을 실행합니다.
- DSM에서 MariaDB 패키지 열기가 업데이트를 다시 트리거합니다.
- DB 암호를 입력하고 Update를 클릭하면 이 문제가 해결됩니다.
자세한 정보: Synology 포럼
저도 같은 문제가 있었습니다.많은 조사를 해서 이 해결책을 알아냈습니다.ibdata1 sudo shadowprotect -u root | root에서 이 명령을 실행해야 합니다.
이게 무슨 짓인지 모르겠어요..하지만 저에겐 효과가 있었습니다.
행운을 빌어요.
언급URL : https://stackoverflow.com/questions/3907666/mysql-wont-start-ibdata1-corrupt-operating-system-error-number-13-permis
'source' 카테고리의 다른 글
여러 도메인 포인팅 루트 폴더는 web.config의 도메인 이름에 따라 하위 폴더를 포인팅해야 합니다. (0) | 2023.09.14 |
---|---|
문자열 형식의 ORACLE RAW(오라클 RAW)에서 표준 GUID로 (0) | 2023.09.14 |
파워셸 스크립트를 백그라운드에서 분당 한 번 실행 (0) | 2023.09.14 |
Pandas value_counts()에서 값 추출 (0) | 2023.09.14 |
리액트 네이티브에서 SVG 파일을 표시하는 방법? (0) | 2023.09.14 |