mysqld : dir을 데이터로 변경할 수 없습니다. 서버가 시작되지 않습니다


79

설치 프로그램으로 MySQL 서버를 설치하고 시작했습니다. 재부팅 후 다시 시작하고 오류가 발생했습니다.

D:\Program Files\MySQL\MySQL Server 5.7\bin>mysqld -u root -p
mysqld: Can't change dir to 'D:\Program Files\MySQL\MySQL Server 5.7\data\'     (Errcode: 2 - No such file or directory)
2015-11-17T08:30:18.822962Z 0 [Warning] TIMESTAMP with implicit DEFAULT     value is deprecated. Please use --explicit_defaults_for_timestamp server option     (see documentation for more details).
2015-11-17T08:30:18.822962Z 0 [Warning] Insecure configuration for --secure-    file    -priv: Current value does not restrict location of generated files.     Consider setting it to a valid, non-empty path.
2015-11-17T08:30:18.822962Z 0 [Note] mysqld (mysqld 5.7.9) starting as     process 1108 ...
2015-11-17T08:30:18.838586Z 0 [Warning] Can't create test file D:\Program     Files\MySQL\MySQL Server 5.7\data\DESKTOP-RNBR3E8.lower-test
2015-11-17T08:30:18.838586Z 0 [Warning] Can't create test file D:\Program     Files\MySQL\MySQL Server 5.7\data\DESKTOP-RNBR3E8.lower-test
2015-11-17T08:30:18.838586Z 0 [ERROR] failed to set datadir to D:\Program     Files\MySQL\MySQL Server 5.7\data\
2015-11-17T08:30:18.838586Z 0 [ERROR] Aborting


2015-11-17T08:30:18.838586Z 0 [Note] Binlog end
2015-11-17T08:30:18.838586Z 0 [Note] mysqld: Shutdown complete

MySQL을 다시 설치하려고했습니다.
업데이트 : 관리자로
실행하면 mysqld -u root -p아무 일도 일어나지 않습니다.


2
확인 폴더가 존재 MySQL의 사용자 권한이
georgecj11

나에게도 같은 일이 일어났습니다. 문제는 1. 비표준 설치 디렉토리 (C : \ .. 아님) 및 \ 또는 2. 비표준 데이터 디렉토리 및 \ 또는 3. MySQL이 서비스로 설치되지 않은 것입니다. 인스턴스 (프로세스)가 여전히 이상하게 작동하는 것처럼 보이지만 nulliusinverba의 답변을 사용하여 해결했습니다.
Riva

Windows에 설치하는 경우 .msi설치 프로그램을 사용하는 것이 좋습니다 . 수동 설치보다 훨씬 쉬움
Kolob Canyon

@KolobCanyon 안타깝게도 msi 설치 프로그램을 사용하여 주요 버전간에 업그레이드 할 수 없습니다
Ian

답변:


79

Windows 설치 프로그램을 사용했기 때문에 MySQL 5.7을 Windows 서비스로 실행할 수 있도록 모든 것이 설정되었습니다. 이는 대부분의 경우 훌륭한 옵션입니다.

mysqld.exe명령 줄에서 실행하는 대신

  1. Win + R
  2. 운영 services.msc
  3. 오른쪽 클릭 MySQL57
  4. 서비스를 시작하십시오.

10
설치 중에 (내가 한 것처럼) MySQL 서버를 서비스로 설치하지 않으려는 경우를 제외하고. 서비스가 전혀 생성되지 않고 서비스에서 헛된 검색이 수행됩니다.
Riva

2
항상 MySQL을 사용하는 경우 Windows와 함께 자동으로로드되도록 요청할 수 있습니다. @AaronDanielson 지침에 따라 MySQL57 서비스를 마우스 오른쪽 버튼으로 클릭하고 "속성"을 열고 "초기화 유형"을 "수동"에서 "자동"으로 변경합니다.
Renato Byrro

제한된 사용자로 Windows에서 작업하는 경우 Windows 시작 기호를 클릭하고 services.msc를 입력 한 다음 마우스 오른쪽 단추를 클릭하고 관리자로 시작합니다.
Robi Wan Kenobi

1
먼저 "mysqld -u root --initialize-insecure"를 실행합니다. 비밀번호와 필수 파일없이 사용자로 루트를 사용하여 데이터 폴더를 생성합니다. 그런 다음 "mysqld.exe --console"을 실행합니다.
Nizar

이렇게하면 초기화 파일을 처리하지 않고 암호가 재설정되지 않습니다. 시작되지만 여전히 들어갈 수 없습니다.
RichMeister

82

나는 같은 문제를 만났다. 제 경우에는 ..\data디렉토리 가 없었으므로 디렉토리에서 명령을 C:\mysql\실행 하고 . 나중에 명령을 사용하여 서버 시작을 테스트 할 수 있습니다 . mysqld --initializec:\mysql\bin\c:\mysql\datamysqld.exe --console


