MySQL را وادار کنید از پورت TCP ارسالشده استفاده کند
وقتی یک کلاینت MySQL باید از طریق ارسال SSH TCP متصل شود، از انتخاب سوکت Unix محلی خودداری کنید.
ارسال SSH روی پورت محلی 13306 گوش میدهد، اما mysql همچنان به پایگاه داده محلی متصل میشود—یا گزارش میدهد که سوکت محلیاش وجود ندارد. در Unix، یک کلاینت MySQL که localhost به آن داده شود میتواند بهجای 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 ثابت است، نه تنظیم SOCKS که mysql مصرف کند. برنامه به مذاکره SOCKS نیازی ندارد زیرا نقطه پایانی ارسال یک هدف از پیش تعیینشده دارد.
هویت TLS مورد نظر پایگاه داده و سیاست گواهی را هرجا استفاده میشوند حفظ کنید. متصل کردن سوکت به loopback گواهی پایگاه داده را برای نام سرویس دیگری معتبر نمیکند. یک اتصال TCP محلی موفق انتخاب انتقال را حل میکند، نه احراز هویت بعدی پایگاه داده یا بررسیهای TLS را.