ช่วยตอบทีค่ะเกี่ยวกับไฟล์ Connect Database ตอนเอาขึ้น Host มัน Error ว่า ยังงี้อะค่ะ
อันนี้คือ Error หน้าเว็บตอนรัน
Code
Warning: mysql_connect() [function.mysql-connect]: Host '173.214.162.5' is not allowed to connect to this MySQL server in /home/alfrveic/public_html/home/Connections/link.php on line 54
Fatal error: Host '173.214.162.5' is not allowed to connect to this MySQL server in /home/alfrveic/public_html/home/Connections/link.php on line 54
ส่วนอันนี้โค้ดหน้า Connect
Code (PHP)
<?php header("Content-Type: text/html; charset=utf-8");?>
<?php
function random_name($len) {
srand((double)microtime()*10000000);
$chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
$ret_str = "";$num = strlen($chars);for($i=0; $i<$len; $i++){$ret_str = $ret_str.$chars[rand() % $num];}return $ret_str;
}
function formatDate($str) {
$str = explode("/",$str);
$str = $str[2] . "-" . $str[1] . "-" . $str[0];
return $str;
}
function ThaiEachDate($vardate="") {
$_month_name = array("01"=>"ม.ค.", "02"=>"ก.พ.", "03"=>"มี.ค",
"04"=>"เม.ย.", "05"=>"พ.ค.", "06"=>"มิ.ย.",
"07"=>"ก.ค.", "08"=>"ส.ค.", "09"=>"ก.ย.",
"10"=>"ต.ค.", "11"=>"พ.ย.", "12"=>"ธ.ค.");
$yy =substr($vardate,0,4);$mm =substr($vardate,5,2);$dd =substr($vardate,8,2);
$yy += 543;
if ($yy==543){
$dateT = "-";
} else {
$dateT=$dd ." ".$_month_name[$mm]." ".$yy;
}
return $dateT;
}
function ThaiDateFull($vardate="") {
$_month_name = array("01"=>"มกราคม", "02"=>"กุมภาพันธ์", "03"=>"มีนาคม",
"04"=>"เมษายน", "05"=>"พฤษภาคม", "06"=>"มิถุนายน",
"07"=>"กรกฎาคม", "08"=>"สิงหาคม", "09"=>"กันยายน",
"10"=>"ตุลาคม", "11"=>"พฤศจิกายน", "12"=>"ธันวาคม");
$yy =substr($vardate,0,4);$mm =substr($vardate,5,2);$dd =substr($vardate,8,2);
$yy += 543;
if ($yy==543){
$dateT = "-";
}else{
$dateT=$dd ." ".$_month_name[$mm]." ".$yy;
}
return $dateT;
}
?>
<?php
#FileName="Connection_php_mysql.htm"
#Type="MYSQL"
# HTTP="true"
$hostname_link = "173.214.162.5";
#$PORT="";
$database_link = "alfrveic_home";
$username_link = "";
$password_link = "";
$link = mysql_connect($hostname_link, $username_link, $password_link) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_link,$link);
mysql_query("SET NAMES UTF8");
?>
หมายเหตุยากรู้ด้วยว่า ตรง username password นี้ เป็น ของ Sever ตอนที่เรา ใช้เข้าหน้า จัดการระบบ บน server รึป่าว
คือ นู๋ใช้ ของ host sem อะค่ะTag : PHP, MySQL, JavaScript, jQuery, Web (ASP.NET)
Date :
2012-02-26 22:06:38
By :
bellja
View :
1641
Reply :
12
ช่วยทีนะ ค่ะ
Date :
2012-02-26 22:09:15
By :
bellja
ตรง username password กำหนดถูกต้องไม๊ครับ ต้องกำหนดด้วยนะครับ
Date :
2012-02-26 22:12:46
By :
deawx
กำหนดถูกแล้วก็ไม่ได้อะค่ะ ทำไง ดี ขอคำปรึกษาหน่อย
Date :
2012-02-26 22:32:55
By :
bellja
เพราะ mysql ของ server ของคุณ ไม่อนุญาติให้ เชื่อต่อจากภายนอกครับ
ทำไม ไม่ใช้ 127.0.0.1 ละ
Date :
2012-02-27 01:30:41
By :
ekeak
อ่อ มันเป็นชื่อ host อะค่ะ 173.214.162.5
Date :
2012-02-27 11:06:40
By :
bellja
ครับผมเข้าใจว่ามันเป็นชื่อโฮสต์ แต่ mysql ของคุณบน server ตั้งค่า exception ให้อนุญาตการเชื่อมต่อจาก ip ภายนอกแล้วยังอะครับ
Date :
2012-02-27 13:49:09
By :
ekeak
ผมคิดว่า source code กับ database ของคุณอยู่คนละ host กันรึเปล่าครับ ถึงต้อง connect database ผ่าน ip
เพราะปกติแล้ว mysql จะยอมรับการ connect จาก localhost เท่านั้น (เพื่อความปลอดภัย)
ถ้าจะ connect ผ่าน ip อย่างที่คุณต้องการ ก็ต้องไปแก้ไขสิทธ์ก่อนอ่ะครับ
ใน phpmyadmin จะมีแถบ สิทธิอยู่ ครับ แก้ในนั้นเลยครับ
Date :
2012-02-27 14:01:58
By :
ekeak
ดู Firewall ครับ และตรง host ของตาราง user ใน mysql ให้เปลี่ยนจาก localhost เป็น % ครับ
Date :
2012-02-27 21:15:12
By :
webmaster
ขอบคุณ ค่ะ
Date :
2012-03-03 18:27:16
By :
bellja
Date :
2012-03-03 19:25:14
By :
webmaster
เพิ่มเติมนะครับ
ในฐานข้อมูลที่ชื่อว่า mysql นั้นจะเป็นฐานข้อมูลของระบบ โดยจะมีตารางที่เก็บชื่อผู้ใช้งานไว้ในตารางที่ชื่อว่า user ซึ่งเราสามารถเข้าไปแก้ไขตารางนี้ได้ถ้ามี permission เพียงพอ
ในตาราง user นี้จะมีอยู่ 3 ฟิลดิ์ที่ควรจะรู้เอาไว้เป็นพื้นฐานของคนเขียนโปรแกรมนะครับ คือ user, host, password โดยที่
1 ฟิลดิ์ user จะเก็บชื่อผู้ใช้งานฐานข้อมูล ในเบื้องต้นจะต้องมี่ root เป็นอันดับแรก โดยเราสามารถเพิ่มลบได้
2 ฟิลดิ์ host จะเก็บชื่อหรือ IP ของโฮสที่สามารถเข้ามาใช้งานฐานข้อมูลโดยใช้ชื่อนี้ได้ มี 3 แบบพื้นฐานคือ
- localhost คือ จะสามารถเข้าถึงฐานข้อมูลนี้ได้ก็ต่อเมื่อไฟล์ที่ใช้ connection อยู่บนเครื่องนี้เท่านั้น ซึ่งจะเหมือนกันกับอันต่อไปคือ
- 127.0.0.1 หมายถึง localhost นั่นล่ะครับ เพราะฉะนั้นถ้าเราติดตั้ง mysql ไว้ที่เครื่องเราเอง แล้วก็เขียนสคริปที่เครื่องนี้ก็ใช้แบบนี้ก็ได้ครับ
- % ถ้าใช้เครื่องหมายนี้จะหมายถึง สามารถเข้าถึงฐานข้อมูลจากที่ใดก็ได้ เหมาะกับการเขียนสคริปกับฐานข้อมูลอยู่คนละที่กันครับ
3 ฟิลดิ์ password จะเก็บรหัสของผู้ใช้งาน โดยจะเข้ารหัส (encode) เอาไว้
สิ่งที่ผู้ใช้งานควรจะทราบก็คือเรื่องของการเข้าถึงฐานข้อมูล โดยคำนึงถึงความปลอดภัยเป็นสำคัญ เพราะฉะนั้นเราต้องตั้งค่าตรงนี้ให้ดีนะครับ ปกติเมื่อติดตั้งฐานข้อมูล Mysql จะมี user ที่ระบบสร้างให้เอาไว้อยู่แล้ว แต่มันจะไม่ค่อยปลอดภัยสักเท่าไหร่ครับ เราจึงต้องเข้ามากำหนดตรงนี้เอาไว้ด้วย ตอนนี้ผมจะยังไม่บอกวิธีกำหนดนะครับ เดี๋ยวมันจะยาว แต่ในเบื้อต้นนี้ถ้าจะตั้งค่าให้มันสามารถ connection มาจากที่ใดก็ได้ ก็ควรที่จะตั้งค่าดังนี้ครับ
สำหรับ user root นะครับ ให้มี 3 แบบเลยคือ มี 3 record นะครับ
Code (PHP)
user=root host=localhost password= ตรงนี้ต้องมีนะครับ เพื่อความปลอดภัย
user=root host=127.0.0.1 password= ตรงนี้ต้องมีนะครับ
user=root host=% password= ตรงนี้ต้องมีนะครับ ---> บันทัดนี้จะเป็นตัวบอกว่าสามารถ connection จากโฮสหรือเครื่องอื่นได้
ทั้งสามบันทัดจะมี password เหมือนกันนะครับ เพื่อที่เราจะสามารถเข้ามาควบคุมการทำงานของ mysql ได้ไม่ว่าจะใช้ที่เครื่องใดก็ตาม ปกติมักจะลืมการตั้งค่าให้เครื่องอื่นสามารถเข้าถึงฐานข้อมูลได้ครับ
ถ้าเราสร้างฐานข้อมูลใหม่ เราควรจะมีผู้ใช้งานของแต่ละฐานข้อมูลนะครับ แล้วก็กำหนดเหมือนกับ root ด้านบนก็ได้ครับ เพราะบางครั้งเราอาจจะต้องการให้ผู้ช่วยผู้ดูแลฐานข้อมูลในระดับอื่นๆเข้าถึงได้ด้วย แต่ไม่อยากให้เขาเข้าถึงฐานข้อมูลทั้งหมดน่ะ
ปกติเราเขียนเวปบนเครื่องตัวเอง แล้วก็ติดต่อฐานข้อมูลที่เครื่องเราเอง จึงมักไม่ค่อยมีปัญหา แต่เมื่อเราอัพโหลดไฟล์ขึ้นไปบนโฮสจริง ซึงบางครั้งฐานข้อมูลของเขาอาจจะถูกเก็บไว้คนละเครื่องกัน
Date :
2012-03-03 19:35:01
By :
Songkram
ขอบคุณค่ะ
Date :
2012-03-06 21:31:36
By :
bellja
Load balance : Server 02