Mysql

為什麼我不能通過瀏覽器連接到mysql,而是通過終端用php連接?

  • March 9, 2019

我想用 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 文件可以在這裡看到。

一段時間後,我設法找到了一個解決問題的方法:

關於通過瀏覽器使用 PHP 訪問 MariaDB 數據庫的 stackoverflow 問題中的評論指出“較新版本的 MariaDB / MySQL 不允許您通過 PHP 使用 root 使用者。”當使用與 root 不同的使用者時,我可以確實按預期連接到 MySQL 數據庫。

問題必須與 SELinux 相關,啟用以下布爾值。

setsebool -P httpd_can_network_connect_db=1

引用自:https://unix.stackexchange.com/questions/452059