为什么我不能通过浏览器连接mysql,而是通过终端用php连接?

为什么我不能通过浏览器连接mysql,而是通过终端用php连接?

我想用 PHP 在浏览器中显示 MySQL 表并创建文件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 使用 root 用户。”当使用与 root 不同的用户时,我确实可以连接到 MySQL 数据库如预期。

答案2

问题一定出在 SELinux 上,启用以下布尔值。

setsebool -P httpd_can_network_connect_db=1

相关内容