MySQL'e Uzak Bağlantılara Nasıl İzin Verilir

Bir MySQL veritabanıyla(MySQL database) çalışıyorsanız , veritabanınızı güvende tutarken karşılaştığınız zorlukların zaten farkındasınızdır. SQL enjeksiyonlarını kullanan veritabanı korsanlığı girişimlerinden kaba kuvvet saldırılarına kadar, özellikle bir veritabanıyla uzaktan çalışıyorsanız verilerinizi güvende tutmak zordur.

Bir SQL sunucusunu uzak bağlantılara izin verecek şekilde yapılandırmanın yolları vardır, ancak bir (SQL)MySQL sunucusunda uzak bağlantılara izin vermek veritabanınızı bilgisayar korsanları için kolay bir hedef haline getirebileceğinden dikkatli olmanız gerekir . Bir MySQL veritabanına güvenli, uzak bağlantılara izin vermek istiyorsanız, bilmeniz gerekenler burada.

Sen başlamadan önce(Before You Begin)

MySQL veritabanınızda herhangi bir değişiklik yapmadan önce , özellikle bir üretim sunucusunda (aktif kullanımda olan bir sunucu) çalışıyorsanız, veritabanınızı yedeklemeniz(backup your database) önemlidir . Veritabanınızda veya onu barındıran sunucuda yaptığınız herhangi bir değişiklik, bir şeyler ters giderse ciddi veri kaybına neden olabilir.

Ayrıca, sunucunuzun bağlantılarında yapılan değişikliklerin daha sonra ona erişmenizi engelleyebileceğini de görebilirsiniz. Böyle bir durumda, daha fazla destek için bir sunucu yöneticisine danışmanız gerekebilir. Değişikliklerinizi uzaktan denemeden önce çalışıp çalışmadığını kontrol etmek için yerel olarak çalışan bir MySQL sunucusunda herhangi bir değişikliği denemek iyi bir fikirdir .

Uzak bir sunucuda değişiklik yapıyorsanız, bağlanmak ve değişiklik yapmak için güvenli bir yola ihtiyacınız olabilir. SSH (Güvenli Kabuk)(SSH (Secure Shell)) , uzak sunucunuza bağlanmanıza izin verdiği için genellikle bunu yapmanın en iyi yoludur. Raspberry Pi'de barındırılanlar(hosted on a Raspberry Pi) gibi yerel ağınızdaki sunuculara bağlanmak için SSH'yi(SSH) de kullanabilirsiniz .

Bu kılavuz, MySQL'i(MySQL) uzak bağlantılara izin verecek şekilde yapılandırma adımlarında size yol gösterecektir , ancak önce MySQL sunucunuzu barındıran sunucuya doğrudan veya uzaktan erişiminiz olduğundan emin olmanız gerekir .

(Suppose)Sunucunuza SSH(SSH) üzerinden uzaktan erişiminiz olmadığını varsayalım (örneğin). Bu durumda, kök mySQL hesabınız zaten uzak bağlantılara izin vermiyorsa, MySQL veritabanınızı doğrudan uzak bağlantılara izin verecek şekilde yapılandıramazsınız. Dolayısıyla, devam etmeden önce bu bağlantıyı kurmanız gerekecek.

MySQL Yapılandırma Dosyanızı Düzenleme(Editing Your MySQL Configuration File)

MySQL'i(MySQL) uzak bağlantılara izin verecek şekilde yapılandırmanın ilk adımı , MySQL yapılandırma dosyanızı düzenlemektir. Bu aşamada, bu kılavuz, mySQL veritabanınızı barındıran  sunucuya, PC'ye veya Mac'e(Mac) zaten bağlı olduğunuzu ve konsol erişimine sahip olduğunuzu varsayacaktır .

