MySQL v5.7을 사용하여 MySQL '루트' 비밀번호를 변경하는 방법은 무엇입니까?

MySQL v5.7을 사용하여 MySQL '루트' 비밀번호를 변경하는 방법은 무엇입니까?

현재 환경:

mysql> show variables like "%version%";
+-------------------------+------------------------------+
| Variable_name           | Value                        |
+-------------------------+------------------------------+
| innodb_version          | 5.7.13                       |
| protocol_version        | 10                           |
| slave_type_conversions  |                              |
| tls_version             | TLSv1,TLSv1.1                |
| version                 | 5.7.13                       |
| version_comment         | MySQL Community Server (GPL) |
| version_compile_machine | x86_64                       |
| version_compile_os      | Linux                        |
+-------------------------+------------------------------+
8 rows in set (0.01 sec)

비밀번호 변경 명령 ​​사용자:

mysql> update user set password=PASSWORD("XXXX") where user="root";
ERROR 1054 (42S22): Unknown column 'password' in 'field list'

뭔가 빠졌나요?

답변1

MySQL 5.7에서는 테이블 필드 password의 필드가 mysql.user제거되었으며 이제 필드 이름은 입니다 authentication_string.

먼저 데이터베이스를 선택합니다.

mysql> use mysql;

그런 다음 테이블을 표시하십시오.

mysql> show tables;

테이블 을 찾고 user해당 필드를 볼 수 있습니다.

mysql> describe user;

이라는 필드가 없고 password암호 필드의 이름이 이라는 것을 알게 될 것입니다 authentication_string. 그러니 이렇게 하세요:

update user set authentication_string=password('XXXX') where user='root';

@Rui F Ribeiro가 제안한 대로 다음을 실행할 수도 있습니다.

mysql> SET PASSWORD FOR 'root' = PASSWORD('new_password');

답변2

비밀번호를 변경하는 MySQL 방식은 다음과 같습니다.SET PASSWORD

SET PASSWORD FOR 'root' = PASSWORD('new_password');

보다MySQL 5.7 참조 ​​매뉴얼 / ... / SET PASSWORD 구문

SET PASSWORD 문은 일반 텍스트(암호화되지 않음) 또는 암호화된 값으로 지정된 MySQL 사용자 계정에 비밀번호를 할당합니다.

'auth_string' represents a cleartext password.

'hash_string' represents an encrypted password.

Rahul의 답변은 DML설명으로 비밀번호를 업데이트하는 방법을 보여줍니다.

update user set authentication_string=password('XXXX') where user='root';

경고: 이는 공식적이고 지원되는 방식이 아닙니다. 자신이 무엇을 하고 있는지 모르면 문제가 발생할 수 있습니다. 잊지 마세요 FLUSH PRIVILEGES.

사용자 생성, 권한 변경, 비밀번호 변경과 같은 대부분의 작업에는 상위 수준 명령문을 사용하는 것이 좋습니다. 사용하기 쉽고 더 많은 MySQL 버전과 호환될 뿐만 아니라 실수를 방지할 수도 있습니다(물론 "NO_AUTO_CREATE_USER" SQL 모드를 설정하는 것을 잊지 마십시오). 그들은 일반적으로 Galera 클러스터와 같은 MyISAM에 적대적인 환경에서도 잘 작동합니다.

FLUSH PRIVILEGES 사용 중지

GRANT, REVOKE, SET PASSWORD또는 RENAME USER직접 DML 문을 사용 하지 마세요.

업데이트: SET PASSWORD ... = PASSWORD('auth_string') 구문은 다음과 같습니다.MySQL 5.7.6부터 더 이상 사용되지 않음향후 MySQL 릴리스에서는 제거될 예정입니다.

답변3

mysqladmin -u user-name password -p "oldpassword" "newpass"

로그인할 수 있다면 시도해 보세요. ""작동하지 않습니다. ''작은따옴표를 사용해 보세요.

update user set password=PASSWORD("newpass") where User='ENTER-USER-NAME-HERE';

답변4

이 문제에 대해 저는 간단하고 무례한 방법을 사용하여 필드 이름을 비밀번호로 변경했습니다. 그 이유는 시각적 작업에서 mac navicat 프리미엄 소프트웨어를 사용하기 때문입니다. '필드 목록'의 알 수 없는 열 '비밀번호', 소프트웨어 자체가 비밀번호를 사용하기 때문에 쉽게 조작할 수 없습니다. 따라서 나는 데이터베이스 명령줄에 뿌리를 두고 다음을 실행합니다.

Use mysql;

그런 다음 필드 이름을 수정합니다.

ALTER TABLE user CHANGE authentication_string password text;

결국 정상입니다.

관련 정보