Blog

Centos Mysql Kurulumu ve Ayarları

Merhaba, bu makalemizde Centos sunucumuza mysql veritabanı sunucusunu nasıl kurup aktif edebileceğimizi anlatacağız. Bazı büyük projelerimde farklı bir linux vds’e mysql kurarak remote olarak açılmak daha güvenli ve performanslı olduğu için sizlerede anlatmak istedim.

Öncelikle elinizde yeni kurulmuş bir Linux Centos vds olduğunu kabul ediyorum.

Mysql Kurulumu

Aslındak kurulumu oldukça kolay. Tek yapmanız gereken komut satırına aşağıdak kodu yazmak.

1sudo yum install mysql-server

SSH’de “Complete!” yazısını gördüyseniz Mysql sunucumuz başarıyla kurulmuş demektir. Şimdi Mysql sunucumuzu başlatacağız.

1service mysqld start

Başlatırken bazı uyarılar ve hatalar göreceksiniz. Bunlar kullanıcının olmadığını v.s söyleyen hatalarımızdır. Hepsini halledeceğiz.

Şimdi genel güvenlik ayarlarımızı yapmak için aşağıdaki kodumuzu komut satırına giriyoruz.

1sudo /usr/bin/mysql_secure_installation

Burada bazı sorular ile karşılaşacağız. Bunları tek tek anlatalım.

  1. Enter current password for root (enter for none) – Burada mysql root şifrenizi soruyor. Biz herhangi bir şifre belirlemedik. Direkt entere basarak geçiyoruz.
  2. Set root password? [Y/n] – Root şifresi oluşturmak istiyormuyuz diye soruyor. Evet oluştursak iyi olur. Kendinize göre bir root şifresi oluşturun ancak unutmayın!
  3. Remove anonymous users? [Y/n] – Anonim kullanıcıları silelim mi? diye soruyor. Direkt entere basarak “Yes” demiş oluyorsunuz. Entere basarak kabul edelim ve anonim kullanıcıları silelim.
  4. Disallow root login remotely? [Y/n] – Root kullanıcısının uzakdan bağlantı kurmasını deaktif edelim mi? diye soruyor. Yine entere basarak kabul edelim. Root kullanıcısı ile uzakdan bağlanılamasın. Uzakdan bağlanmak için farklı bir kullanıcı oluşturacağız. Root her zaman tehlikelidir!
  5. Remove test database and access to it? [Y/n] – Test veritabanlarını ve bunların yetkilerini silelim mi? diye soruyor. Yine enter ile devam ediniz. Test veritabanlarını silip, yetkilerinide alalım.
  6. Reload privilege tables now? [Y/n] – Kalan tabloların yetkilerini yeri yükleyelim mi? diye soruyor. Enter tuşuna basarak kabul ediyoruz.

Buradan sonra karşınıza şöyle bir yazı gelecek;

1234All done! If you’ve completed all of the above steps, your MySQLinstallation should now be secure.Thanks for using MySQL!

Tebrikler Mysql’i kurdunuz ve başarıyla ayarlarını yaptınız.

Son olarak sunucumuz her yeniden başlatıldığında Mysql’in otomatik başlaması için aşağıdaki kodu komut satırına giriyoruz;

1chkconfig mysqld on

Evet artık bütün işlerimiz bitti. Mysql sunucunuzu kullanabilirsiniz. Ancak yeni bir kullanıcı ve şifre oluşturmanız gerekiyor ki remote (uzakdan) bağlanarak işlemlerinizi yapabilesiniz.

Eğer IPTables açık ise 3306 portunu engelleyeceğinden dolayı mysql sunucunuza ulaşamayabilirsiniz. Bunun için 2 adet yöntem var.

  1. (Önerilir) Aşağıdaki kodları kullanarak IPTables’a 3306 için kural ekleyebilirsiniz.
    12-I INPUT -p tcp –dport 3306 -m state –state NEW,ESTABLISHED -j ACCEPT-I OUTPUT -p tcp –sport 3306 -m state –state ESTABLISHED -j ACCEPT
  2. (Önerilmez) IPTablesı kökten kapatıp tüm portlara izin verebilirsiniz.
    (İkinci satırda bulunan sunucu resetlendiğinde otomatik olarak iptablesin kapalı gelmesi içindir)12service iptables stopchkconfig iptables off 

Mysql Kullanıcı Oluşturmak

Evet tüm ayarlarımız tamam ve kullanıcı oluşturmaya geldik. Öncelikle SSH’den mysql’e girmek için aşağıdaki komutu kullanıyoruz.

1mysql -p

Burada sizden şifrenizi isteyecek. Kurulum aşamasında belirlediğimiz şifreyi giriyoruz. Karşınıza aşağıdaki gibi bir ekran geldiyse doğru yoldasınız demektir.

Şimdi kayıtlı olan kullanıcılara bir göz atalım. Aşağıdaki komutu yazıyoruz;

