현재 환경:
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
Password 라는 필드가 없고 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 친화적이지 않은 환경에서도 작동하는 경우가 많습니다.
직접 DML 문 대신 GRANT
, REVOKE
, SET PASSWORD
또는 를 사용하세요 .RENAME USER
업데이트: 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;
결국 그것은 정상입니다.