ການສົ່ງຕໍ່ SSH ຮັບຟັງຢູ່ port ທ້ອງຖິ່ນ 13306, ແຕ່ mysql ຍັງເຊື່ອມຕໍ່ກັບຖານຂໍ້ມູນທ້ອງຖິ່ນ—ຫຼືລາຍງານວ່າ Unix socket ທ້ອງຖິ່ນຂອງມັນຂາດຫາຍ. ໃນ Unix, ລູກຄ້າ MySQL ທີ່ໄດ້ຮັບ localhost ສາມາດເລືອກ Unix socket ແທນ TCP. ການໃຫ້ port ບໍ່ຈຳເປັນຕ້ອງປ່ຽນການເລືອກນັ້ນ.

ສຳລັບການສົ່ງຕໍ່ TCP ທີ່ໄດ້ຮັບອະນຸມັດແລ້ວ, ເຮັດໃຫ້ໂປຣໂຕຄອນຊັດເຈນ:

mysql --protocol=TCP --host=127.0.0.1 --port=13306 \
  --user=dbuser --password

ຊື່ຜູ້ໃຊ້ເປັນພຽງຕົວຢ່າງ; ຕົວເລືອກລະຫັດຜ່ານຮ້ອງຂໍການປ້ອນແບບໂຕ້ຕອບ. ຄຳສັ່ງເຊື່ອມຕໍ່ກັບຜູ້ຮັບຟັງ TCP ທ້ອງຖິ່ນ ແທນ Unix socket.

ແຍກການເຂົ້າສູ່ລະບົບສອງຢ່າງ

ເສັ້ນທາງ SSH ຄົງທີ່ສາມາດມີຮູບແບບນີ້:

ssh -N -L 127.0.0.1:13306:db.internal:3306 [email protected]

ເຊີບເວີ SSH ຂອງ gateway ໄປຮອດ db.internal:3306. ຈາກນັ້ນ MySQL ພິສູດຢືນຢັນບັນຊີຖານຂໍ້ມູນຜ່ານກະແສ byte ນັ້ນ. ກະແຈ SSH ທີ່ຖືກຍອມຮັບບໍ່ໄດ້ໃຫ້ການເຂົ້າສູ່ຖານຂໍ້ມູນ, ແລະ ຂໍ້ຈຳກັດແຫຼ່ງຂອງຖານຂໍ້ມູນເຫັນການເຊື່ອມຕໍ່ມາຈາກທາງດ້ານນັ້ນຂອງເສັ້ນທາງ.

ນີ້ແມ່ນອາດາເປີ TCP ຄົງທີ່ ບໍ່ແມ່ນການຕັ້ງຄ່າ SOCKS ທີ່ mysql ໃຊ້. ແອັບພລິເຄຊັນບໍ່ຕ້ອງການການເຈລະຈາ SOCKS ເພາະຈຸດປາຍທາງຂອງການສົ່ງຕໍ່ມີເປົ້າໝາຍດຽວທີ່ກຳນົດໄວ້ກ່ອນ.

ຮັກສາເອກະລັກ TLS ຂອງຖານຂໍ້ມູນທີ່ຕັ້ງໃຈ ແລະ ນະໂຍບາຍໃບຢັ້ງຢືນໃນບ່ອນທີ່ພວກມັນຖືກໃຊ້. ການເຊື່ອມຕໍ່ socket ກັບ loopback ບໍ່ເຮັດໃຫ້ໃບຢັ້ງຢືນຖານຂໍ້ມູນຖືກຕ້ອງສຳລັບຊື່ບໍລິການອື່ນ. ການເຊື່ອມຕໍ່ TCP ທ້ອງຖິ່ນທີ່ສຳເລັດແກ້ໄຂການເລືອກການຂົນສົ່ງ ບໍ່ແມ່ນການພິສູດຢືນຢັນຖານຂໍ້ມູນ ຫຼື ການກວດສອບ TLS ໃນພາຍຫຼັງ.

ບົດຄວາມທີ່ກ່ຽວຂ້ອງ