Connect () function ကိုအသုံးပြုသော PHP ရှိဒေတာဘေ့စ်တစ်ခုနှင့်ချိတ်ဆက်ရန် "Access Denied" အမှားသည်ဘုံပြ problem နာဖြစ်သည်။ ဤအမှားသည်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ရန်ခွင့်ပြုချက်များကိုခွင့်မပြုကြောင်းယေဘုယျအားဖြင့်ဆက်သွယ်မှုပြတ်တောက်မှုကိုခွင့်မပြုကြောင်းယေဘုယျအားဖြင့်ဖော်ပြသည်။ ဤဆောင်းပါးသည်ထိုကဲ့သို့သောပြ problems နာများကိုဖြေရှင်းရန်နှင့်ပြ problems နာများကိုအလျင်အမြန်ရှာဖွေရန်နှင့်ဖြေရှင်းရန်ကူညီခြင်းအတွက်အကြံဥာဏ်များနှင့်တိကျသောနည်းလမ်းများကိုဤဆောင်းပါးတွင်အသေးစိတ်မိတ်ဆက်ပေးပါမည်။
"Access Denied" သည်များသောအားဖြင့်ဒေတာဘေ့စ်ဆာဗာသည်ဆက်သွယ်မှုတောင်းဆိုမှုကိုငြင်းပယ်သည်။
မမှန်ကန်သောအသုံးပြုသူအမည်သို့မဟုတ်စကားဝှက်
ချိတ်ဆက်ထားသော host ကိုဒေတာဘေ့စ်ကိုဝင်ရောက်ခွင့်မပြုပါ
ဒေတာဘေ့စ်အသုံးပြုသူခွင့်ပြုချက်မလုံလောက်ပါ
ဒေတာဘေ့စ်ဆာဗာ configuration ကန့်သတ်ချက်များ
ဤပြ problem နာအမျိုးအစားသည် MySQL ကဲ့သို့သော relational databases များတွင်တွေ့ရလေ့ရှိသည်။
PHP Code တွင်ဒေတာဘေ့စ်နှင့်ချိတ်ဆက်ထားသောကုဒ်သည်အောက်ပါနှင့်ဆင်တူသည်။
<?php
$servername = "m66.net";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";
// ဆက်သွယ်မှုတစ်ခုဖန်တီးပါ
$conn = new mysqli($servername, $username, $password, $dbname);
// ဆက်သွယ်မှုကိုစစ်ဆေးပါ
if ($conn->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $conn->connect_error);
}
echo "အောင်မြင်စွာဆက်သွယ်မှု";
?>
$ username နှင့် $ စကားဝှက် မှန်ကန်ကြောင်းအတည်ပြုပါ။ မမှန်ကန်သောအသုံးပြုသူအမည်သို့မဟုတ်စကားဝှက်သည် "ဝင်ရောက်ခွင့်ကိုငြင်းပယ်ခြင်း" ဖြစ်စေနိုင်သည်။
MySQL အသုံးပြုသူခွင့်ပြုချက်များသည် အသုံးပြုသူ @ localhost နှင့် user@192.168.1.1 သည်ကွဲပြားသောအကောင့်များဖြစ်သော Username username နှင့် hosts ပေါင်းစပ်ခြင်းအပေါ်အခြေခံသည်။
အကယ်. သင်သည် IP address တစ်ခုသို့မဟုတ်ဝေးလံခေါင်သီသောအိမ်ရှင်တစ် ဦး ကိုချိတ်ဆက်ရန်အသုံးပြုပါကဒေတာဘေ့စ်အသုံးပြုသူသည်သက်ဆိုင်ရာအိမ်ရှင်အား 0 င်ရောက်နိုင်ကြောင်းအတည်ပြုပါ။
SELECT user, host FROM mysql.user WHERE user='your_username';
ခွင့်ပြုချက်မလုံလောက်ပါကခွင့်ပြုချက်ကိုထည့်ရန်အောက်ပါ command ကိုသုံးနိုင်သည်။
GRANT ALL PRIVILEGES ON your_database.* TO 'your_username'@'your_client_ip' IDENTIFIED BY 'your_password';
FLUSH PRIVILEGES;
ပုံမှန်အားဖြင့် MySQL ဆာဗာများသည်ဒေသဆိုင်ရာဆက်သွယ်မှုများကိုသာခွင့်ပြုသည်။ MySQLD configuration file တွင်ရှိသော ချည်နှောင်ထားသောစည်းမျဉ်း စည်းကမ်းများသည်ဝေးလံခေါင်ဖျားစွာဝင်ရောက်ခွင့်ပြုသည်ကိုသင်အတည်ပြုရန်လိုအပ်သည်။
များသောအားဖြင့် configuration file /etc/mysql/my.cnf သည် -
bind-address = 0.0.0.0
IP ဆက်သွယ်မှုအားလုံးကိုခွင့်ပြုထားကြောင်းဖော်ပြသည်။ အကယ်. 127.0.0.1 ဖြစ်ပါကဒေသဆိုင်ရာဆက်သွယ်မှုများကိုသာခွင့်ပြုသည်။
Firewall သည်ဒေတာဘေ့စ်ဆိပ်ကမ်း (များသောအားဖြင့် 3306) ကိုအများပြည်သူအတွက်ဖွင့်ရန်တားဆီးနိုင်သည်။ Port Connection ကိုရှာဖွေရန် command များကိုအသုံးပြုရန်သင်ကြိုးစားနိုင်သည်။
telnet m66.net 3306
ဆက်သွယ်မှုပျက်ကွက်ပါက firewall settings ကိုစစ်ဆေးပါ။
ဆက်သွယ်မှုပျက်ကွက်သည့်အခါ MySQLI_Connect_Error () သည် အထူးအမှားအယွင်းတစ်ခုပေးနိုင်သည်။
<?php
$conn = new mysqli("m66.net", "your_username", "your_password", "your_database");
if ($conn->connect_error) {
die("ဆက်သွယ်မှုမအောင်မြင်ပါ: " . $conn->connect_error);
}
?>
အမှားသတိပေးချက်များနှင့်ပေါင်းစပ်။ ပစ်မှတ်ထားပြ troubl နာဖြေရှင်းခြင်း။
Connect () function ကို အသုံးပြု. PHP တွင် "Access Denied" အမှားကိုသင်ကြုံတွေ့ရသောအခါအောက်ပါရှုထောင့်များတွင်စစ်ဆေးသင့်သည်။
အသုံးပြုသူအမည်နှင့်စကားဝှက်မှန်ကန်မှုရှိမရှိအတည်ပြုပါ
ဒေတာဘေ့စ်အသုံးပြုသူသည်သက်ဆိုင်ရာအိမ်ရှင်သို့ 0 င်ရောက်နိုင်ခြင်းရှိမရှိအတည်ပြုပါ
ဒေတာဘေ့စ်ဆာဗာ၏ဝေးလံခေါင်သီသောဝင်ရောက်ခွင့် configuration ကိုစစ်ဆေးပါ
ကွန်ယက်နှင့် firewall settings ကိုစစ်ဆေးပါ
positioning အတွက်ကူညီရန်အမှားမက်ဆေ့ခ်ျကိုသုံးပါ
အထက်ပါအဆင့်များမှတဆင့် connection ကိုငြင်းပယ်ခြင်းပြ the နာကိုအခြေခံအားဖြင့်ရှာဖွေနိုင်သည်။