Alternatif olarak, Mac(Mac) veya Linux'ta(Linux) açık bir terminal veya Windows'ta(Windows) bir metin düzenleyici kullanarak yerel bir MySQL sunucusunu yapılandırabilirsiniz .

  1. Başlamak için, MySQL veritabanı dosyanızı düzenlemek için tercih ettiğiniz konsol metin düzenleyicisini kullanın. Linux'ta , nano düzenleyiciyi kullanarak bu dosyayı düzenlemek için bir terminal veya SSH penceresine (SSH)sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf yazın(Linux) ( MySQL veritabanınızın varsayılan konumda olduğu varsayılarak)

  1. Windows kullanıyorsanız(Windows) , Dosya Gezgini'ni açın ve (File Explorer)MySQL kurulumunuzu içeren klasöre erişin (örn. C:/Program Files/MySQL/MySQL Server 8.0 ). Girişi çift tıklatarak varsayılan metin düzenleyicinizi (örn. Not Defteri(Notepad) ) kullanarak my.ini dosyasını açın . Orada değilse, önce dosyayı oluşturun(create the file first) .

  1. Mac'te(Mac) bir terminal penceresi açın ve sudo sudo nano /usr/local/etc/my.cnf yazın . MySQL'i (MySQL)homebrew kullanarak(using homebrew) yüklediyseniz , bu MySQL için varsayılan yapılandırma dosyasıdır .

Yukarıda atıfta bulunulan konumlar, MySQL yapılandırma dosyaları için varsayılan konumlardır. Bu komutlar işe yaramazsa, ilgili dosya yolunu bulmak için ilgili dosyaları ( my.cnf , mysqld.cnf veya my.ini ) manuel olarak aramanız gerekir.(my.ini)

Güvenli Bir Bağlantı Adresi IP Aralığı Ayarlama(Setting a Safe Bind-Address IP Range)

  1. Sunucunuz için MySQL yapılandırma dosyasını açtıktan sonra, dosyanın bind-address bölümüne ulaşmak için klavyenizin ok tuşunu kullanın. Bu IP aralığı, genellikle yalnızca 127.0.0.1(127.0.0.1) kullanan yerel makine veya sunucudan bağlantılara izin verecek şekilde ayarlanan veritabanınıza olan bağlantıları sınırlar .

  1. MySQL veritabanınızı mevcut internet bağlantınızı kullanan cihazlardan bağlantılara izin verecek şekilde yapılandırmak istiyorsanız , önce genel IP adresinizi bulun(find your public IP address) , ardından 127.0.0.1'i(127.0.0.1) bu IP adresiyle değiştirin. Alternatif olarak, bağlantılara izin vermek istediğiniz cihaz veya sunucu için bir IP adresi ile değiştirin.

  1. Bazı durumlarda, bir MySQL(MySQL) veritabanına tüm(all) uzak bağlantılara izin vermek isteyebilirsiniz . Bu aşırı risk(extreme risk) taşır ve bir üretim sunucusunda kullanılmamalıdır. Ancak buna izin vermek istiyorsanız, 127.0.0.1'i (127.0.0.1)0.0.0.0 ile değiştirin .

  1. Temel Ayarlar(Basic Settings) bölümündeki bağlantı noktası(port ) değerini not edin . Bu, bir sonraki bölümde gerekli olacaktır. Görünmüyorsa, 3306 numaralı(3306) bağlantı noktası olan varsayılan değer kullanılacaktır . Yeni bir satıra port = xxxxxxxx'i(xxxx) uygun bir port değeri ile değiştirerek kendi portunuzu ekleyebilirsiniz .

  1. MySQL yapılandırma dosyanızda bağlama adresini(bind-address ) yapılandırdıktan sonra dosyayı kaydedin. Linux kullanıyorsanız , bunu yapmak için Ctrl + O ve Ctrl + X seçin . Mac'te Command + O ve Command + X öğesini seçin . Windows kullanıcıları Dosya(File ) > Kaydet'i(Save) seçerek kaydedebilir .

  1. Ardından, Linux ve Mac kullanıcıları mysql.server stop && mysql.server start veya mysql.server restart yazarak MySQL'i(MySQL) yeniden başlatabilirler . Komutu sudo(using sudo) (örn. sudo mysql.server restart ) kullanarak yükseltmeniz ve mysql.server dosyasına giden uygun yolu (örn. /usr/local/bin/mysql.server ) kullanmanız gerekebilir.

  1.  Yukarıdaki komut işe yaramazsa, bunun yerine sudo service mysql restart'ı(sudo service mysql restart ) deneyin .

  1. MySQL'i(MySQL) Windows'ta yeniden başlatmak için Başlat(Start) menüsüne sağ tıklayıp Windows PowerShell (Yönetici) öğesini(Windows PowerShell (Admin)) seçerek yeni bir PowerShell penceresi açın . PowerShell penceresinde, net stop mysql80 yazıp(net stop mysql80 ) ardından net start mysql80 yazın ve (net start mysql80)mysql80'i(mysql80) bilgisayarınızdaki doğru hizmet adıyla değiştirin .

