MySQL ကို ပို့ဆောင်ထားသော TCP port ကို အသုံးပြုစေရန်
MySQL client သည် SSH TCP forwarding ဖြင့် ချိတ်ဆက်သင့်သည့်အခါ ဒေသတွင်း Unix socket ကို မရွေးချယ်ပါနှင့်။
SSH forwarding သည် ဒေသတွင်း port 13306 တွင် နားထောင်နေသော်လည်း mysql သည် ဒေသတွင်း ဒေတာဘေ့စ်သို့ ဆက်လက်ချိတ်ဆက်နေသည်—သို့မဟုတ် ၎င်း၏ ဒေသတွင်း socket မရှိဟု အစီရင်ခံသည်။ Unix တွင် localhost ပေးထားသော MySQL client သည် TCP အစား Unix socket ကို ရွေးချယ်နိုင်သည်။ port ပေးခြင်းသည် ထိုရွေးချယ်မှုကို သေချာပေါက် မပြောင်းလဲပါ။
လက်ရှိ အတည်ပြုပြီး TCP forwarding အတွက် protocol ကို ရှင်းလင်းစွာ သတ်မှတ်ပါ:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
အသုံးပြုသူအမည်သည် ဥပမာအနေဖြင့်သာ ဖြစ်သည်; စကားဝှက် ရွေးချယ်မှုသည် အပြန်အလှန် ထည့်သွင်းမှုကို တောင်းခံသည်။ အမိန့်သည် Unix socket အစား ဒေသတွင်း TCP listener သို့ ချိတ်ဆက်သည်။
လော့ဂ်အင် နှစ်ခုကို ခွဲထားပါ
ပုံသေ SSH လမ်းကြောင်းသည် ဤပုံစံ ရှိနိုင်သည်:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
Gateway ၏ SSH ဆာဗာသည် db.internal:3306 သို့ ရောက်သည်။ ထို့နောက် MySQL သည် ထို byte စီးကြောင်းမှတစ်ဆင့် ဒေတာဘေ့စ်အကောင့်ကို စစ်မှန်ကြောင်း အတည်ပြုသည်။ လက်ခံထားသော SSH key သည် ဒေတာဘေ့စ် လော့ဂ်အင်ကို မပေးပါ၊ ဒေတာဘေ့စ်၏ ရင်းမြစ် ကန့်သတ်ချက်များသည် ချိတ်ဆက်မှုကို လမ်းကြောင်း၏ ထိုဘက်မှ လာသည်ဟု မြင်သည်။
ဤသည် ပုံသေ TCP adapter ဖြစ်ပြီး mysql အသုံးပြုသော SOCKS ဆက်တင် မဟုတ်ပါ။ forwarding endpoint တွင် ကြိုတင်သတ်မှတ်ထားသော ပစ်မှတ်တစ်ခု ရှိသောကြောင့် အပလီကေးရှင်းသည် SOCKS ညှိနှိုင်းမှု မလိုအပ်ပါ။
အသုံးပြုသည့်နေရာများတွင် ရည်ရွယ်ထားသော ဒေတာဘေ့စ် TLS အထောက်အထားနှင့် လက်မှတ် မူဝါဒကို ထိန်းသိမ်းပါ။ socket ကို loopback သို့ ချိတ်ဆက်ခြင်းသည် ဒေတာဘေ့စ် လက်မှတ်ကို အခြားဝန်ဆောင်မှု အမည်အတွက် တရားဝင် မဖြစ်စေပါ။ အောင်မြင်သော ဒေသတွင်း TCP ချိတ်ဆက်မှုသည် သယ်ယူပို့ဆောင်ရေး ရွေးချယ်မှုကို ဆုံးဖြတ်သည်၊ နောက်ပိုင်း ဒေတာဘေ့စ် စစ်မှန်ကြောင်း အတည်ပြုမှု သို့မဟုတ် TLS စစ်ဆေးမှုများကို မဟုတ်ပါ။