>데이터 베이스 >MySQL 튜토리얼 >'알 수 없는 인증 방법'으로 인해 원격 MySQL 연결이 실패하는 이유는 무엇입니까?

'알 수 없는 인증 방법'으로 인해 원격 MySQL 연결이 실패하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-10 09:25:02291검색

Why Does My Remote MySQL Connection Fail with

"알 수 없는 인증 방법"으로 인해 원격 MySQL 연결이 실패함

MySQL 서버에 대한 원격 연결을 설정하려고 하면 "알 수 없는 인증 방법"이라는 오류가 발생합니다. 인증 방법' 오류가 발생할 수 있습니다. 이 문제는 서버의 인증 메커니즘이 클라이언트의 인증 메커니즘과 호환되지 않을 때 발생합니다.

이 특별한 경우에는 로컬 시스템(MySQL 버전 5.5.27)에서 원격 서버(MySQL 버전 5.5)로 연결할 때 오류가 발생했습니다. .23). 근본적인 원인은 두 서버에서 사용하는 비밀번호 해시 방법이 서로 호환되지 않았기 때문입니다.

비호환성 해결

이 문제의 해결 방법은 비밀번호 해시를 업데이트하는 것입니다. 클라이언트가 사용하는 방법과 일치하도록 서버. 이 경우 MySQL 4.1 이상에서 사용하는 최신 41바이트 비밀번호 형식으로 업데이트해야 합니다.

비밀번호 해시 업데이트

  • 로그인 MySQL Workbench와 같은 명령줄 도구를 사용하여 원격 MySQL 서버.
  • 다음 명령을 실행합니다.
ALTER USER 'yourusername'@'%' IDENTIFIED BY 'new_password';

여기서 'yourusername'은 MySQL 사용자 이름이고 'new_password'는 새 비밀번호를 입력하세요.

  • 변경 사항을 적용하려면 권한을 플러시하세요.
FLUSH PRIVILEGES;

변경 사항이 적용되도록 MySQL 서버를 다시 시작하세요.

클라이언트 코드 수정

비밀번호가 업데이트되면 다음과 같이 연결 코드를 수정하세요.

$dsn = 'mysql:host=184.173.209.193;dbname=my_db_name;charset=utf8';
$options = array(
    PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
    PDO::MYSQL_ATTR_DIRECT_QUERY => true
);

try {
    $online_dbh = new PDO($dsn, 'myusername', 'new_password', $options);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Congratulations!";
} catch (PDOException $e) {
    echo $e->getMessage();
}

PDO::MYSQL_ATTR_DIRECT_QUERY를 true로 설정하면 PDO가 더욱 안전한 연결 방식으로 인증 문제를 해결했습니다.

위 내용은 '알 수 없는 인증 방법'으로 인해 원격 MySQL 연결이 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.