developer tip

MySQL 비밀번호가 만료되었습니다.

optionbox 2020. 10. 6. 08:06
반응형

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 서비스 다시 시작


나는 며칠 전에이 문제에 직면했습니다. MySQL 5.7 버전에 대한 최상의 솔루션 mysql 콘솔에 로그인하고 다음 명령으로 비밀번호를 변경하십시오.

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

이것은 나를 위해 일했습니다.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yourpassword','root'@'localhost' PASSWORD EXPIRE NEVER;


WARNING: this will allow any user to login

I had to try something else. Since my root password expired and altering was not an option because

Column count of mysql.user is wrong. Expected 45, found 46. The table is probably corrupted

temporarly adding skip-grant-tables under [mysqld] in my.cnf and restarting mysql did the trick


On Windows in phpmyadmin look in Variables: default_password_lifetime, and switch it to 0 (instead of 360), enjoy.

Its possible than mySQL take again 360 days, so add in my.ini :

[mysqld]
default_password_lifetime=0

And restart mysql.


All of these answers are using Linux consoles to access MySQL.

If you are on Windows and are using WAMP, you can start by opening the MySQL console (click WAMP icon->MySQL->MySQL console).

Then it will request you to enter your current password, enter it.

And then type SET PASSWORD = PASSWORD('some_pass');


best easy solution:

[PATH MYSQL]/bin/mysql -u root
[Enter password]
SET GLOBAL default_password_lifetime = 0;

and then works fine.


The password expiration is a new feature in MySQL 5.6 or 5.7.

The answer is clear: Use a client which is capable of expired password changing (I think Sequel Pro can do it).

MySQLi library obviously isnt able to change the expired password.

If you have limited access to localhost and you only have a console client, the standard mysql client can do it.


restart MySQL server with --skip-grant-tables option And then set a new root password

$ mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET password=PASSWORD("NEWPASSWORD") WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

Now if you need, you can update mysql.user table(field password_expired='N') not to expire the password.


Open MySQL console and type SET PASSWORD = 'your password'; and then press ENTER Key which will set your defined password for user root.

You can only write SET PASSWORD = ''; which will set password as blank for root user.


I did something like this.

UPDATE mysql.user SET authentication_string = PASSWORD(''), password_expired = 'N' WHERE User = 'root' AND Host = 'localhost';


This work for me:

Source: https://www.diariodeunprogramador.net/fallo-al-conectar-mysql-your-password-expired/

Login as root:

mysql -u root -p

and then you deactivate the automatic expiration of passwords of all the users:

SET GLOBAL default_password_lifetime = 0;

참고URL : https://stackoverflow.com/questions/33387879/mysql-password-expired-cant-connect

반응형