기록을 위해 MySQL Server의 "noinstall"버전을 설치하고 구성하는 전체 절차 는 공식 문서에
mcont

1
또한 cmdas 를 시작하는 것을 잊지 마십시오 Administrator(예 : 오른쪽 클릭 cmd-> 관리자 권한으로 실행
JejeBelfort

1
이것은 windows10에서 root pw를 재설정하려고 할 때 문제 ([ERROR]가 datadir을 C : \ Program Files \ MySQL \ MySQL Server 5.7 \ data \로 설정하지 못했습니다.)를 우회하는 데 도움이되었습니다
Drahoš Maďar

25

제 경우에는 데이터 디렉토리를 다른 위치에 설치했습니다. 따라서 데이터 디렉토리는 실제로 기본 위치에 없었습니다. 따라서 mysqld명령 프롬프트에서 명령을 실행할 때 데이터 디렉터리를 수동으로 지정해야했습니다.

mysqld --datadir=D:/MySQLData/Data

다음은 mysqld 명령 줄 인수에 대한 문서입니다.


이 답변에 감사드립니다. 그것은 내 문제를 해결했습니다. Mysql은 ProgramData 디렉토리에 데이터 디렉토리를 설치 한 반면 mysqld는 Program Files에서 데이터 디렉토리를 찾습니다. 귀하의 답변으로 --datadir 및 bam을 지정했습니다.
Michael Iyke

이것은 MariaDB portable을 다른 위치로 옮겼을 때 작동했습니다. 답변 해주셔서 감사합니다!
Benjamin Weiss

11

새 설치를 위해 내가 한 작업 (Windows 10) :

  1. 관리자 모드에서 cmd를 시작합니다 (Windows 키를 누르고 cmd를 입력 한 다음 마우스 오른쪽 단추로 클릭하고 "관리자 권한으로 실행"을 선택하여 관리자 권한으로 실행).

  2. "MySQL Server XY"디렉토리로 변경합니다 (전체 경로는 C : \ Program Files \ MySQL \ MySQL Server 5.7 ").

  3. 메모장을 사용하여 데이터 디렉토리를 가리키는 mysqld 섹션으로 my.ini를 만듭니다.

    [mysqld]
    datadir="X:\Your Directory Path and Name"
    
  4. 위의 my.ini에서 식별 된 디렉토리를 생성했습니다.

  5. 서버 디렉토리 아래의 bin 디렉토리로 변경하고 다음을 실행하십시오. mysqld --initialize

  6. 완료되면 서비스를 시작하고 정상적으로 작동했습니다.


나를 위해 작동하지만 처음으로 루트로 로그인하려고하면 액세스가 거부되었습니다. 기본 루트 암호는 암호가 아니라고 생각했습니다.
AjaxLeung

11

첫 실행

mysqld -u root --initialize-insecure 

암호없이 사용자로 루트를 사용하여 데이터 폴더를 생성합니다. 그런 다음 실행

mysqld.exe -u root --console

나는 당신의 첫 번째 명령을 실행했고 그것은 내 폴더 "data"를 생성했고, 문서처럼 다음과 같이 만들었다 : dev.mysql.com/doc/mysql-windows-excerpt/5.7/en/… : 나는이 명령을 실행했다 : C : \> mysqld- -defaults-file = "C : \\ ProgramData \\ MySQL \\ MySQL Server 5.7 \\ my.ini"
init

7
  1. 감독이 있는지 확인하십시오.
  2. 존재하는 경우 mysql에 액세스 권한이 있는지 확인하십시오 (읽기 / 쓰기). MySQL을 시스템 프로세스로 실행하는 것이 좋지만 필수는 아닙니다.

이것이 작동하지 않는 경우 이중 슬래시로 다음 표기법을 사용해보십시오. C : \ WebSerer \ MySQL \ data 또는 C : / WebServer / MySQL / data


3

mysql 8.0.13 zip 패키지 초기화 중.

  1. 데이터 폴더가 비어 있는지 확인하십시오.

  2. mysql bin 경로에서 실행

    mysqld.exe --initialize-insecure

  3. my.ini 네이티브 mysql에 추가

    [mysqld]

    default_authentication_plugin=mysql_native_password


2

동일한 오류가 발생했을 때 "C : \ Program Files \ MySQL \ MySQL Server XY \"의 MySQL 구성 파일이 my-default.ini로 변경된 것을 확인했습니다.

나는 그것을 해결했다

  1. "C : \ ProgramData \ MySQL \ MySQL Server XY \ my.ini"에서 my.ini를 복사합니다.
  2. "C : \ Program Files \ MySQL \ MySQL Server XY \ my.ini"에 붙여 넣습니다.
  3. services.msc에서 MySQL 서버 다시 시작

.ini 파일에서 다음과 같은 부분입니다.

# On Windows you should keep this file in the installation directory 
# of your server (e.g. C:\Program Files\MySQL\MySQL Server X.Y). To
# make sure the server reads the config file use the startup option 
# "--defaults-file". 

1

실제 my.ini파일 위치를 확인 --defaults-file="location"하고이 명령으로 설정 하십시오.

mysql --defaults-file="C:\MYSQL\my.ini" -u root -p

이 솔루션은 cmd 화면에 영구적입니다.


1

"{path-to-mysql} \ data"디렉토리의 모든 파일을 제거하고 다음을 실행하십시오.

mysqld --initialize-insecure --basedir={path-to-mysql}\mysql --datadir={path-to-mysql}\data --console

1

mariofertc는 나를 위해 이것을 완전히 해결했습니다.

  1. mysql의 데이터 디렉토리가 비어 있는지 확인하십시오 (삭제하기 전에 기록을 위해 err 파일을 저장하십시오).

  2. mysql bin 경로에서 다음을 실행합니다. mysqld.exe --initialize-insecure

  3. my.ini (mysql의 구성 파일)에 다음을 추가합니다. [mysqld] default_authentication_plugin = mysql_native_password

그런 다음 작업 관리자를 통해 서비스를 확인하여 MySql이 실행 중인지 확인하십시오. 그렇지 않은 경우 MySql을 마우스 오른쪽 단추로 클릭하고 시작하십시오.

또한 mysql bin에 mysql 구성 파일이없고 Windows 검색을 통해 찾을 수없는 경우 C : \ Program Data \ Mysql \에서 찾을 수 있습니다. Heesu가 여기에서 언급 한 것처럼 my.ini 이외의 다른 이름 일 수 있습니다. 템플릿처럼 my.ini를 찾을 수 없습니다 (mysql 5.7) mysql --version 명령을 통해 mysql 버전과 일치하는 템플릿을 찾습니다.


0

Windows 설치 프로그램을 사용하고 Window의 서비스로 MySQL Server를 설치 한 경우 PowerShell을 사용하여 MySQL Server를 시작하고 명령 줄을 벗어나지 않는 편리함을 경험할 수 있습니다.

PowerShell을 열고 다음 명령을 실행합니다.

Get-Service *sql*

MySQL 서비스 목록이 검색되고 표시됩니다. 원하는 것을 선택하고 service-name 을 실제 서비스 이름으로 바꾸면서 다음 명령을 실행합니다 .

Start-Service -Name service-name

끝난. 명령을 Get-Service *sql*다시 실행 하고 서비스 상태를 확인하여 서비스가 실행 중인지 확인할 수 있습니다 .


0

이 솔루션은 Windows mysql 설치 프로그램을 사용합니다 .

나는 여기에 언급 된 다른 모든 방법과 다른 관련 게시물을 시도했지만 내 문제가 해결되지 않았고 서비스가 시작 되지 않았지만 mysql-installer를 사용한 아래 접근 방식이 수행되었습니다.

아직 설치 프로그램이 있거나 버전을 기억하고 있다면 아래 단계를 따르세요.

  1. Windows mysql 설치 프로그램을 시작하십시오. 저에게는 "mysql-installer-community-8.0.20.0"이었습니다.
  2. 그런 다음 SQL Server를 제거 / 제거하고 모든 구성을 제거합니다.
  3. "C : \ Program Files \ MySQL \ MySQL Server 8.0"에서 SQL Server 폴더를 수동으로 삭제합니다.
  4. mysql 설치 프로그램을 다시 시작하고 SQL Server를 다시 설치하십시오.

MySqL Server가 시작된 창 서비스에서 확인할 수 있습니다.

누군가에게 도움이되기를 바랍니다.


0

서버에 필요한 누락 된 폴더가 있는지 확인하십시오. 제 경우에는 이전에 사용한 빈 폴더 클리너 유틸리티로 삭제 된 programData의 UPLOADS 폴더였습니다.

내가 어떻게 알아 냈는지 :

서버 구성 파일 my.ini (내 경우에는 programData에 있음)를 mysqld의 defaults-file 매개 변수로 실행합니다 (화면에서 오류 로그를 보려면 --console 옵션을 사용하는 것을 잊지 마십시오) 'mysqld --defaults-file = "C : \ ProgramData \ MySQL \ MySQL Server 8.0 \ my.ini"--console '

오류:

mysqld : 'C : \ ProgramData \ MySQL \ MySQL Server 8.0 \ Uploads \'의 디렉토리를 읽을 수 없습니다 (OS errno 2-해당 파일 또는 디렉토리 없음).

해결책:

업로드 폴더를 수동으로 생성하면 서버가 성공적으로 시작되었습니다.

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