[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 password
OS 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.cnf
MySQL이 시작시 읽는 파일에 다음 줄을 [mysqld]
설정 그룹 아래에 추가하십시오 . 의 위치는 my.cnf
설정 (예 : Windows, OS X의 Homebrew 또는 설치 프로그램)과 Unix에서 사용자 별 또는 전역에서이 사용자 별을 원하는지 여부 에 따라 다릅니다.
[mysqld]
default_password_lifetime = 0
(여기에도 다른 설정이있을 수 있습니다 …)
답변
최근에 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 서비스를 다시 시작하십시오.