Merhaba arkadaşlar,

Bitirme projem icin uzerinde calışma yuruttuğum Raspberry Pi Zero cihazıma LEMP kurulumunun ayarlarını yaparken MariaDB kurulumu sonrası yerel makine dışında (yani localhost dışında) MariaDB'de tanımladığım kullanıcıma erişim sağlayamıyordum. Bu soruna hakkında araştırma yaparken ne MariaDB'nin rehber belgelerinde ne Raspberry rehberlerinde ne de internetteki bilinen kaynaklarda bu soruna karşı bir cozume denk gelemedim. Bugun sorunla ilgili farklı anahtar kelimelerini ararken bir rehber buldum ve rehberdeki ufak bir bilgi notu sorunun kaynağını anlamama sebep oldu.

İşte sorunu cozme adımlarımız:
Once MariaDB'yi sistemimize aşağıdaki komut kuralım.
sudo apt install mariadb-server -y Ardından MariaDB'nin ilk calıştırma ayarlarını aşağıdaki komut ile calıştırıp cıkan adımları kendinize uyan şekilde tamamlayın.
sudo mariadb-secure-installation MariaDB kurulumumuzu tamamladığımıza gore artık MariaDB yoneticisini calıştırabiliriz.
sudo mariadb

MariaDB'nin konsol istemcisine artık "root" olarak giriş yaptık. Şimdi kendimize yeni bir SQL kullanıcısı oluşturalım. Zira her işimize "root" kullanıcısı ile devam edemeyiz. Aşağıdaki komutu MariaDB'nin istemcisine girelim.
CREATE USER 'kullanici_adi'@'%' IDENTIFIED BY 'kullanici_sifresi';
Artık bu komut ile global erişime sahip "kullanici_adi" adında ve "kullanici_sifresi" şifreli bir kullanıcı hesabı actık. Global erişimi kullanıcı adınından sonra gelen @'%' etiketi ile gostermiş oluyoruz. @ bize burada hangi alan adı aralığında olduğunu tanımlamamıza yarıyor. '%' ise burada joker karakter işlevi goruyor ve gelen her turlu isteği kabul ediyor.

Kullanıcı adını oluşturma işlemini gercekleştirdikten sonra aşağıdaki komut ile yeni tanımladığımız kullanıcıya erişim izni veriyoruz.
UPDATE mysql.user SET grant_priv='Y', super_priv='Y' WHERE User='kullanici_adi'; FLUSH PRIVILEGES; GRANT ALL ON veritabani_adi.tablo_adi TO 'kullanici_adi'@'%';
grant.priv ve super.priv ile ilgili kullanıcıya super kullanıcı yetkisi veriyoruz. Ardından gelen Flush Privileges komutu ile veritabanı yazılımının yetkili kullanıcı tablosunu guncellemesini sağlıyoruz. Grant All on kısmı ile ise belirli veritabanlarına erişim izni veriyoruz. Burada dikkat edilmesi gereken nokta veritabani_adi.tablo_adi kısmıdır. Bu kısımda sadece kullanacağımız veritabanlarında işlem yapmasını sağlayabileceğimiz gibi *.* gibi joker tanımlama ile tum veritabanlarına ve icerilerindeki tablolara veya veritabani_adi.* gibi bir joker tanımlama ile belirlediğimiz veritabanına ait tum tablolara erişim ve kullanım yetkisi vermekteyiz. Tum bu kullanıcı oluşturma, izinleri verme ve erişilebilir veritabanlarını tanımlama işlemlerinden sonra exit yazarak MariaDB arayuzunden cıkış yapabiliriz. Şimdi sırada MariaDB'nin sunucu konfigurasyonunu guncellemek kaldı. Bunun icin aşağıdaki komutu konsola yazıyoruz.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf Onumuze nano metin duzenleyicisi geldikten sonra aşağıdaki gibi bir konfigurasyon dosyası gormemiz gerekli.


Şimdi yapmamız gereken sadece 2 adet satırı duzenlemek.
#port 3306 yazan satırı port 3306 şeklinde duzenliyoruz. bind-address 127.0.0.1 yazan satırı ise bind-address 0.0.0.0 şeklinde duzenliyoruz. Son halinde dosyamız aşağıdaki gibi gozukmeli:


Resimdeki gibi gozukuyorsa eğer dosyamız sırasıyla Ctrl + S ve Ctrl + X kombinasyonlarını kullanıp dosyamızı kaydedelim ve nano'dan cıkış yapalım. Evet, artık geriye kalan tek işlem MariaDB işlemlerini yeniden başlatmak ve sunucumuza bağlanmaya calışmak. Bunun icin aşağıdaki komutları sırasıyla giriyoruz.
sudo systemctl restart mysql.service
sudo systemctl restart mariadb.service
Hizmetleri yeniden başlattığımıza gore son bir kontrol olarak 3306 (varsayılan MySQL/MariaDB veritabanı portunu) kontrol edelim. Bunun icin sudo netstat -anp | grep 3306 komutunu calıştıralım. Bize aşağıdaki gibi bir cıktı vermesi gerekli.
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN işlemin_pid_numarası/mysqld
Son olarak herhangi bir MariaDB destekli veritabanı yonetimi yazılımı ile (ben Navicat'ı tercih ediyorum) ile MariaDB sunucumuzun bilgilerini girip bağlantı testini deneyelim.

Ve gorduğunuz gibi hedefimize ulaştık. Artık veritabanımıza yerel makine (localhost) dışında dışarıdan başka bir cihaz ile bağlanabiliyoruz.

Cozumu bulmama yardımcı olan siteyi de şuraya bırakalım: Configure Remote Access to MySQL / MariaDB Databases | Website for Students