MySQL 사용자 이름과 비밀번호를 어떻게 검색합니까?


158

MySQL 사용자 이름과 비밀번호를 잃어 버렸습니다. 어떻게 검색합니까?

답변:


186

MySQL 프로세스를 중지하십시오.

--skip-grant-tables 옵션을 사용하여 MySQL 프로세스를 시작하십시오.

-u root 옵션을 사용하여 MySQL 콘솔 클라이언트를 시작하십시오.

모든 사용자를 나열하십시오.

SELECT * FROM mysql.user;

암호를 재설정;

UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

그러나 잊지 마세요

MySQL 프로세스 중지

MySQL 프로세스를 정상적으로 시작하십시오 (즉 --skip-grant-tables 옵션없이)

당신이 끝나면. 그렇지 않으면 데이터베이스의 보안이 손상 될 수 있습니다.


7
일반 사용자를 재설정하기 위해 데몬을 다시 시작할 필요가 없다고 생각하십시오. 그냥 "FLUSH PRIVILEGES"; 사용자 비밀번호를 업데이트 한 후 --skip-grant-tables는 루트 사용자 비밀번호 재설정에만 필요합니다! 일반적으로 표준 사용자 재설정에는 권장되지 않습니다.
Amos Folarin

dpkg-reconfigure mysql-server-5.5루트 MySQL 암호를 재설정하기 위해 명령을 사용하는 것의 중요성은 무엇입니까 ?
phillipsK

@Xenph, 왜 " -u root 옵션으로 MySQL 콘솔 클라이언트를 시작하십시오 "라고 말 합니까? -userver가 시작될 때 무시되므로 전혀 그렇게 할 필요가 없습니다 --skip-grant-tables.
Pacerier

15
MySQL의 5.7에서. *에는 열이 없다 mysql.user라고 password, 사용 authentication_string대신.
Adib Aroui

3
이 + stackoverflow.com/a/35277160/1604601이 매우 유용 하다는 것을 알았습니다.
Alien Life Form

42

불행히도 사용자 비밀번호는 검색 할 수 없습니다. 모르는 경우 되돌릴 수없는 단방향 해시로 해시되었습니다. 위의 Xenph Yan과 함께 새로운 것을 만드십시오.

Windows에서 MySQL 루트 계정 의 비밀번호를 재설정하기 위해 매뉴얼 에서 다음 절차를 사용할 수도 있습니다 .

  1. 시스템에 관리자로 로그온하십시오.
  2. MySQL 서버가 실행 중이면 중지하십시오. Windows 서비스로 실행중인 서버의 경우 서비스 관리자로 이동하십시오.

시작 메뉴-> 제어판-> 관리 도구-> 서비스

그런 다음 목록에서 MySQL 서비스를 찾아 중지하십시오. 서버가 서비스로 실행되고 있지 않으면 작업 관리자를 사용하여 강제로 중지해야 할 수도 있습니다.

  1. 텍스트 파일을 작성하고 다음 명령문을 배치하십시오. 비밀번호를 사용하려는 비밀번호로 바꾸십시오.

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
    FLUSH PRIVILEGES;

    UPDATEFLUSH 문 각각 한 줄에 작성해야합니다. UPDATE의 문은 기존의 모든 루트 계정에 대한 암호를 다시 설정하고, 플러시 문은 메모리에 그랜트 테이블을 다시로드 할 수있는 서버를 알려줍니다.

  2. 파일을 저장하십시오. 이 예에서 파일 이름은 C : \ mysql-init.txt입니다.
  3. 콘솔 창을 열어 명령 프롬프트를 표시하십시오.

    시작 메뉴-> 실행-> cmd

  4. 특수한 --init-file 옵션을 사용하여 MySQL 서버를 시작하십시오 .

    C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt

    C : \ mysql 이외의 위치에 MySQL을 설치 한 경우 이에 따라 명령을 조정하십시오.

    서버 는 시작할 때 --init-file 옵션으로 이름이 지정된 파일의 내용을 실행하여 각 루트 계정 비밀번호를 변경 합니다.

    서버 출력을 로그 파일이 아닌 콘솔 창에 표시하려면 명령에 --console 옵션을 추가 할 수도 있습니다 .

    MySQL 설치 마법사를 사용하여 MySQL을 설치 한 경우 --defaults-file 옵션 을 지정해야합니다 .

    C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt

    적절한 --defaults-file 설정은 서비스 관리자를 사용하여 찾을 수 있습니다.

    시작 메뉴-> 제어판-> 관리 도구-> 서비스

    목록에서 MySQL 서비스를 찾아 마우스 오른쪽 단추로 클릭 한 후 속성 옵션을 선택하십시오. 실행 파일 경로 필드에는 --defaults-file이 있습니다. 설정이 .

  5. 서버가 성공적으로 시작되면 C : \ mysql-init.txt를 삭제 하십시오 .
  6. MySQL 서버를 중지 한 다음 일반 모드에서 다시 시작하십시오. 서버를 서비스로 실행하는 경우 Windows 서비스 창에서 서버를 시작하십시오. 서버를 수동으로 시작하는 경우 일반적으로 사용하는 명령을 사용하십시오.