Windows'ta(Windows) doğru hizmet adından emin değilseniz, bulmak için net start yazın . Yapılandırmanızı yeniden yükleyemiyorsanız, sunucunuzu yeniden başlatın ve bunun yerine MySQL'i(MySQL) (gerekirse) manuel olarak yeniden yükleyin.

Güvenlik Duvarlarınızı Yapılandırma(Configuring Your Firewalls)

Bu aşamada MySQL veritabanınız, (MySQL)MySQL yapılandırma dosyanızda (MySQL)bind-address değeri olarak belirlediğiniz IP adresini kullanan cihazlardan (veya bu değeri 0.0.0.0 olarak ayarlarsanız tüm cihazlardan ) uzak bağlantılara izin vermelidir. Ancak, bağlantılar cihazınız veya ağ güvenlik duvarınız(device or network firewall) tarafından yine de engellenecektir .

Çoğu sunucu ve bilgisayar, belirli bir bağlantı noktasına erişim izni verilmediği sürece bağlantıları engellemek için bir güvenlik duvarı kullanır. Bunu yapılandırma adımları, MySQL'i(MySQL) Windows'ta mı yoksa Linux'ta mı (Linux)çalıştırdığınıza(Windows) bağlı olarak değişecektir . Mac güvenlik duvarları varsayılan olarak devre dışıdır, bu nedenle burada ek adımları tamamlamanız gerekmez.

Linux Güvenlik Duvarlarını Yapılandırın(Configure Linux Firewalls)

Birçok Linux sunucusu , varsayılan güvenlik duvarı yardımcı programı olarak iptables kullanır. (iptables)Aşağıdaki adımları takip ederek yapılandırabilirsiniz.

  1. Bir terminal veya SSH bağlantısı açın ve sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT yazın(sudo iptables -A INPUT -p tcp -s X.X.X.X –dport YYYY -j ACCEPT) . XXXX'i MySQL bağlantılarına izin vermek istediğiniz aygıtın IP adresiyle değiştirin(YYYY ) ve YYYY'yi (X.X.X.X)MySQL yapılandırma dosyanızdaki eşleşen bağlantı (MySQL)noktası(from) değeriyle değiştirin (örn. 3306 ).

  1. Bu, güvenlik duvarını geçici olarak yapılandıracaktır. Debian veya Ubuntu tabanlı bir Linux sunucusu kullanıyorsanız, terminal veya SSH penceresine sudo netfilter-persistent save ve sudo netfilter-persistent reload yazarak bu değişikliği kalıcı hale getirin .

iptables Linux(Linux) dağıtımınız için varsayılan güvenlik duvarı aracı değilse, daha fazla bilgi için dağıtımınızın kullanım kılavuzuna başvurmanız gerekir. Belirli paketler (örneğin netfilter-persistent ) kullanılamıyorsa, yüklemek için dağıtımınızın yazılım havuzu aracını kullanın (örn. sudo apt install netfilter-persistent ).

Windows Güvenlik Duvarlarını Yapılandırın(Configure Windows Firewalls)

Veritabanınızı barındırmak için bir Windows PC veya sunucu kullanıyorsanız, aşağıdaki adımları kullanarak güvenlik duvarınızı yapılandırabilirsiniz:

  1. (Right-click)Başlat(Start) menüsüne sağ tıklayın ve Çalıştır'ı(Run) seçin .

  1. Çalıştır(Run) kutusuna wf.msc yazın(wf.msc) ve Tamam'ı seçin(OK) .

  1. Windows Defender penceresinde Gelen Kuralları(Inbound Rules ) > Yeni Kural(New Rule) öğesini seçin .

  1. Yeni Gelen Kural Sihirbazı(New Inbound Rule Wizard) penceresinde, Bağlantı Noktası(Port ) > İleri(Next) öğesini seçin .

  1. Sonraki menüde, seçeneklerden TCP'yi(TCP) seçin , 3306 yazın (veya (3306 )MySQL yapılandırma dosyanızda hangi bağlantı noktası değeri listeleniyorsa ), ardından İleri'yi(Next) seçin .

  1. Eylem(Action) menüsünde , varsayılan seçeneği Bağlantıya izin ver etkin olarak bırakın, ardından (Allow the connection)İleri'yi(Next) seçin .

  1. Kuralın tüm ağ türlerine uygulanmasını istediğinizi onaylayın ve ardından İleri'yi seçin(Next)

  1. Sağlanan bağlantı noktasına kural için açıklayıcı bir ad (örn. MySQL ) yazın, ardından güvenlik duvarı kuralları listenize eklemek için Son'u seçin.(Finish)

