해결된 질문
작성
·
14K
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 로 잘 나옵니다
답변 2
1
에러 메시지가 'Access denied for user 'root'@'localhost' (using password: YES)' 이라면 입력한 비밀번호가 틀렸다는 의미입니다. 아마도 비밀번호 초기화 과정에서 무언가 잘못 입력하거나 저장하지 않아서 발생한 문제일 수도 있습니다.
비밀번호를 초기화할 때 다음과 같은 절차를 따르셨는지 확인해보세요.
MySQL 서버를 정지합니다.
다음 명령을 실행하여 MySQL을 권한 없이 실행합니다.
sudo mysqld_safe --skip-grant-tables
다른 터미널 창을 열고 MySQL을 실행합니다.
mysql -u root
다음 명령을 실행하여 MySQL에서 비밀번호를 재설정합니다.
UPDATE mysql.user SET authentication_string=password('새로운비밀번호') WHERE user='root' AND Host = 'localhost';
FLUSH PRIVILEGES;
MySQL 서버를 정상적으로 시작합니다.
sudo systemctl start mysql
다시 로그인하여 새로운 비밀번호가 잘 적용되었는지 확인합니다.
mysql -u root -p
에러 메시지에는 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('새로운비밀번호');
비밀번호 초기화 과정에서 무언가 잘못 입력하거나 저장하지 않은 것으로 추정됩니다. 초기화 절차를 다시 확인해보시고, 새로운 비밀번호를 설정하는 방법을 정확히 입력해 보세요.
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을 재설치하는 것도 괜찮은 방법일까요? 😥
0
안녕하세요, 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과 같은 이유로 정상 적용되지 않은 것일 수도 있습니다.
재설치를 통해 해결하셨다니 정말 다행입니다!
감사합니다! 🙏
관리자모드로 cmd 들어가서 mysqld_safe --skip-grant-tables 했는데
C:\Program Files\MySQL\MySQL Server 8.0\bin>mysqld_sage --skip-grant-tables
'mysqld_sage'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.
라고 나옵니다ㅠ
cmd 들어가서 경로를 mysql 설치되어있는 경로로 옮겨서도 해봤는데 같은 메시지가 나와요..
mysql을 종료시키고
cmd를 관리자권한으로 들어가서
mysql 설치 경로로 옮긴 후
mysqld.exe --skip-grant-tables --console --shared-memory
다른 cmd 창을 관리자권한으로 들어가서
(말씀해주신 UPDATE문은 SQL syntax 에러가 나옵니다)
use mysql;
UPDATE user SET authentication_string=null WHERE User='root';
select authentication_string from user;
flush privileges;
나가기 위해
exit
재접속을 위해
mysql
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '새로 설정할 비밀번호';
하면 된다고 하는데 전 안됐습니다..