이제 새 비밀번호를 사용하여 루트로 MySQL에 연결할 수 있습니다.


5
@Jake-답변 주셔서 감사합니다. 나는 엄지 손가락을 포기하고 싶었지만 어떤 이유로 든 스택 오버 플로우는 평판 포인트 때문에 그렇게 할 수 없었습니다. 내가에만 구글 읽기 것을 다른 모든 나에게하는 방향 준 이유를 설명은 "불행하게도 사용자 암호가 회복 할 수없는 것입니다. 그것은 당신이 경우에하지 알고 돌이킬 수있는 하나의 방법 해시 해시 된"내 이해의 열쇠였다 변경을 내 암호. 좋은 설명은 지시 만하는 것보다 더 통찰력이 있습니다.
dsdsdsdsd

1
@jake 서비스 목록에서 mysql을 찾을 수 없습니다. 어떻게해야합니까?

1
왜 너 mysqld-nt대신에 mysqld?
Pacerier

Btw, 파일 옵션이 --init-file아닌가? (mysql.exe의 --execute명령 과 유사한 것 )
Pacerier

34

가장 유용한 답변이 여기에 개선되었습니다.

1] mysql 서버를 다시 시작할 필요가 없습니다.
2] 네트워크에 연결된 MySQL 서버의 보안 문제

MySQL 서버를 다시 시작할 필요가 없습니다.

사용 FLUSH PRIVILEGES;암호 변경에 대한 업데이트 mysql 데이터베이스에서 user 문 뒤에.

FLUSH 문은 서버에게 암호 변경을 알 수 있도록 권한 부여 테이블을 메모리에 다시로드하도록 지시합니다.

--skip-grant-options암호없이 모든 권한과 연결하는 사람을 할 수 있습니다. 이것은 안전하지 않기 때문에

원격 클라이언트의 연결을 방지 하려면 --skip-grant-tables--skip-networking 과 함께 사용하십시오 .

from : 참조 : 재설정 권한-일반


@ThinkingMonkey, 이것은 현재 로그온 한 사용자가 수정할 권한이 있다고 가정하지 mysql.user않습니까? 그러나 종종 그렇지 않습니다.
Pacerier

6

무차별 공격없이 MySQL 암호를 직접 복구 할 수는 없지만 다른 방법이있을 수 있습니다. MySQL Workbench를 사용하여 데이터베이스에 연결하고 자격 증명을 "vault"에 저장 한 경우 황금색입니다.

Windows에서 신임 정보는 % APPDATA % \ MySQL \ Workbench \ workbench_user_data.dat에 저장되며 추가 엔트로피없이 CryptProtectData로 암호화됩니다 . 해독은 쉽지 않습니다.

std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
    DATA_BLOB inblob { length, input };
    DATA_BLOB outblob;

    if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
            throw std::runtime_error("Couldn't decrypt");
    }

    std::vector<unsigned char> output(length);
    memcpy(&output[0], outblob.pbData, outblob.cbData);

    return output;
}

또는이 DonationCoder 스레드 에서 빠르고 더러운 구현의 소스 + 실행 파일을 확인할 수 있습니다 .


