Anda perlu menyambungkan program meja ke basis data di sebuah server. Cara cepatnya - mengikat ke semua alamat lalu membuka portanya - menaruh basis data Anda di hadapan seluruh internet, tempat para pemindai menemukannya dalam hitungan jam. Ada cara yang lebih baik dan tidak lebih lama.
Jawaban yang benar: sebuah terowongan SSH
ssh -N -L 3307:127.0.0.1:3306 sara@server.example.com
# then point the client at:
# host 127.0.0.1 port 3307
Basis datanya tetap menyimak di localhost saja, tak ada yang dibuka di tembok api, dan sambungannya dienkripsi SSH. Setiap program meja - TablePlus, DBeaver, Sequel Ace, MySQL Workbench - sudah memuat ini sebagai pilihan SSH.
Pastikan ia belum telanjur tersingkap
sudo ss -tlnp | grep 3306
# 127.0.0.1:3306 good
# 0.0.0.0:3306 exposed
# /etc/mysql/mysql.conf.d/mysqld.cnf
bind-address = 127.0.0.1
Kalau ia memang harus terjangkau
Misalnya sebuah server aplikasi di pusat data lain. Maka: sebuah jaringan pribadi kalau penyedianya menyediakan, sebuah aturan tembok api yang menyebut alamat asalnya dengan tepat, seorang pengguna yang dibatasi pada host itu, dan TLS yang diwajibkan.
sudo ufw allow from 203.0.113.20 to any port 3306 proto tcp
CREATE USER 'app'@'203.0.113.20' IDENTIFIED BY '...' REQUIRE SSL;
GRANT SELECT, INSERT, UPDATE, DELETE ON shop.* TO 'app'@'203.0.113.20';
Periksa apa yang sudah ada
SELECT user, host FROM mysql.user ORDER BY host;
Setiap baris dengan % di kolom host layak dijelaskan. Lihat pengguna dan hak, tanpa memberi berlebihan.