1SELECT User, Host, Password FROM mysql.user;

Ve aşağıdaki gibi bir tablo görmeniz gerekiyor. Kullanıcı isimleri, yetki alanları ve şifreleri (Encrypted şekilde) görülebiliyor.

123456+——+———–+——————————————-+| User | Host      | Password                                  |+——+———–+——————————————-+| root | localhost | *C11FAAF646723B6492                       || root | 127.0.0.1 | *C11FAAF646723B6492                       |+——+———–+——————————————-+

Şimdi bizim istediğimiz bir veritabanı oluşturarak ona kullanıcı tanımlayarak uzakdan erişmek istiyoruz. Öncelikle varolan veritabanlarına bir bakalım;

1SHOW DATABASES;
123456+——————–+| Database           |+——————–+| information_schema || mysql              |+——————–+

Sadece 2 adet veritabanım var. Üstte gördüğümüz gibide sadece root kullanıcımız var. Şimdi öncelikle bir adet veritabanı oluşturalım.

1CREATE DATABASE dnsadresi_db;

Şöyle bir ekran gelmeli;

1Query OK, 1 row affected (0.01 sec)

Veritabanımızı oluşturduk. Şimdi tekrar veritabanlarımızın listesine bakalım;

12345678mysql> SHOW DATABASES;+——————–+| Database           |+——————–+| information_schema || dnsadresi_db      || mysql              |+——————–+

Evet gördüğünüz gibi dnsadresi_db burda yerini almış. Şimdi kullanıcı oluşturmamız gerekiyor. Hadi oluşturalım;

1CREATE USER ‘ciaksoy’@’localhost’ IDENTIFIED BY ‘ciaksoySIFRE’;

ciaksoy adından bir kullanıcı oluşturduk ve şifresinide ciaksoySIFRE koyduk.

Kullanıcılara tekrar göz gezdirirsek son durum şu şekilde olacak;

12345678mysql> SELECT User, Host, Password FROM mysql.user;+———+———–+——————————————-+| User    | Host      | Password                                  |+———+———–+——————————————-+| root    | localhost | *C11FAAF646723B6492                       || root    | 127.0.0.1 | *C11FAAF646723B6492                       || ciaksoy | localhost | *48FB56B5A57A7B4FFE                       |+———+———–+——————————————-+

Şimdi tek yapmamız gereken “ciaksoy” kullanıcımıza “dnsadresi_db” veritabanı üstünde yetki vermek.

1GRANT ALL PRIVILEGES ON dnsadresi_db.* to ciaksoy@localhost;

Herşey tamam şimdi yetkilerin aktif olması için yetkileri yeniden düzenlememiz gerekiyor.

1FLUSH PRIVILEGES;

Şimdi yetkilerimize bakalım;

1SHOW GRANTS FOR ‘ciaksoy’@’localhost’;

Şöyle bir tablo olması gerekiyor;

123456+—————————————————————————————————————-+| Grants for ciaksoy@localhost                                                                                   |+—————————————————————————————————————-+| GRANT USAGE ON *.* TO ‘ciaksoy’@’localhost’ IDENTIFIED BY PASSWORD ‘*48FB56B5A57A7B4FFE3’                      || GRANT ALL PRIVILEGES ON `dnsadresi_db`.* TO ‘ciaksoy’@’localhost’                                             |+—————————————————————————————————————-+

Evet artık “ciaksoy” kullanıcısı “dnsadresi_db” veritabanında yetkiye sahip.

Ancak hala uzakdan erişemezsiniz. Sadece bu kullanıcı ile localde o veritabanına müdahale edebilirsiniz. Bunun için yetkileri biraz daha genişletiyoruz.

12GRANT ALL PRIVILEGES ON dnsadresi_db.* TO ‘ciii’@’%’ IDENTIFIED BY ‘SIFRE’ WITH GRANT OPTION;FLUSH PRIVILEGES;

Bu komut ile “ciii” kullanıcısına herhangi bir IP’den (%) “SIFRE” şifresi ile “dnsadresi_db” veritabanına ulaşabileceğini söyledik. Artık uzakdan bağlantı kurarak istediğiniz gibi yönetebilirsiniz.

No Comments

Cevapla

Tüm sorularınız için bize yazabilirsiniz.

İLETİŞİM BİLGİLERİ



Sektör ile ilgili tüm sorularınız için bizim ile iletişime geçebilirsiniz.

Telefon:

+90 850 307 0 736
+90 532 433 0 736

WhatsApp:

+90 850 346 4 736

Merkez Adres:

Barbaros Mahallesi Ihlamur Bulvarı Ağaoğlu My Newwork No:3
Ataşehir/İstanbul – Türkiye

Anadolu Temsilciliği:

Gaziosmanpaşa Üniversitesi Teknopark Yerleşkesi K:2
Merkez/Tokat – Türkiye