강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của dkfvktorco
dkfvktorco

câu hỏi đã được viết

Tạo máy chủ đầu tiên của bạn bằng Java và Spring Boot Bất kỳ ai cũng có thể dễ dàng chuyển từ giai đoạn phát triển sang triển khai! [Gói phát triển máy chủ tất cả trong một]

Video chuẩn bị bài giảng - Cách đầu tiên để bắt đầu dự án Spring

mysql 비밀번호 재설정

Đã giải quyết

Viết

·

16K

1

 https://goodteacher.tistory.com/291

 

위 블로그를 참고해서 비밀번호를 초기화했는데

mysql -u root -p
Enter password: ************
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

위와 같이 나옵니다. 위 에러 메시지는 비밀번호를 잘못입력했을 때 나오는 걸로 아는데

저 한영 잘못친 것도 없고 numlock도 풀려있어서 제대로 잘 입력했는데 왜 그럴까요ㅠ

 

mysql --version 해보면 mysql ver8.0.27 로 잘 나옵니다

spring-bootmysqlspringJPAjpajavaaws

Câu trả lời 2

1

에러 메시지가 'Access denied for user 'root'@'localhost' (using password: YES)' 이라면 입력한 비밀번호가 틀렸다는 의미입니다. 아마도 비밀번호 초기화 과정에서 무언가 잘못 입력하거나 저장하지 않아서 발생한 문제일 수도 있습니다.

비밀번호를 초기화할 때 다음과 같은 절차를 따르셨는지 확인해보세요.

  1. MySQL 서버를 정지합니다.

  2. 다음 명령을 실행하여 MySQL을 권한 없이 실행합니다.

    sudo mysqld_safe --skip-grant-tables
    
  3. 다른 터미널 창을 열고 MySQL을 실행합니다.

    mysql -u root
    
  4. 다음 명령을 실행하여 MySQL에서 비밀번호를 재설정합니다.

     UPDATE mysql.user SET authentication_string=password('새로운비밀번호') WHERE user='root' AND Host = 'localhost';
     FLUSH PRIVILEGES;
    
  5. MySQL 서버를 정상적으로 시작합니다.

    sudo systemctl start mysql
    
  6. 다시 로그인하여 새로운 비밀번호가 잘 적용되었는지 확인합니다.

     mysql -u root -p
dkfvktorco님의 프로필 이미지
dkfvktorco
Người đặt câu hỏi

관리자모드로 cmd 들어가서 mysqld_safe --skip-grant-tables 했는데

 

C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld_sage --skip-grant-tables

'mysqld_sage'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는

배치 파일이 아닙니다.

 

라고 나옵니다ㅠ

cmd 들어가서 경로를 mysql 설치되어있는 경로로 옮겨서도 해봤는데 같은 메시지가 나와요..


  1. mysql을 종료시키고

  2. cmd를 관리자권한으로 들어가서

  3. mysql 설치 경로로 옮긴 후

  4. mysqld.exe --skip-grant-tables --console --shared-memory

  5. 다른 cmd 창을 관리자권한으로 들어가서

  6. (말씀해주신 UPDATE문은 SQL syntax 에러가 나옵니다) use mysql;

  7. UPDATE user SET authentication_string=null WHERE User='root';

  8. select authentication_string from user;

  9. flush privileges;

  10. 나가기 위해 exit

  11. 재접속을 위해 mysql

  12. ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '새로 설정할 비밀번호';

하면 된다고 하는데 전 안됐습니다..

에러 메시지에는 mysqld_sage이라고 나와서 mysqld_safe를 실행시키지 못하고 있는 것 같습니다. mysqld_sage 대신 mysqld_safe를 실행해 보세요.

또한, UPDATE문에 문법 오류가 있다면 MySQL 버전에 따라서 쿼리 문법이 달라질 수 있습니다. 다음과 같이 새로운 비밀번호를 지정하는 방법으로 시도해 보세요.

ALTER USER 'root'@'localhost' IDENTIFIED BY '새로운비밀번호';

위 명령어는 MySQL 5.7 이상에서 사용할 수 있는 문법입니다. MySQL 5.7 이하 버전에서는 다음과 같이 사용합니다.

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('새로운비밀번호');

비밀번호 초기화 과정에서 무언가 잘못 입력하거나 저장하지 않은 것으로 추정됩니다. 초기화 절차를 다시 확인해보시고, 새로운 비밀번호를 설정하는 방법을 정확히 입력해 보세요.

