簡體   English   中英

MySQL數據庫接受遠程連接,但不接受PHP

[英]MySQL Database accepting remote connections, but not from PHP

因此,我在專用服務器上設置了MySQL服務器。 我試圖用此PHP腳本連接到它。

<?php
$servername = "******";
$username = "******";
$password = "******";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
echo "Connected successfully";
?>

是的,我的腳本中的*****被替換為正確的信息。

連接被拒絕,出現此錯誤

Connection failed: Can't connect to MySQL server on '66.45.230.186' (111)

所以我從另一台主機嘗試過,我使用了http://www.rainbowspuppiessunshine.com/tools/dbtest/index.php

從這里我也有一個錯誤:

Lost connection to MySQL server at 'reading initial communication packet', system error: 111

所以我試圖從我的VPS連接到MySQL。 我在上面安裝了MySQL,並通過用戶“ root”和“ steam”建立了連接,並且能夠訪問我的數據庫並通過它添加表。

VPS與我的專用服務器(運行我的MySQL服務器)由同一主機托管,因此我認為可能是因為它位於同一LAN上,這可能就是為什么允許連接的原因。 因此,我決定在本地計算機(HeidiSQL 9.1)上安裝MySQL客戶端。 我能夠從本地計算機(距我的專用服務器500英里)與該客戶端建立連接

因此,對於為什么我能夠從另一個MySQL客戶端遠程連接到MySQL,我絕對一無所知,但是我無法通過任何PHP腳本連接到它。 我真的不知道有什么區別。

MySQL服務器是全新安裝(除了為遠程連接設置權限和添加具有兩個表的數據庫之外)。 它在Ubuntu 14.04上運行

+------------------+-------------------------------------------+---------------+
| user             | password                                  | host          |
+------------------+-------------------------------------------+---------------+
| root             | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | localhost     |
| root             | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | myserver      |
| root             | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | 127.0.0.1     |
| root             | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | ::1           |
| debian-sys-maint | *AA9A40B349EDF9989A118FEFCF255353033F4A6D | localhost     |
| steam            | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | **.**.***.*** |
| steam            | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | %             |
| root             | *367201834FD28DD7137E8947B4E1A1F5CAC4BBB4 | %             |
+------------------+-------------------------------------------+---------------+

被編輯以隱藏IP

首先,請檢查php中的mysql和mysqli支持。 在您的網站(/ var / www / html)中創建index.php,以下是文件內容。

<?php
 echo phpinfo();
?>

在Web瀏覽器( http://localhost/index.php )上訪問index.php並檢查mysql和mysqli項目是否存在。 在此處輸入圖片說明

如果不是,請重新安裝php mysql support,在這種情況下,請使用apt-get命令進行安裝。

其次,請登錄到您的mysql並檢查遠程連接狀態。

// in command line
mysql -u your user -p your password
// execute following sql
select user,password,host from mysql.user;

以下是結果 在此處輸入圖片說明

然后請檢查主機列,如果此列值是特定的ip或主機名(localhost,192.168.xxx.xxx等),請更改為任何客戶端都可以連接它。 假設您的數據庫連接信息如下

database  demo
user  demo
password demo
//execute the sql to change
grant all on demo.* to demo@'%' identified by 'demo';
flush privileges;

完成上述步驟后,請嘗試再次從php連接mysql。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM