현재 환경:
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에 적대적인 환경에서도 잘 작동합니다.
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;
결국 정상입니다.