
Birden fazla yapılandırılmış sunucuları olan arkadaşların karşılaştığı konulardan biriside kullanılan mysql sunucusuna diğer sunuculardan erişim izni vermektir. Bu konuda yeniyseniz bir süre problemi çözene kadar kafanızı ağrıtabilir, benim öyle olmuştu (bir zamanlar).
Kullandığınız mysql sunucusundaki bir veritabanına başka ip’li yada domainli sunucudan bağlanma yetkisi vermek için aşağıdaki yazacaklarımı uygulayın.
SSH ile mysql sunucusuna bağlanın ve komut satırında aşağıdaki parametreyi çalıştırarak mysql komut alanına girin:
mysql #yada mysql -u root -p
İlk komut işinizi görecektir, ancak görmezse ikinciyi çalıştırın. Eğer şifre isterse mysql şifrenizi girip komut alanına girelim. (Eğer mysql ye özel şifre vermediyseniz, sunucunun root şifresini deneyin)
Komut satırına asagidaki parametreleri sırası ile ekleyip, çalıştırarak enter yapın (her satırı yazıp enter yapın) Satırlardaki alanları kendinize göre düzenlemeyi unutmayın:
GRANT USAGE ON VERITABANI_ADI.* to VERITABANI_ERISIM_YETKISI_OLAN_KULLANICI_ADI@IZIN_VERILECEK_SUNUCU_IP_YADA_SUNUCU_DOMAIN IDENTIFIED BY 'VERITABANI_ERISIM_YETKISI_OLAN_KULLANICI_SIFRESI'; GRANT ALL ON VERITABANI_ADI.* to VERITABANI_ERISIM_YETKISI_OLAN_KULLANICI_ADI@IZIN_VERILECEK_SUNUCU_IP_YADA_SUNUCU_DOMAIN ; flush privileges;
Açıklamaları iyi anlamanız için uzun tuttum, bir örnek ekleyerek aklınızdaki karışıklığı gidereyim :)
GRANT USAGE ON DB_kuaza.* to [email protected] IDENTIFIED BY 'KULLANICI_sifre'; GRANT ALL ON DB_kuaza.* to [email protected]; flush privileges;
* Guncelleme: 03/06/2016
Ayri olarak /etc/my.cnf dosyasinda da bir kac degisiklik yapmak gerekecek.
/etc/my.cnf dosyasini duzenleme uygulamasi ile acin ve icerisindeki ‘skip-networking’ ayarinin basina # isaretini koyun, asagidaki gibi olacak:
#skip-networking
Asagidaki ayarida varsa ekleyin:
symbolic-links=0
Ornek my.cnf dosyasi bu sekilde olmali.
[mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # skip-networking # Instead of skip-networking the default is now to listen only on # localhost which is more compatible and is not less secure. #bind-address = 81.91.111.111 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid
UYARI: ornek ayar dosyasindaki datadir, socket, log-error, pid-file ayari sizin sunucuzda farkli olabilir, eger bunlar hata verirse o ayarlarin basina # isareti koyarak etkisizlestirin.3
Sonrasinda mysql sunucumuza restart atalim ve ayarlari onaylayalim.
service mysqld restart
* Mysql portunu acalim ve belirli IPlere izin verelim:
Belirli iplere izin vererek mysql guvenliginizi artirabilirsiniz. Bunun icin asagidaki sekilde yapilanlari uygulayin.
nano /etc/sysconfig/iptables
COMMIT kelimesinden uste asagidaki kodu ekleyin:
-A INPUT -s 77.48.155.154/32 -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
Bu sekilde bir kullanim ile mysql portu olan :3306 portuna sadece bu ip adresinden istek gelirse cevap verilecek demek oluyor: 77.48.155.154
Dosyayi kapatmak icin ctrl + x, y enter, enter yaptiginizda kaydedip cikacak. Bunun akabinde ayarlarin aktif olmasi ve porton acilmasi icin iptables programina restart atalim.
service iptables restart
Bu işlemlerden sonra yetki verdiğiniz sunucudan artık mysql serveriniza bağlantı yapabileceksiniz, localhost yerine mysql ip adresini kullanmayıda unutmamanız gerek.
Merhabalar,
Bu kullanımda güvenlik durumu ne düzeydedir ? Kötü amaçlı kullanıcılar sunucudaki verilere erişebilir mi ?
Mysql erisimini sadece sizin belirleyeceginiz IP adresine acacagi icin guvenlidir. Yani her IP den mysql erisimi yapilamaz, yasaktir.