Bir masaüstü istemcisini sunucudaki bir veritabanına bağlamanız gerekiyor. Hızlı yol - bütün adreslere bağlanıp kapıyı açmak - veritabanınızı bütün internetin önüne koyar; orada tarayıcılar onu saatler içinde bulur. Daha iyi ve daha uzun sürmeyen bir yol var.
Doğru yanıt: bir SSH tüneli
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
Veritabanı yalnızca localhost'u dinlemeyi sürdürür, güvenlik duvarında hiçbir şey açılmaz ve bağlantıyı SSH şifreler. Her masaüstü istemcisinde - TablePlus, DBeaver, Sequel Ace, MySQL Workbench - bu, bir SSH seçeneği olarak yerleşiktir.
Zaten açıkta olmadığını doğrulayın
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
Gerçekten erişilebilir olması gerekiyorsa
Örneğin başka bir veri merkezindeki bir uygulama sunucusu. O zaman: sağlayıcı sunuyorsa özel bir ağ, kaynak adresi tam olarak belirten bir güvenlik duvarı kuralı, o sunucuyla sınırlı bir kullanıcı ve zorunlu TLS.
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';
Halihazırda ne olduğunu denetleyin
SELECT user, host FROM mysql.user ORDER BY host;
Sunucu sütununda % bulunan her satır bir açıklamayı hak eder. Bakınız fazlasını vermeden kullanıcılar ve yetkiler.