Bağlanmakta sorun yaşıyorsanız , aynı ayrıntıları (bağlantı noktası 3306, vb.) kullanarak güvenlik duvarı ayarlarınızda yeni bir giden kuralı(outbound rule ) oluşturduğunuzdan emin olarak yukarıdaki adımları tekrarlayın . Veritabanınıza gelen ve giden bağlantılara izin vermek  için gerekli engellenen bağlantı noktalarını açmak(open the necessary blocked ports) için yerel ağ yönlendiricinizi de yapılandırmanız gerekebilir .

MySQL Kullanarak Uzak Bir Sunucuya Bağlanma(Connecting to a Remote Server Using MySQL)

MySQL veritabanınızı uzak bağlantılara izin verecek şekilde yapılandırdıktan sonra , onunla gerçekten bir bağlantı kurmanız gerekir. Bunu, bir terminalden veya PowerShell penceresinden mysql komutunu ( Windows'ta mysql.exe ) kullanarak (mysql.exe )yapabilirsiniz .(Windows)

Windows kullanıyorsanız , başlamadan önce MySQL'in yerel olarak yüklendiğinden(MySQL is installed locally) emin olmanız gerekir . Mac kullanıcıları MySQL'i(MySQL) terminalden homebrew kullanarak kurabilir ( (using homebrew)brew install mysql ), Linux kullanıcıları ise gerekli paketleri kurmak için yerel uygulama havuzlarını (örn. sudo apt install mysql ) kullanabilirler.(sudo apt install mysql)

Linux veya Mac üzerinde MySQL'e bağlanma(Connecting to MySQL on Linux or Mac)

  1. Uzak MySQL sunucunuza Mac veya Linux'ta(Linux) bağlanmak için yeni bir terminal penceresi açın ve mysql -u username -h XXXX:XXXX -p yazın . XXXX:(X.X.X.X:XXXX ) XXXX'i uzak sunucu IP adresiniz ve bağlantı noktası numaranızla (örn. 100.200.100.200:3306 ) ve kullanıcı adınızı(username) MySQL kullanıcı adınızla değiştirin.

  1. İstendiğinde, şifrenizi onaylayın. Bağlantı başarılı olursa, terminalde bir başarı mesajı görünecektir.

Windows'ta MySQL'e bağlanma(Connecting to MySQL on Windows)

  1. Windows'ta uzak bir (Windows)MySQL sunucusuna bağlanmak için Başlat(Start) menüsüne sağ tıklayıp Windows PowerShell (Yönetici) öğesini(Windows PowerShell (Admin)) seçerek yeni bir PowerShell penceresi açın .

  1. Yeni PowerShell penceresinde, doğru klasöre girmek için cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ ” yazın, bu dizini PC'nizdeki doğru kurulum dizini ile değiştirin. Örneğin, MySQL sürümünüz 8.0.1 ise, bunun yerine MySQL Workbench 8.0.1 klasörünü kullanın.

  1. Buradan, .\mysql.exe -u username -h X.X.X.X:XXXX -p yazın . XXXX:(X.X.X.X:XXXX ) XXXX'i uzak sunucu IP adresiniz ve bağlantı noktası numaranızla (örn. 100.200.100.200:3306 ) ve kullanıcı(username) adını uzaktan erişime izin veren bir MySQL kullanıcı adıyla ( (MySQL)root gibi ) değiştirin. Herhangi bir ek ekran talimatlarını izleyin .(Follow)
  2. Oturum açma işlemini tamamlamak ve MySQL(MySQL) veritabanınıza uzaktan erişmek için sorulduğunda şifrenizi girin .

Bu işe yaramazsa, bu adımları ve -h localhost argümanını kullanarak SSH kullanarak (veya doğrudan erişerek) (SSH)MySQL sunucunuzu barındıran sunucuya veya PC'ye bağlanın. Ardından aşağıdaki adımları takip ederek uygun bir kullanıcı hesabı oluşturabilirsiniz.

MySQL Veritabanına Uzak Kullanıcı Erişimine İzin Verme(Allowing Remote User Access to a MySQL Database)

Bu noktada, sunucunuzun kök kullanıcı hesabını veya yükseltilmiş ayrıcalıklara sahip başka bir kullanıcı hesabını kullanarak MySQL sunucunuza uzaktan bağlanabilmelisiniz . Bu erişim düzeyi güvenli olmadığından, MySQL veritabanınıza erişmek için daha kısıtlı bir hesap oluşturmayı tercih edebilirsiniz.

Bu hesap, MySQL(MySQL) sunucunuza sınırlı erişime sahip olacak ve yalnızca seçili veritabanlarıyla etkileşime girmesine izin verecektir. Diğer veritabanı verilerine erişme, yeni kullanıcı hesapları oluşturma vb. gibi daha ciddi değişiklikler yapamayacak. 

MySQL sunucunuzda uzaktan oturum açma yeteneğine sahip olmanız gerekir . Kök hesabınızı uzaktan kullanamıyorsanız, uzak bir SSH bağlantısı aracılığıyla (SSH)mysql komutunu kullanarak veya sunucuyu barındıran PC veya sunucuya doğrudan erişerek sunucunuzun kabuğuna erişmeniz gerekir.

  1. Uzak MySQL kabuğunuzda ( mysql aracını kullanarak), CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; ve Enter'ı(Enter) seçin . Kullanıcı adını oluşturmak istediğiniz kullanıcı adıyla, xxxx'i(x.x.x.x ) bağlanmak istediğiniz IP adresiyle ve parolayı(username ) uygun bir parolayla değiştirin(password) .

  1. Yeni hesabınıza gerekli izinleri vermeniz gerekecek. Bunu yapmak için GRANT ALL ON databasename.* TO username@”x.x.x.x”; ve veritabanı adını, kullanıcı adını(databasename, username, ) ve xxxx'i(x.x.x.x )  doğru ayrıntılarla değiştirin. İsterseniz, tüm veritabanlarına erişim izni vermek için  veritabanı adını (databasename)* ile değiştirin.

Erişim izni verildiğinde, yeni hesabınızı kullanarak sunucunuza uzaktan bağlanmak için yukarıdaki bölümdeki adımları kullanın (örn. mysql -u username -h XXXX:XXXX -p ).

Veritabanı Verilerinizin Güvenliğini Sağlama(Securing Your Database Data)

İster MySQL ister başka tür bir SQL veritabanı ile çalışıyor olun, veri güvenliğinizi korumak için bağlantılarınızı güvende tutmanız önemlidir. Bunu yapmanın iyi bir yolu , eski (ve kolayca tahmin edilebilir) parolalara güvenmek yerine sunucunuza uzaktan erişim için SSH anahtarları oluşturmaktır .(generate SSH keys for remote access)

Veri kaybından endişe ediyorsanız , veritabanınızı çevrimiçi ortamda kolayca yedekleyebilirsiniz . (back up your database)Çoğu veri tabanı Linux(Linux) sunucuları kullanılarak çalıştırılır ; bir Linux dosya yedeklemesini kolayca otomatikleştirebilirsiniz(automate a Linux file backup easily) . MySQL'i (MySQL)Windows üzerinde çalıştırıyorsanız , Windows için benzer bir otomatik yedekleme sistemi(automatic backup system for Windows) kurarak acil bir durumda verilerinizi geri yüklemenizi sağlayabilirsiniz.



About the author

Excel ve PowerPoint dahil olmak üzere Microsoft Office yazılımlarıyla çalışma deneyimine sahip bir bilgisayar uzmanıyım. Ayrıca Google'a ait bir tarayıcı olan Chrome ile de deneyimim var. Becerilerim arasında mükemmel yazılı ve sözlü iletişim, problem çözme ve eleştirel düşünme yer alır.



Related posts