2
이것은 완벽했다. 스레드 스니커에 소스 코드가있는 exe가 MySQL Workbench 볼트에 저장된 사용자 계정 비밀번호를 검색하기 위해 언급되었습니다. 사용자 테이블을 읽거나 업데이트 할 수있는 권한이 있다면 이러한 다른 방법들도 작동 할 것입니다.
RobbZ

그러나 상대적으로 말하면 워크 벤치를 사용하는 사람은 거의 없습니다.
Pacerier

다음은 워크 벤치의 저장된 사용자 이름과 암호 정보를 복구하려면 Visual Studio를 구축 한 후 실행할 수있는 다른 구현은 다음과 같습니다 github.com/wclear/MySQLWorkbenchPasswordViewer
bnp887

6

가동 중지 시간없이 수행

터미널에서 다음 명령을 실행하여 DBMS에 연결하십시오 (루트 액세스가 필요함).

sudo mysql -u root -p;

대상 사용자의 업데이트 비밀번호를 실행하십시오 (예를 들어 username은 is mousavi이고 비밀번호는이어야합니다 123456).

UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';  

이 시점에서 변경 사항을 적용하려면 플러시를 수행해야합니다.

FLUSH PRIVILEGES;

끝난! mysql 서비스를 중지하거나 다시 시작하지 않고 수행했습니다.


5

mysql이 실행되는 서버에 대한 루트 액세스 권한이있는 경우이 명령을 사용하여 mysql 서버를 중지해야합니다.

sudo service mysql stop

이제이 명령을 사용하여 mysql을 시작하십시오.

sudo /usr/sbin/mysqld --skip-grant-tables  --skip-networking &

이제 다음을 사용하여 mysql에 로그인 할 수 있습니다

sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

전체 지침은 http://www.techmatterz.com/recover-mysql-root-password/ 에서 찾을 수 있습니다 .


3

기존 사용자를 사용하여 Windows cmd에서 MySql에 로그인하십시오.

mysql -u username -p
비밀번호를 입력하십시오 : ****

그런 다음 다음 명령을 실행하십시오.

mysql> SELECT * FROM mysql.user;

그 후 해당 사용자의 암호화 된 md5 비밀번호를 복사하면 웹에서 사용할 수있는 몇 가지 온라인 비밀번호 복호화 애플리케이션이 있습니다. 이 암호 해독 암호를 사용하여 다음에 로그인 할 때이 암호를 사용하십시오. 또는 흐르는 명령을 사용하여 사용자 비밀번호를 업데이트하십시오.

mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

그런 다음 새 비밀번호와 사용자를 사용하여 로그인하십시오.


0

ODBC를 설정 한 경우 ODBC 구성 파일에서 비밀번호를 얻을 수 있습니다. 이것은 Linux의 경우 /etc/odbc.ini 및 Windows의 레지스트리에있는 Software / ODBC 폴더에 있습니다 (여러 개가 있음-일부 사냥이 필요할 수 있음)


0

파일을 저장하십시오. 이 예에서 파일 이름은 C : \ mysql-init.txt입니다. 파일을 저장하기위한 관리 권한을 요구합니다.


-1

op의 질문에 대한 엄격하고 논리적 인 컴퓨터 과학적 해석은 "MySQL 사용자 이름을 검색하는 방법" "암호"를 모두 요구 하는 것이지만 OR을 해결하는 것이 누군가에게 유용 할 것이라고 생각했습니다. 해석을 . 다시 말해 ...

1) MySQL 사용자 이름을 어떻게 검색합니까?

또는

2) 비밀번호

이 후자의 상태는 이미 충분히 해결 된 것으로 보이므로 이에 신경 쓰지 않을 것입니다. 다음은 "MySQL 사용자 이름을 어떻게 검색합니까?"에 대한 해결책입니다. HIH.

mysql 사용자 이름을 찾으려면 mysql 쉘에서 다음 명령을 실행하십시오 ...

mysql.user에서 사용자 선택;

모든 MySQL 사용자의 테이블을 인쇄합니다.


1
이것은 늦은 답변이며 솔루션이 이미 게시되었거나 수락 된 것과 분명히 다른 경우에만 게시해야합니다. 이 경우, 특히 귀하의 답변이 승인 된 답변과 중복되는 것은 아닙니다.
m.cekiera 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.