[英]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.