"SQLSTATE[HY000] [1698] 사용자 '에 대한 액세스가 거부되었습니다. Ubuntu 웹 서버를 설정한 후 root'@'localhost'" 오류가 발생하면 실망스러울 수 있습니다. 데이터베이스 액세스는 터미널을 통해 액세스 가능한 것처럼 보이지만 PHP 및 phpMyAdmin의 오류는 계속 발생합니다. 이 문제를 해결하려면 근본 원인을 이해하는 것이 중요합니다.
루트 사용자 제한
MySQL 5.7 이상에서는 루트 사용자에 대한 제한이 도입되었습니다. 상승된 권한이 없으면 mysql -u root를 사용하여 MySQL에 직접 액세스할 수 없습니다. 대신 sudo mysql -u root가 필요하며 비밀번호 입력을 요구합니다.
이 제한은 GUI 및 명령줄이 아닌 애플리케이션까지 확장됩니다. 이 문제를 완화하려면 루트 사용자를 사용하는 대신 필요한 권한이 있는 새 사용자를 생성하십시오.
PHP에서 구현
제공된 PHP 코드에서 로그인 자격 증명은 하드코딩. 루트 사용자 제한을 우회하려면 __construct() 메소드를 수정하여 적절한 권한이 있는 새 사용자를 통합하십시오.
<code class="php">public function __construct() { try { $this->conn = new PDO("mysql:host=$this->host;dbname=$this->db", $this->name, $this->pass, self::$settings); } catch (PDOException $e) { echo $e->getMessage(); } }</code>
$this->name 및 $this->pass를 새로 생성된 사용자의 자격 증명으로 바꿉니다. . 사용자가 데이터베이스에 액세스하는 데 필요한 권한을 가지고 있는지 확인하세요.
추가 리소스
추가 정보 및 문제 해결 단계는 다음 리소스를 참조하세요.
위 내용은 Ubuntu에서 루트 사용자로 MySQL 데이터베이스에 액세스할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!