[php] MySQL 비밀번호가 만료되었습니다. 연결할 수 없습니다

방금 Mac을 닦고 El Capitan을 새로 설치했습니다. 지금 Mysql에 연결하는 데 어려움을 겪고 있습니다. 웹 서버 설정 과정을 거쳐 간단한 PHP 테스트 파일을 만들었습니다.

<?php
  $conn = new mysqli("127.0.0.1", "root", "xxxxxxxx");
  if ($conn->connect_error) echo "Connection failed: " . $conn->connect_error;
  else echo "Connected successfully";
  phpinfo();
?>

실행할 때 다음 오류가 발생합니다.

Warning: mysqli::mysqli(): (HY000/1862): Your password has expired. To log in you must change it using a client that supports expired passwords. in /Users/rich/Documents/DESIGN/test/index.php on line 3
Connection failed: Your password has expired. To log in you must change it using a client that supports expired passwords.

나는 전에 연결에서 그 응답을 본 적이 없습니다. 연결할 수없는 경우 어떻게 수정합니까?

편집하다

터미널에서 명령을 입력했습니다.

mysql -u root -p

이것은 내가 입력 한 내 암호 (현재 암호)를 요청했습니다. 이제 mysql 명령에 액세스 할 수 있지만 시도하면이 오류가 발생합니다.

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

를 사용하여 비밀번호를 ALTER USER어떻게 재설정 합니까?



답변

그래서 마침내 해결책을 찾았습니다.

먼저 터미널에 들어가 다음을 입력했습니다.

mysql -u root -p

이것은 내가 입력 한 현재 암호를 요청했으며 더 많은 mysql 명령을 제공하기 위해 액세스 권한을 부여했습니다. 여기에서 시도한 모든 것이이 오류를 발생 시켰습니다.

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

ALTER USER문을 사용하여 암호를 재설정하는 방법을 실제로 볼 수 없기 때문에 혼란 스럽지만 다른 간단한 해결책을 찾았습니다.

SET PASSWORD = PASSWORD('xxxxxxxx');


답변

먼저 다음을 사용합니다.

 mysql -u root -p

‘루트’의 현재 비밀번호를 제공합니다. 다음:

mysql> ALTER USER `root`@`localhost` IDENTIFIED BY 'new_password',
       `root`@`localhost` PASSWORD EXPIRE NEVER;

'new_password'사용자 ‘root’의 새 비밀번호로 변경하십시오 .
그것은 내 문제를 해결했습니다.


답변

mysqladmin -u [username] -p passwordOS X El Capitan 및 MySQL 5.7.12 Community Server에서 저를 위해 일했습니다. 예:

$ /usr/local/mysql/bin/mysqladmin -u root -p password
Enter password:
New password:
Confirm new password:
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.

이것은 pavan sachi의 대답과 비슷하지만 암호 프롬프트가 있습니다.

내 오류는 “# 1862-비밀번호가 만료되었습니다. 로그인하려면 만료 된 비밀번호를 지원하는 클라이언트를 사용하여 비밀번호를 변경해야합니다.” phpMyAdmin 로그인 화면에서 처음으로.


답변

MySQL 비밀번호 만료

비밀번호를 재설정하면 일시적으로 문제가 해결됩니다. MySQL 5.7.4에서 5.7.10까지 (보안 강화를 위해-MySQL : 암호 만료 정책 참조 ) 기본 default_password_lifetime변수 값은 360 (1 년)입니다. 이러한 버전의 경우이 변수 (또는 개별 사용자 계정)를 변경하지 않으면 모든 암호가 360 일 후에 만료됩니다.

따라서 스크립트에서 “암호가 만료되었습니다. 로그인하려면 만료 된 암호를 지원하는 클라이언트를 사용하여 변경해야합니다.”라는 메시지가 표시 될 수 있습니다.

자동 암호 만료를 중지하려면 루트 ( mysql -u root -p) 로 로그인 한 다음 서버에 자동으로 연결하는 클라이언트 (예 : 스크립트)의 경우 암호 만료 설정을 변경합니다.

ALTER USER 'script'@'localhost' PASSWORD EXPIRE NEVER;

또는 모든 사용자에 대해 자동 비밀번호 만료를 비활성화 할 수 있습니다 .

SET GLOBAL default_password_lifetime = 0;

주석에서 Mertaydin이 지적했듯이 이것을 영구적으로 만들려면 my.cnfMySQL이 시작시 읽는 파일에 다음 줄을 [mysqld]설정 그룹 아래에 추가하십시오 . 의 위치는 my.cnf설정 (예 : Windows, OS X의 Homebrew 또는 설치 프로그램)과 Unix에서 사용자 별 또는 전역에서이 사용자 별을 원하는지 여부 에 따라 다릅니다.

[mysqld]
default_password_lifetime = 0
(여기에도 다른 설정이있을 수 있습니다 …)

구성 파일에 대한 MySQL 문서를 참조하십시오 .


답변

최근에 mac os x capitan에 mysql을 설치하는 동안 동일한 문제가 발생했습니다. 여기서 정답을 찾지 못 했으므로이 답변을 추가하십시오.

현재 버전의 MySql은 mysql을 설치할 때 임시 비밀번호를 생성합니다. 이 암호를 사용하여 아래와 같이 mysqladmin 유틸리티를 사용하여 새 암호를 설정하십시오.

/ usr / local / mysql / bin / mysqladmin -u root -p ‘<your temp password>’password ‘<your new password>’

그것이 당신과 다른 사람들에게 도움이되기를 바랍니다.


답변

로그인하려면 MySQL 워크 벤치를 다운로드하기 만하면됩니다. 비밀번호를 즉시 자동으로 변경하라는 메시지가 표시됩니다.


답변

안전 모드에서 MYSQL 시작

mysqld_safe --skip-grant-tables &

MYSQL 서버에 연결

mysql -u root

SQL 명령을 실행하여 비밀번호를 재설정하십시오.

use mysql;
SET GLOBAL default_password_lifetime = 0;
SET PASSWORD = PASSWORD('new_password');

마지막 단계, mysql 서비스를 다시 시작하십시오.