Uzak MySQL Veritabanı Bağlantısı

Kullandığım farklı 2 uzak sunucu ve bilgisayarım arasında ortak bir veritabanında bazı derlenmiş veriler tutuyorum. Farklı erişim yöntemleri (programlama dili, uygulama vb.) söz konusu olabilir elbette1.

AA

Veri görselleştirme sürecinde Tableau ve R programlama ile erişim sağlıyorum. Sunucu ve bilgisayarda yer alan kurulumlarda localhost (veya 127.0.0.1) ile kolaylıkla erişim sağlayabildiğiniz veritabanı sunucusu uzak erişimlerde bir takım ayarlamalar gerektirmekte.

Bu yazıda paylaşımlı hosting ve DigitalOcean üzerinden oluşturduğunuz One-click apps > MySQL on Ubuntu veritabanına nasıl uzak erişim sağlayabileceğinizden bahsedeceğim.

MySQL Veritabanı’na Uzak Erişim Sağlamak

UFW (Uncomplicated Firewall) ve Güvenlik Duvarı İşlemleri başlıklı yazıdan da hazırlayabileceğiniz gibi port kontrollerimizi kolaylıkla SSH bağlantısı üzerinden sunucuya erişerek gerçekleştirebilmekteyiz. Port kontrollerimizi gerçekleştirelim.

ufw status

Eğer 3306 numaralı porta erişim izni (ALLOW) tanımlanmamışsa ilgili portu yapılandırmalıyız.

sudo ufw allow 3306/tcp
sudo service ufw restart

DigitalOcean ön tanımlı olarak MySQL kurulumunda 3306/tcp portu üzerinden erişim sunmakta2. Yapılması gereken son işlem ise IP izninin tanımlanması. Bu işlem için MySQL erişimine ihtiyacımız var.

mysql -u [kullanici-adi] -p [şifre]

Erişim sağlandıktan sonra izin işlemini gerçekleştirmeliyiz.

GRANT ALL PRIVILEGES ON [veritabani-adi].* TO [kullanici-adi]@[erisim-saglanacak-cikis-ip-degeri] IDENTIFIED BY '[sifre]';
FLUSH PRIVILEGES;

Şimdiye kadar olan süreç hemen hemen tüm sunucularda benzerlik taşıyacaktır. [erisim-saglanacak-cikis-ip-degeri] farklı bir sunucu ya da bilgisayarınızdan erişim sağlıyorsanız sunucu veya bilgisayarınızın IP adresi olmalı. Bu pratik yöntem dışında SSH Tunnel yöntemini de deneyebilirsiniz. Bu sayede localhost üzerinden çıkış yaparak veritabanı erişimi sağlayabilirsiniz3. Tanımladığınız bu erişimler phpMyAdmin > Kullanıcı Hesapları altında listelenmektedir.

Phpmyadmin remote

MySQL erişimleriyle ilgili kontrolleri ise SHOW GRANTS FOR ile gerçekleştirebilirsiniz4 5.

SHOW GRANTS FOR 'admin'@'localhost';
SHOW GRANTS FOR 'admin'@'[erisim-saglanacak-cikis-ip-degeri]';
Mysql privileges

Paylaşımlı hosting üzerinden erişim tanımlama aşamasında yukarıdaki işlemlere ek olarak phpMyAdmin üzerinden Kullanıcı Hesapları > Yeni > Kullanıcı Hesabı Ekle linkini tıklamanız gerekmekte. Ardından açılacak olan Kullanıcı hesabı ekle sayfasında ilgili alanlara Kullanıcı adı, Anamakine adı, Parola alanlarını doldurmanız gerekmekte. Anamakine adı yine erişim sağlamak istediğiniz (herhangi bir anamakine adı: %) bilgisayar/sunucuya ait IP adresi olmalı.

Mysql remote kullanici

Genel yetkiler alanını ise gerçekleştireceğiniz işlemlere uygun olarak belirlemelisiniz. Tüm yetkilendirmeler için Tümünü işaretle seçimini yapabilirsiniz.