dkfvktorco님의 프로필 이미지
dkfvktorco
Người đặt câu hỏi

Q1. alter문으로 비밀번호를 변경할 때 affected row가 0으로 나오면 안되는 거겠죠?

Q2. authentication_string = null로 만들고 나서 exit 하고 다시 use mysql 한 후select authentication_string from user; 했는데 null값이었던 곳에 무언가가 적혀져 있는데 이건 왜 그런 걸까요?

Q3. mysqld.exe --skip-grant-tables --console --shared-memory 후 새로운 cmd창을 관리자 모드로 열어 mysql -u root로 접속한 다음 ALTER USER 'root'@'localhost' IDENTIFIED BY '++++'; 를 입력하면 ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 라고 나옵니다.

Q4. 비밀번호를 바꾼 후 해당 cmd 창에서 exit로 나간 후 mysql -u root -p로 변경한 비밀번호롤 통해 접속하면 들어가지는데 해당 cmd 창을 닫고 새로운 cmd창을 열어 실행하면 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 라 나옵니다. 관리자모드로 열어도 똑같은 에러메시지가 나와요.

 

계속 비슷한 질문을 들여 번거롭게 한 것 같아 죄송합니다. 맞게 했다고 생각되는데 계속 안되네요 mysql을 재설치하는 것도 괜찮은 방법일까요? 😥

dkfvktorco님의 프로필 이미지
dkfvktorco
Người đặt câu hỏi

재설치하고 성공했습니다!!!!!!!!!!!!!!!! 답변해주셔서 감사합니다 :)

0

lannstark님의 프로필 이미지
lannstark
Người chia sẻ kiến thức

안녕하세요, 1026999님!! 대신 답변해주셔서 고개 숙여 감사드립니다!! 🙏🙏

 

은혜님도 해결하셔서 정말 다행이네요!! 😊

이미 지난 사안이지만, 도움이 될 수 있을까 하여 마지막 질문 남겨주신 부분들에 대해 답변 드려보겠습니다!!

 

Q1. alter문으로 비밀번호를 변경할 때 affected row가 0으로 나오면 안되는 거겠죠?

넵넵!! affected row 0으로 나오면 설정이 적용된 값이 0개라는 의미로 잘 적용되지 않았다는 의미입니다!

 

Q2. authentication_string = null로 만들고 나서 exit 하고 다시 use mysql 한 후select authentication_string from user; 했는데 null값이었던 곳에 무언가가 적혀져 있는데 이건 왜 그런 걸까요?

아마 null 자체를 문자열로 인식했고, 비밀번호를 저장할 때 암호화되어 저장하느라 null이 아닌 무언가가 적혀있는 걸거에요!!

Q3. mysqld.exe --skip-grant-tables --console --shared-memory 후 새로운 cmd창을 관리자 모드로 열어 mysql -u root로 접속한 다음 ALTER USER 'root'@'localhost' IDENTIFIED BY '++++'; 를 입력하면 ERROR 1290 (HY000): The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement 라고 나옵니다.

MySQL 서버가 현재 Table의 GRANT (권한 관리) 기능이 제외된 채로 실행되어 그렇습니다!

mysql.exe --skip-grant-tables로 하실 때 넣은 --skip-grant-tables 가 권한 관리 기능 제외 옵션이고, 사용하신 ALTER USER ... SQL이 권한 관리 기능이라 해당 기능을 사용할 수 없었던 것으로 생각됩니다.

Q4. 비밀번호를 바꾼 후 해당 cmd 창에서 exit로 나간 후 mysql -u root -p로 변경한 비밀번호롤 통해 접속하면 들어가지는데 해당 cmd 창을 닫고 새로운 cmd창을 열어 실행하면 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 라 나옵니다. 관리자모드로 열어도 똑같은 에러메시지가 나와요.

비밀번호가 틀려서 그러실것으로 생각됩니다! 🥺 혹은 비밀번호를 바꾸셨다고 생각했지만, Q1과 같은 이유로 정상 적용되지 않은 것일 수도 있습니다.

재설치를 통해 해결하셨다니 정말 다행입니다!

감사합니다! 🙏

Hình ảnh hồ sơ của dkfvktorco
dkfvktorco

câu hỏi đã được viết

Đặt câu hỏi