Kısa cevap
Veritabanı bağlantıyı reddettiğinde en yaygın nedenler hatalı oturum açma bilgileri, veritabanının çalışmıyor olması, ağ sorunları veya uzak bağlantılara izin vermeyen yapılandırmadır. Hizmetin çalışıp çalışmadığını kontrol edin, yerel makineden bağlantıyı test edin ve veritabanı günlüklerini inceleyin.
Sorun nasıl anlaşılır
- Uygulama veritabanına bağlanırken hata bildiriyor
- İleti 'connection refused' veya 'can't connect' içeriyor
- Bağlantı yerel olarak çalışıyor ancak uzak makineden çalışmıyor
- Veritabanı bağlanmaya çalışırken çöküyor veya yeniden başlıyor
- Hata yalnızca üretim ortamında ortaya çıkıyor
En yaygın nedenler
Veritabanı çalışmıyor
Veritabanı hizmeti durdurulmuş olabilir veya kaynak yetersizliği nedeniyle çöküyor olabilir. Hizmet durumunu ve günlükleri kontrol edin.
Hatalı bağlantı bilgileri
Yanlış ana bilgisayar adı, bağlantı noktası, kullanıcı adı veya parola bağlantı kurulmasını engeller. Uygulama yapılandırmasını kontrol edin.
Ağ sorunları veya güvenlik duvarı
Güvenlik duvarı veya ağ kuralları veritabanı bağlantı noktasını engelliyor olabilir. Bağlantı noktasının istemci makineden erişilebilir olup olmadığını kontrol edin.
Veritabanı uzak bağlantılara izin vermiyor
Varsayılan olarak birçok veritabanı yalnızca yerel bağlantıları kabul eder. `bind-address` veya `listen_addresses` gibi parametrelerin yapılandırılması gerekir.
Çok fazla etkin bağlantı
İzin verilen maksimum sayıya ulaşıldıysa veritabanı yeni bağlantıları reddedebilir. `max_connections` değerini kontrol edin ve etkin olmayan bağlantıları kapatın.
Adım adım çözüm
- 1
Veritabanı hizmetinin çalışıp çalışmadığını kontrol edin
Windows'ta
services.mscdosyasını açın ve veritabanı hizmetini bulun (ör. MySQL, PostgreSQL). Linux'tasystemctl status mysqlveyasystemctl status postgresqlkomutunu kullanın. Hizmet çalışmıyorsasudo systemctl start mysqlkomutuyla (veya veritabanınıza uygun komutla) başlatın. - 2
Yerel makineden bağlantıyı test edin
Veritabanının çalıştığı makineden komut satırı aracıyla (ör.
mysql -u root -pveyapsql -U postgres) bağlanmayı deneyin. Bu başarılı olursa sorun ağda veya uzak erişimdedir. - 3
Bağlantı bilgilerini kontrol edin
Ana bilgisayar, bağlantı noktası, kullanıcı adı ve parolanın doğru olduğundan emin olun. Uygulamada yapılandırma dosyalarını veya ortam değişkenlerini kontrol edin.
localhostmı yoksa127.0.0.1mi kullandığınıza dikkat edin. - 4
Bağlantı noktasının erişilebilir olup olmadığını kontrol edin
İstemci makineden
telnet <host> <port>veyanc -zv <host> <port>komutunu deneyin. Bağlantı noktası kapalıysa sunucudaki güvenlik duvarını ve ağ kurallarını kontrol edin. Windows'ta PowerShell'deTest-NetConnection -ComputerName <host> -Port <port>komutunu kullanın. - 5
Veritabanını uzak bağlantıları kabul edecek şekilde yapılandırın
Değişiklik yapmadan önce yapılandırma dosyalarının yedeğini alın. MySQL için
my.cnfveyamy.inidosyasındakibind-addressdeğerini uygun arabirimin adresine değiştirin (ör.0.0.0.0yalnızca erişim güvenlik duvarıyla kısıtlanmışsa) ve hizmeti yeniden başlatın; ardından kullanıcının ana bilgisayara göre izinlerini kontrol edin. PostgreSQL içinpostgresql.confdosyasındakilisten_addressesdeğerini değiştirin vepg_hba.confdosyasına uygun bir giriş ekleyin. SQL Server için SQL Server Configuration Manager'da TCP/IP protokolünü etkinleştirin, bağlantı noktasını kontrol edin ve hizmeti yeniden başlatın. - 6
Maksimum bağlantı sayısını kontrol edin
Yönetici olarak veritabanına bağlanın ve mevcut bağlantı sayısı için sorgu çalıştırın (ör. MySQL için
SHOW STATUS LIKE 'Threads_connected';). Maksimuma yakınsamax_connectionsdeğerini artırın veya uygulamayı kullanılmayan bağlantıları kapatacak şekilde optimize edin. - 7
Veritabanı günlüklerini inceleyin
Veritabanı günlükleri (ör. MySQL error log, PostgreSQL log veya sistem journal) genellikle bağlantının reddedilmesinin tam nedenini içerir. Kimlik doğrulama veya ağ sorunlarıyla ilgili hata iletilerini arayın.
- 8
Veritabanını ve uygulamayı yeniden başlatın
Bazen veritabanı hizmetinin ve bağlanan uygulamanın yeniden başlatılması gerekir.
sudo systemctl restart mysqlveya uygun komutu kullanın. Üretimde yeniden başlatmayı kesinti süresine denk gelecek şekilde planlayın. Ardından uygulamayı yeniden başlatın ve hatanın oluşup oluşmadığını kontrol edin.
Hiçbiri yardımcı olmazsa
Yukarıdakilerin tümünü kontrol ettiyseniz ve veritabanı hâlâ bağlantıyı reddediyorsa aşağıdakileri göz önünde bulundurun:
- Veritabanı ve sürücü sürümünü kontrol edin: Uyumsuz sürümler bağlantı hatalarına neden olabilir.
- Başka bir istemciyle test edin: Uygulamadaki sorunu dışlamak için başka bir bilgisayar veya araçla (ör. DBeaver, pgAdmin) deneyin.
- Güvenlik duvarını geçici olarak yalnızca test makinesinde devre dışı bırakın: Bunu asla üretim sunucusunda yapmayın; yapmanız gerekiyorsa kısa süreliğine yapın ve güvenlik duvarını mutlaka yeniden etkinleştirin.
- Belgelere başvurun: Veritabanınızın resmi belgelerine bakın.
- Bir uzmana danışın: Sorun devam ederse daha deneyimli bir meslektaşınıza veya BT desteğine başvurun.
Tekrarlanmaması için
- Veritabanını ve sürücüleri düzenli olarak güncelleyin.
- Güçlü parolalar kullanın ve erişimi gerekli IP adresleriyle sınırlayın.
- Etkin bağlantı sayısını izleyin ve gerektiğinde sınırı artırın.
- Üretime geçmeden önce bağlantıyı geliştirme ortamında test edin.
Ne zaman uzmana başvurmalı
Sunucu altyapısına erişiminiz yoksa veya veritabanı yapılandırmasını nasıl değiştireceğinizden emin değilseniz BT desteğine başvurun. Ayrıca veritabanı üretimdeyse ve kesinti riskini göze alamıyorsanız bunu daha deneyimli yöneticilerin yapması daha iyidir.
Yazılım ve ürün geliştirme · Özel uygulamalar, SaaS ve 4-8 haftada MVPSık sorulan sorular
Veritabanı neden uzak makineden bağlantıyı reddediyor ama yerel olarak çalışıyor?
Büyük olasılıkla veritabanı uzak bağlantıları kabul edecek şekilde yapılandırılmamıştır. `bind-address` (MySQL) veya `listen_addresses` (PostgreSQL) gibi parametreleri ve `pg_hba.conf` veya `mysql.user` tablosundaki izinleri kontrol edin.
Sorunun veritabanında mı yoksa uygulamada mı olduğunu nasıl anlarım?
Uygulamanın çalıştığı makineden komut satırı aracıyla veritabanına bağlanmayı deneyin. Bu başarılı olursa sorun uygulama yapılandırmasındadır. Başarısız olursa sorun veritabanında veya ağdadır.
'Too many connections' hatası ne anlama gelir?
Veritabanı izin verilen maksimum eşzamanlı bağlantı sayısına ulaşmıştır. `max_connections` değerini artırın veya uygulamayı bağlantıları doğru şekilde kapatacak şekilde optimize edin.