2012-10-23 52 views
4

當使用PHP連接到Web主機上的MySQL數據庫時,引用服務器的最佳方式是什麼?我應該如何在Web主機上引用MySQL服務器?

MySQL的管理頁面,我的虛擬主機上說什麼的服務器的IP地址,但我可以使用除IP號碼別的其他?

例如,

$con = mysql_connect("l00.50.10.10","user","password"); 
if (!$con) { die('Could not connect: ' . mysql_error()); } 

當我使用localhost我得到這樣的輸出:

無法連接:無法通過套接字 '/var/lib/mysql/mysql.sock' 連接到本地MySQL服務器( 2)

+0

這是更常見的是使用「連接到本地MySQL服務器localhost「,如果你的PHP代碼與數據庫在同一臺服務器上。 –

+2

也許這是失敗的,因爲你有一個小寫的L而不是一個數字1? ;) – Vulcan

+0

或者,更好的是,PDO。 –

回答

0

您可以將數據庫服務器的主機名,如mydbbox.example.com。使用IP地址可能會更快,因爲不需要DNS查找。

另請參閱this SO question

2

您可以使用「localhost」作爲主機來引用腳本的系統。

$con = mysql_connect("localhost", "user", "password"); 

然而,連接到IP是最有可能失敗,因爲你有一個小寫的L,你應該有一個數字(但我希望在IP中的問題只是一個例子)。

同樣,使用的mysqli或PDO代替MySQL的,這是對棄用的邊緣。

+0

如果主機提供商使用數據庫和Web的單獨服務器,這將無法正常工作 – Svetoslav

+0

@Svetlio有效的點,儘管它可能在同一臺服務器上。無論哪種方式,我在我的答案中加入了關於'l'和'1'的評論。謝謝。 – Vulcan

+0

當我使用'localhost'時,我得到這個輸出:'無法連接:無法通過套接字連接到本地MySQL服務器'/var/lib/mysql/mysql.sock'(2)' – CJ7

-1

這主要取決於主機如何配置。根據我的經驗,您將使用「localhost」,即服務器的IP地址或由主機設置的某種子域。

我想通過測試「localhost」作爲這個開始是大多數共享主機環境中的默認值。

$con = mysql_connect("localhost", "username", "password"); 
0

此問題的答案取決於您的主機(或其控制面板)如何配置MySQL特權。這些權限是IP或主機名特定的,所以經常通過IP或主機名連接可能不具有相同的連接結果。如果有疑問,我會堅持他們給你的設置。

瞭解更多:http://dev.mysql.com/doc/refman/5.0/en/account-names.html

+0

我在MySQL管理頁面上看到的所有內容都是服務器的IP地址,但我不願意使用它,因爲它們可能會在不通知的情況下對其進行更改。 – CJ7

+0

這是一個值得關注的問題。在這種情況下,我會問你的主機是否有一個穩定的主機名,你可以使用它來連接到具有相同權限的同一臺服務器。 – jimp

0

如果數據庫主機是同一臺計算機 - 使用localhost。當您使用端口號localhost時,MySQL將通過本地套接字進行連接,而不是tcpip(網絡)。

有時服務器不支持套接字連接,你就會得到錯誤是這樣的:

無法連接:無法連接到通過socket本地MySQL服務器...

編輯/校正: 如果你不能通過套接字連接 - 使用127.0.0.1。它會通過tcpip強制conncetion。

如果數據庫服務器安裝在其他機器上 - 可以使用IP addressdomain

大多數情況下IP地址更好,因爲即使DNS(域名服務器)工作不正常或域名過期,也可以建立連接。


而且一個建議 - 使用mysqli_,而不是在新的應用mysql_功能。新功能在使用中非常相似,但更安全。

mysql_職能已經過時,他們不建議新的應用。他們仍然在PHP可用,因爲CMS系統與舊的,過時的軟件兼容性(,電子商務系統等

PHP Help說(約的mysql_connect):

這個擴展的使用氣餒相反,和mysqli或PDO_MYSQL 擴展應使用


更多本地主機與連接 - 從資訊

在Unix中,MySQL程序處理的主機名localhost特別,因爲是你所期望的相比其他 基於網絡的程序可能不同 方式。對於連接到本地主機,MySQL程序 嘗試使用Unix套接字文件連接到本地服務器。 即使給出了--port或-P選項來指定端口號 ,也會發生這種情況。爲了確保客戶端建立TCP/IP連接到 本地服務器上,使用--host或-h指定 127.0.0.1

注意的主機名值,即「--port」和「-P」選項在PHP以外的其他上下文中描述,但連接機制的工作方式類似,並且localhost是「特殊」名稱,無關緊要的是此PHP,控制檯或其他軟件。

+0

當我使用'localhost'時,我得到這個輸出:'無法連接:無法通過套接字連接到本地MySQL服務器'/var/lib/mysql/mysql.sock'(2)' – CJ7

+0

我再次更新了我的答案。 – Kamil

+0

'localhost:3306'給出了同樣的錯誤。 – CJ7

0

你有沒有試過在谷歌類似的東西?

PHP無法連接:無法通過 插座 '/var/lib/mysql/mysql.sock'(2)

相關問題