程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> php無法連接到mysql

php無法連接到mysql

編輯:MySQL綜合教程

php無法連接到mysql


背景:

使用lighttpd作為web服務器,php作為服務器腳本,mysql作為數據庫。當浏覽器客戶端訪問的時候,服務器php腳本會嘗試連接mysql,查詢數據並且返回給客戶端。但是在調試的過程中發生兩次,無法連接mysql的情況。這裡作一下記錄。

正文:

在php腳本中連接mysql比較簡單,先貼一下代碼

<span style="font-size:14px;"><?php
$servername = "192.168.110.2";
$port=3306;
$username = "username";
$password = "password";
$dbname = "testDB";
$socket="mysqli.default_socket";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname,$port,$socket);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    // output data of each row
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
    }
} else {
    echo "0 results";
}
$conn->close();
?></span>

(1)上面這段代碼是可以運行的

如果在命令行界面中采用"php +腳本名稱"這樣的方式運行,代碼是可以順利打印出 mysql 中某個table的數據。

(2)但是當我通過web浏覽器訪問這個腳本的時候,卻沒有出現我想要的結果,代碼死在了 mysql 連接那裡。

後來分析了一下原因,應該是mysql配置參數的問題。

<span style="font-size:14px;">$server="192.168.110.2";</span>

這裡采用的是遠程連接mysql的方式,但是默認mysql安裝的時候,只監聽127.0.0 .1(也就是本機的IP)。

所以如果要讓mysql可以遠程訪問,需要配置mysql監聽的IP。

打開mysql的配置文件 /etc/mysql/my.cnf,把下面這行注釋掉。

bind-address = 127.0.0.1


(3)注釋完之後,還有一個問題需要注意

就是如果使用root用戶去遠程訪問mysql的時候,會彈出發生權限問題(在mysql本機調試的時候不會出現,但是遠程連接的時候會出現)。

解決辦法:創建一個普通用戶,並且為這個用戶添加修改或者查詢mysql的權限,然後使用這個普通用戶去訪問mysql。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved