MySQL କୁ ଫରୱାର୍ଡ ହୋଇଥିବା TCP ପୋର୍ଟ ବ୍ୟବହାର କରାନ୍ତୁ
ଯେତେବେଳେ ଏକ MySQL କ୍ଲାଇଣ୍ଟ SSH TCP ଫରୱାର୍ଡିଂ ମାଧ୍ୟମରେ ସଂଯୋଗ କରିବ, ସ୍ଥାନୀୟ Unix ସକେଟ ବାଛିବାରୁ ଦୂରେଇ ରୁହନ୍ତୁ।
SSH ଫରୱାର୍ଡିଂ ସ୍ଥାନୀୟ ପୋର୍ଟ 13306 ରେ ଶୁଣେ, କିନ୍ତୁ mysql ତଥାପି ସ୍ଥାନୀୟ ଡାଟାବେସ ସହିତ ସଂଯୋଗ କରେ—କିମ୍ବା କହେ ଯେ ଏହାର ସ୍ଥାନୀୟ ସକେଟ ନାହିଁ। Unix ରେ localhost ଦିଆଯାଇଥିବା MySQL କ୍ଲାଇଣ୍ଟ TCP ପରିବର୍ତ୍ତେ Unix ସକେଟ ବାଛିପାରେ। ପୋର୍ଟ ଦେବା ସେହି ଚୟନକୁ ନିଶ୍ଚିତ ଭାବରେ ବଦଳାଏ ନାହିଁ।
ବିଦ୍ୟମାନ ଅନୁମୋଦିତ TCP ଫରୱାର୍ଡ ପାଇଁ ପ୍ରୋଟୋକଲ ସ୍ପଷ୍ଟ କରନ୍ତୁ:
mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
--user=dbuser --password
ବ୍ୟବହାରକାରୀ ନାମ କେବଳ ଉଦାହରଣ; ପାସୱାର୍ଡ ବିକଳ୍ପ ଇଣ୍ଟରାକ୍ଟିଭ ଇନପୁଟ ମାଗେ। ନିର୍ଦ୍ଦେଶ Unix ସକେଟ ପରିବର୍ତ୍ତେ ସ୍ଥାନୀୟ TCP ଶ୍ରୋତା ସହିତ ସଂଯୋଗ କରେ।
ଦୁଇଟି ଲଗଇନ ଅଲଗା ରଖନ୍ତୁ
ଏକ ସ୍ଥିର SSH ମାର୍ଗର ଏହି ଆକୃତି ହୋଇପାରେ:
ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]
ଗେଟୱେର SSH ସର୍ଭର db.internal:3306 ପର୍ଯ୍ୟନ୍ତ ପହଞ୍ଚେ। ତାପରେ MySQL ସେହି ବାଇଟ ଷ୍ଟ୍ରିମ ମାଧ୍ୟମରେ ଡାଟାବେସ ଖାତାକୁ ପ୍ରମାଣିତ କରେ। ଗ୍ରହଣ କରାଯାଇଥିବା SSH କି ଡାଟାବେସ ଲଗଇନ ଦିଏ ନାହିଁ, ଏବଂ ଡାଟାବେସର ଉତ୍ସ ପ୍ରତିବନ୍ଧକ ସଂଯୋଗକୁ ମାର୍ଗର ସେହି ପାଖରୁ ଆସୁଥିବା ଦେଖେ।
ଏହା ଏକ ସ୍ଥିର TCP ଆଡାପ୍ଟର, mysql ବ୍ୟବହାର କରୁଥିବା SOCKS ସେଟିଂ ନୁହେଁ। ଫରୱାର୍ଡିଂ ଏଣ୍ଡପଏଣ୍ଟର ଗୋଟିଏ ପୂର୍ବନିର୍ଦ୍ଧାରିତ ଲକ୍ଷ୍ୟ ଥିବାରୁ ଆପ୍ଲିକେସନକୁ SOCKS ବୁଝାମଣାର ଆବଶ୍ୟକତା ନାହିଁ।
ଯେଉଁଠି ବ୍ୟବହୃତ ହୁଏ ସେଠାରେ ଉଦ୍ଦିଷ୍ଟ ଡାଟାବେସ TLS ପରିଚୟ ଏବଂ ସାର୍ଟିଫିକେଟ ନୀତି ରଖନ୍ତୁ। ସକେଟକୁ loopback ସହିତ ସଂଯୋଗ କରିବା ଦ୍ୱାରା ଡାଟାବେସ ସାର୍ଟିଫିକେଟ ଅନ୍ୟ ସେବା ନାମ ପାଇଁ ବୈଧ ହୁଏ ନାହିଁ। ସଫଳ ସ୍ଥାନୀୟ TCP ସଂଯୋଗ ପରିବହନର ଚୟନ ନିର୍ଣ୍ଣୟ କରେ, ପରବର୍ତ୍ତୀ ଡାଟାବେସ ପ୍ରମାଣୀକରଣ କିମ୍ବା TLS ଯାଞ୍ଚ ନୁହେଁ।