2014-06-30 244 views
0

這裏的是我寫的PHP代碼:PHP,MYSQL腳本無法連接到數據庫服務器

<?php 
$con=mysqli_connect("193.167.138.9","username","password","DatabaseName"); 
// Check connection 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

// escape variables for security 
$t_name = mysqli_real_escape_string($con, $_POST['name']); 
$t_email = mysqli_real_escape_string($con, $_POST['email']); 
//$age = mysqli_real_escape_string($con, $_POST['age']); 
$ip = getenv("REMOTE_ADDR") ; 
$date_time = date("l j F Y g:ia", time()- date("Z")) ; 

$sql="INSERT INTO IP_TIME (Name, MAIL_ADDRESS,IP_ADDRESS,DATE_TIME) 
VALUES ('$t_name', '$t_email', '$ip', '$date_time')"; 

if (!mysqli_query($con,$sql)) { 
    die('Error: ' . mysqli_error($con)); 
} 
echo "Check the IP_TIME table"; 

mysqli_close($con); 
?> 

這裏193.167.138.9是我使用的服務器的IP。最初,當我在我的本地機器上測試它,在「193.167.138.9」的地方,這是「本地主機。

當我試圖在服務器上運行的代碼,它顯示了以下錯誤消息。

Failed to connect to MySQL: Can't connect to MySQL server on '193.167.138.9' (111)Error: 

任何想法,出了什麼問題,我該如何解決

我檢查它在MySQL配置文件,尤其是my.conf文件,它看起來象下面這樣:?

[mysqld] 
# 
# * Basic Settings 
# 
user   = mysql 
pid-file  = /var/run/mysqld/mysqld.pid 
socket   = /var/run/mysqld/mysqld.sock 
port   = 3306 
basedir   = /usr 
datadir   = /var/lib/mysql 
tmpdir   = /tmp 
lc-messages-dir = /usr/share/mysql 
skip-external-locking 
# 
# Instead of skip-networking the default is now to listen only on 
# localhost which is more compatible and is not less secure. 
# 
bind-address   = 127.0.0.1 

不知道是什麼阻止mysql連接。任何幫助/建議將是有益的

+0

嘗試'localhost'而不是'193.167.138.9' –

+0

'無法連接到MySQL ...(111)錯誤:'你爲什麼要切斷錯誤信息...... – DanFromGermany

回答

0

你必須綁定地址更改爲

bind-address   = 193.167.138.9 
+0

然後顯示以下錯誤「無法連接到MySQL:在'讀取初始通信數據包時丟失與MySQL服務器的連接',系統錯誤: 0Error:「 – kingmakerking

+0

看到這個[線程](http://stackoverflow.com/questions/5755819/lost-connection-to-mysql-server-at-reading-initial-communication-packet-syste)看起來像一個問題與防火牆。 – Jens

+0

這是正確答案,MySQL只能綁定到0,1或* all * ip地址。您可以使用'bind-address'&'socket'選項將它綁定到ip **和**本地unix套接字,tho,就像您已有的一樣。 – DanFromGermany

0

你應該發表意見bind-address這樣

# bind-address = 127.0.0.1 

或更改bind-address與您的服務器的IP地址

bind-address = 193.167.138.9 
0

只是一個想法,但你有沒有配置你的我們呃能夠遠程連接到數據庫?例如。將主機配置爲任何主機的'%'(因爲您提到您之前使用localhost測試過)?

0

您需要在服務器上創建的MySQL用戶與您請求的機器的IP地址,如下面

grant all privileges on *.* to 'user'@'171.15.12.3' identified by 'password'; 
相關問題