Mysql Serveri localhost Dışındaki Bağlantılara Açmak 
Bunun için üç şeyi sırayla yapman gerekir: MySQL'in dinlediği adresi değiştirmek, uzaktan bağlanacak bir kullanıcı tanımlamak ve güvenlik duvarında 3306 portunu açmak.
127.0.0.1 üzerinden dinler. Yapılandırma dosyası dağıtıma göre değişir:
| Sistem | Dosya |
|---|---|
| Ubuntu/Debian (MySQL) | /etc/mysql/mysql.conf.d/mysqld.cnf |
| Ubuntu/Debian (MariaDB) | /etc/mysql/mariadb.conf.d/50-server.cnf |
| CentOS/RHEL/Alma | /etc/my.cnf veya /etc/my.cnf.d/server.cnf |
| Windows | C:ProgramDataMySQLMySQL Server 8.0my.ini |
MariaDB üzerinde (mariadb.cnf ve mariadb.conf.d var). bind-address ayarı burada, mysql klasörünün altındaki mariadb.conf.d içinde:
/etc/mysql/mariadb.conf.d/50-server.cnf
Kaydet ve servisi yeniden başlat (MariaDB'de servis adı mariadb):
sudo systemctl restart mariadb
sudo ss -tlnp | grep 3306

Uzaktan bağlanacak kullanıcı oluştur:
MySQL'de kullanıcı, kullanıcı@adres çifti olarak tanımlanır. root@localhost uzaktan çalışmaz, ayrı kullanıcı gerekir.
Sadece belirli bir IP'den bağlanabilsin (önerilen)
CREATE USER 'uzakkullanici'@'203.0.113.25' IDENTIFIED BY 'GucluBirSifre!';
Sadece tek bir veritabanına yetki ver
GRANT ALL PRIVILEGES ON veritabani_adi.* TO 'uzakkullanici'@'203.0.113.25';
FLUSH PRIVILEGES;
Adres seçenekleri:
'203.0.113.25': tek IP'203.0.113.%': o IP bloğu'%': her yerden. Çok riskli, mümkünse kullanma
RENAME USER 'kullanici'@'localhost' TO 'kullanici'@'%';
CREATE USER yap.
Güvenlik duvarında 3306'yı aç
Ubuntu (ufw), sadece belirli IP'ye:
Windows: Windows Defender Güvenlik Duvarı → Gelen Kurallar → Yeni Kural → Bağlantı Noktası → TCP 3306.
Bulut sunucu (AWS, Azure, Hetzner, DigitalOcean vb.) kullanıyorsan ayrıca panelden Security Group / Firewall kuralına 3306'yı eklemelisin.
4. Test
Uzak bilgisayardan:
mysql -h SUNUCU_IP -u uzakkullanici -pPort açık mı bakmak için:
nc -zv SUNUCU_IP 3306
Hata mesajına göre sorun
Can't connect ... (110)veya zaman aşımı: Güvenlik duvarı ya da bulut firewall'u engelliyor.Connection refused (111): MySQL hâlâ sadece localhost'u dinliyor,bind-address'i veya servisi kontrol et.Access denied for user: Kullanıcı o IP için tanımlı değil ya da şifre yanlış.SELECT user, host FROM mysql.user;ile kontrol et.Host 'x' is not allowed to connect: Kullanıcının host kısmı bağlanan IP'yle eşleşmiyor.
Güvenlik uyarıları
- 3306'yı herkese açma. Botlar açık MySQL portlarını sürekli tarar ve şifre denemesi yapar. Mutlaka IP kısıtlaması koy.
- Uzaktan
rootkullanma. Her uygulama için ayrı kullanıcı ve sadece gereken yetkiyi ver. - SSL zorunlu kıl:
CREATE USER ... REQUIRE SSL;ile şifrelenmemiş bağlantıyı engelleyebilirsin. - Alternatif olarak SSH tüneli kullanabilirsin. Portu hiç açmadan güvenli bağlanırsın:
Sonra yerelde 127.0.0.1:3307'ye bağlan.
Eğer sunucu cPanel/Plesk gibi bir panelle yönetiliyorsa, yukarıdakilerin yerine panelde Remote MySQL bölümüne bağlanacak IP'yi eklemen yeterli olur.
Kaynak