mysql CLI에서 루트 mysql 비밀번호 변경이 실패함

mysql CLI에서 루트 mysql 비밀번호 변경이 실패함

다음 코드를 고려해보세요.

UPDATE user set password=PASSWORD('NEWPASSWORD_CAME_HERE') WHERE User='root';

쓰여진 곳에는 NEWPASSWORD_CAME_HERE(따옴표 사이에) 비밀번호를 입력했습니다.

그러나 이 쿼리를 실행하면 다음 오류가 발생합니다.

오류 1046(3D000): 선택된 데이터베이스가 없습니다.

이 오류가 발생하는 이유는 무엇입니까? 나는 다른 가이드를 따랐는데 이것이 내가 본 가장 전통적인 접근 방식이므로 이것이 실패하는 이유를 이해할 수 없습니다.

답변1

먼저 UPDATE 문에 테이블뿐만 아니라 데이터베이스도 지정해야 합니다.

UPDATE mysql.user ...

그렇지 않으면 MySQL은 작업 중인 데이터베이스를 알 수 없습니다(따라서 오류가 발생함).

그러나 이는 MySQL에서 사용자 비밀번호를 변경하는 올바른 방법이 아닙니다. mysql데이터베이스(데이터베이스 메타데이터 포함)를 조작하는 것은 권장되지 않습니다 . 대신 이렇게 하세요:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NEWPASSWORD_CAME_HERE'); 

답변2

오류를 해결하려면: use mysql

그러나 mysql 참조 매뉴얼을 살펴보아야 합니다:

ALTER USER user IDENTIFIED BY 'auth_string';

비밀번호 구문 설정

관련 정보