作者dream0830 (異影)
看板PHP
標題[請益] MYSQL外部連線
時間Mon May 21 22:42:37 2012
問題已順利解決,謝謝各位的協助
1F:→ dio833:把!@mysql_connect中的@去掉,變成!mysql_connect。 05/22 18:02
2F:→ dio833:就可以顯示出錯誤訊息 05/22 18:03
原來@會忽略錯誤訊息阿,學到一招
根據PHP的錯誤訊息發現好像有版本的問題
因為我是直接從官網下載最新版的所以我就確認了一下
MYSQL端的appserv版本為2.5.10
而我這端的appserv版本為2.6.0
版本果然....
重新安裝MYSQL端的相同版本再測試就成功了
謝謝各位的幫忙
各位高手
小妹我想請教一個問題
我將MYSQL架設在10.3.204.10的位置
而我則是在10.1.202.162的位置
基本上因為都是內部IP所以我想應該是沒有找不到的問題
直接連線10.3.204.10/phpMyadmin時,也可以直接對MYSQL做存取的動作
再裝Appsev的時候,我想因為是外連外部的MYSQL,
所以在10.1.202.162這台就沒有裝MYSQL了
我也在10.3.204.10的MYSQL權限的部分有做我的IP的設定
為了確保權限,%與IP的權限都設定了
在權限部分可以看到
使用者 主機 密碼 整體權限 授權
任何 % -- USAGE 否
任何 localhost 否 USAGE 否
任何 production.mysql.com 否 USAGE 否
root % 是 ALL PRIVILEGES 是
root 10.1.202.162 是 ALL PRIVILEGES 是
root 127.0.0.1 否 ALL PRIVILEGES 是
root localhost 是 ALL PRIVILEGES 是
root production.mysql.com 否 ALL PRIVILEGES 是
權限已經全開了
在PHP中
connMysql.php的設定是
$db_host = "10.3.204.10";
可是在連接網頁時,仍顯示無法與資料庫連接
是否有漏掉設定的
目前是有拜過大神
有得到說要在資料庫的主機端修改 my.cnf中
有個bind-address 127.0.0.1要做註解
可是我找不到my.cnf(那好像是Linux才叫做my.cnf)
於是我直接找my.ini
可是在my.ini中我找不到 bind-address 127.0.0.1的檔案
目的很純粹就是要讓
10.1.202.162的php可以對10.3.204.10的MYSQL做存取
麻煩各位高手指點迷津
-------------------------------------------
目前情形
10.3.204.10 port3306 確定開啟
連線檔案 connMysql.php 內容
//資料庫主機設定
$db_host = "10.3.204.10";
$db_table = "phpmember";
$db_username = "root";
$db_password = "1234";
//設定資料連線
if (!@mysql_connect($db_host, $db_username, $db_password))
die("資料連結失敗!");
//連接資料庫
if (!@mysql_select_db($db_table)) die("資料庫選擇失敗!");
PHP的錯誤訊息
沒有錯誤,我連線網頁只有「資料連結失敗!」
telnet 10.3.204.10 3306的情形
F
5.0.51b-community-nt-log? qqd"xZ9L,?FR8^Rap1A4!Ex
遺失與主機的連線
------------------------------------------------------
根據dio833的說明 PHP的錯誤訊息是
Warning: mysql_connect() [function.mysql-connect]: OK packet 6 bytes shorter
than expected. PID=1660 in C:\AppServ\www\connMysql.php on line 8
Warning: mysql_connect() [function.mysql-connect]: mysqlnd cannot connect to
MySQL 4.1+ using old authentication in C:\AppServ\www\connMysql.php on line 8
Warning: mysql_connect() [function.mysql-connect]: in
C:\AppServ\www\connMysql.php on line 8
是因為版本問題嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.130.189.16
3F:→ mattttt:Linux or winodws ? 05/21 23:08
4F:→ dio833:10.3.204.10有沒有防火牆擋住3306 port?錯誤訊息是啥? 05/21 23:11
5F:→ dio833:telnet 10.3.204.10 3306 看看有沒有通 05/21 23:12
6F:→ dream0830:windows 7 05/22 12:13
7F:→ dream0830:目前是在10.1.202.162做設定 沒有看到錯誤訊息 05/22 12:14
8F:→ dream0830:telnet後出現詭異的文字 外加遺失與主機的連線 05/22 12:15
9F:→ dream0830:telnet出現詭異文字 可能真的沒有開port的關係 謝謝各位 05/22 12:16
10F:→ dream0830:嘗試開port了,發現那台防火牆是全關的狀態,沒有防毒 05/22 14:33
11F:→ dream0830:依然連不上(orz 05/22 14:33
12F:→ dio833:你用的帳號是root嗎?另外php中的錯誤訊息是啥? 05/22 15:58
13F:→ dio833:你先在10.1.202.162中裝一下navicat,直接用這個軟體連看看 05/22 15:59
14F:→ dream0830:目前有用netstat確定3306是listening的狀態 05/22 17:35
15F:→ dream0830:PHP是顯示我針對連線做偵錯所顯示的echo值 05/22 17:36
16F:→ dream0830:帳號都是root沒錯 05/22 17:37
※ 編輯: dream0830 來自: 140.130.189.16 (05/22 17:43)
17F:→ dream0830:因為我網頁中每個檔案開頭勢必都先connMysql 05/22 17:44
18F:→ dream0830:所以他只告訴我她連不到資料庫QAQ 05/22 17:44
19F:→ dio833:把!@mysql_connect中的@去掉,變成!mysql_connect。 05/22 18:02
20F:→ dio833:就可以顯示出錯誤訊息 05/22 18:03
21F:→ dio833:另外Navicat不是netstat,是一套mysql的管理軟體 05/22 18:03
22F:→ dream0830:恩恩 感謝 目前mysql端關機了XD 我明天再試試 05/22 19:17
23F:→ tyf99:root production.mysql.com 否 這一行是怎樣... 05/22 22:24
24F:→ dream0830:我也不知道那是啥耶其實 他本來就在了XD 05/23 12:59
※ 編輯: dream0830 來自: 140.130.189.46 (05/23 13:01)
25F:→ dream0830:謝謝各位的幫忙 我成功了 05/23 17:41
26F:→ dream0830:除了開啟權限以外 兩邊的版本還要一樣才可以通 05/23 17:42
※ 編輯: dream0830 來自: 140.130.189.46 (05/23 17:46)
※ 編輯: dream0830 來自: 140.130.189.46 (05/23 17:51)
※ 編輯: dream0830 來自: 140.130.189.46 (05/23 17:53)