브라우저를 통해 mysql에 연결할 수 없지만 터미널을 통해 php로 연결할 수 없는 이유는 무엇입니까?

브라우저를 통해 mysql에 연결할 수 없지만 터미널을 통해 php로 연결할 수 없는 이유는 무엇입니까?

브라우저에 MySQL 테이블을 표시하고 PHP를 사용하여 파일을 생성하고 싶습니다.demo-db.php

<!DOCTYPE html>
<html>
<body>

<?php
$servername = "localhost";
$username = "fabian";
$password = "XXX";
$dbname = "music";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
else echo "everything fine";

mysqli_close($conn);
?>

</body>
</html>

터미널에서 파일을 실행하면 php -f demo-db.php다음과 같은 출력이 나타납니다.

<!DOCTYPE html>
<html>
<body>

everything fine
</body>
</html>

안타깝게도 http://localhost//demo-db.php다음으로 이동하면 다음과 같은 액세스 거부 오류가 발생합니다.

Connection failed: Access denied for user 'fabian'@'localhost'

도움을 얻기 위해 온라인에서 검색을 시도했지만 성공하지 못했습니다. 내 컴퓨터의 phpinfo.php 파일을 볼 수 있습니다여기.

답변1

얼마 후 나는 문제에 대한 해결책을 찾았습니다.

댓글 달기계산기 질문PHP를 사용하여 브라우저를 통해 MariaDB 데이터베이스에 액세스하는 것과 관련하여 "최신 버전의 MariaDB/MySQL에서는 PHP를 통해 루트 사용자를 사용할 수 없습니다." 루트가 아닌 다른 사용자를 사용하면 실제로 예상대로 MySQL 데이터베이스에 연결할 수 있습니다. .

답변2

문제는 SELinux에 있어야 합니다. 다음 부울을 활성화하십시오.

setsebool -P httpd_can_network_connect_db=1

관련 정보