Sme Server Altında MySQL

SME Server da veritabanı olarak MySQL çalışmaktadır. Ayrıca SME Server da kullanılan Horde mail için MySQL veritabanı kullanılmaktadır. Sonradan kuracağınız bir çok program içinde MySQL desteği verebilirsiniz.

 

MySQL root parolası
SME Server altında MySQL root parolasını ayarlamak istediğinizde root parolasının olmadığı söylenebilir fakat bu doğru değildir. Bir konsoldan SME Server da MySQL'e root hakları ile giriş yapabilirsiniz. Bu durumda size bir parola sormayacaktır.

SME Server MySQL parolasını SME Server kurulum sırasında oluşturulan 72 karakterden rastgele düzenler. "MySQL root parolasını asla değiştirmeyin." Bu SME serverınızın hata vermesine neden olabilir. Bu belgede MySQL'e nasıl root olarak bağlanılır ve root olarak MySQL'den nasıl yetki alınır, yeni bir kullanıcı nasıl tanımlanır ve tanımlanan kullanıcılara nasıl yetki verilir konuları anlatılmaktadır.

MySQL'e root kullanıcısı ile giriş
MySQL'e root olarak SME Sunucunuzda giriş yapmak için bir konsoldan "mysql" yazmanız yeterlidir. Bu durumda MySQL de root hakları ile oturum açılacaktır.

MySQL root parolasını sıfırlama
SME Sunucunuzda MySQL root yüklemesi sırasında rastgele oluşturulan bir parola vardır. SME sunucunuzda MySQL'e root hakları ile giriş yapmak için bu parolayı bilmeniz gerekmez. Değiştirilmiş MySQL root parolasını, MySQL'e root olarak giriş yaptıktan sonra sıfırlayabilirsiniz.

SME 7.3 ve daha yeni sürümler için aşağıdakileri yapın.

cd /var/service/mysqld
sv d .
expand-template /root/.my.cnf
expand-template /var/service/mysqld/set.password
/usr/libexec/mysqld --bootstrap --user=mysql --skip-grant-tables < ./set.password
sv u .

7.2 ve daha eski sürümler için ise aşağıdaki komutları verin (burada sv komutu yerine runsvctrl komutunu kullanın)

cd /var/service/mysqld
runsvctrl d .
expand-template /root/.my.cnf
expand-template /var/service/mysqld/set.password
/usr/libexec/mysqld --bootstrap --user=mysql --skip-grant-tables < ./set.password
runsvctrl u .

Silinmiş MySQL root kullanıcısını düzenleme

Not: Aşağıdaki komutlar SME 7.3 ve MySQL 4.1 de uygulanmaktadır

cd /var/service/mysqld
sv d .
echo 'use mysql;'>set.rootuser
echo -n 'INSERT INTO user VALUES("localhost","root","",'>>set.rootuser
echo '"Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","Y","","","","",0,0,0);'>>set.rootuser
expand-template /root/.my.cnf
expand-template /var/service/mysqld/set.password
/usr/libexec/mysqld --bootstrap --user=mysql --skip-grant-tables < set.rootuser
/usr/libexec/mysqld --bootstrap --user=mysql --skip-grant-tables < set.password
sv u .

Yerel ağdan MySQL'e erişim

SME Server güvenlik gereği MySQL bağlantılarını varsayılan olarak localhost'a izin vermektedir.
Eğer yerel ağdan erişime izin vermek isterseniz SME Server üzerinden root hakları ile aşağıdaki komutları vermelisiniz:

config setprop mysqld LocalNetworkingOnly no
expand-template /etc/my.cnf
sv t /service/mysqld

Uzak ağdan MySQL'e erişim

Yukarıda belirtilen ayarlara ek olarak LocalNetworkOnly MySQL veritabanına uzak ağlardan erişim sağlamak için ise aşağıdaki komutları vermelisiniz:

config set mysqld service access public status enabled TCPPort 3306
signal-event remoteaccess-update
signal-event reboot

Böyle bir durumda MySQL'in tüm parolarının güçlü olduğuna emin olun. MySQL veritabaınında herkes için güçlü parolalar oluşturarak güvenliğinizi artırabilirsiniz. Alternatif olarak güvenli bir uzak erişim için VPN bağlantısı oluşturabilirsiniz.

Diğer bilgisayarlar için MySQL kullanıcı(ları)sı oluşturma

SME Serverda varsayılan mysql veritabanı kullanıcısı sadece localhost ile giriş sağlar.

Başka bilgisayarlardan mysql bağlantısı kurarken sadece localhost ile değil başka şekilde de girmek gerekebilir. Örneğin farklı bir kullanıcı veya farklı bir parola ile.

LAN üzerideki farklı bir iş istasyonunda mysql'e giriş

Örneğin yerel ağdaki 192.168.xx.0 bilgisayarından oluşturulan bir kullanıcı ile mysql'e erişebilirsiniz.
Ipucu: Burada IP numarasına dayalı olarak ayrıcalıkları atamak gerekir. Bazı durumlarda dinamik IP adresleri atamak daha sağlam bir çözüm olabilir.

Muhtemelen değiştirilecekler:
Veritabanı adı (MyDb)
Kullanıcı adı (MyUser)
Parola (MyPW) ve
İzin verilen bilgisayar (192.168.xx.%)

## In the command below, \ escapes a linebreak.
## Either include them, or place the entire command on one line
mysql -e "\
create database MyDB; \
GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER \
ON *.* \
TO 'MyUser'@'192.168.xx.%' \
IDENTIFIED BY 'MyPW'; \
FLUSH PRIVILEGES;"

Güvenlik etkileri ve mysql'e uzaktan giriş izni

Teknik olarak yukarıdaki işlemleri yaptığınızda internetten bilgisayarınıza mysql giriş izni verdiğiniz için kötü bir fikir olacaktır. Bunun yerine internnetten mysql'e erişim izni vermeniz gerekiyorsa VPN bağlantısı veya SSH kullanmanız daha sağlıklı olacaktır.

InnoDb motorunu etkinleştirin

InnoDB motorunu etkinleştirmek için aşağıdaki komutları çalıştırın:

db configuration setprop mysqld InnoDB enabled
expand-template /etc/my.cnf
sv t /service/mysqld

Yönetim
MySQL Kullanıcı hesabı yönetimi bölümünde (http://dev.mysql.com/doc/refman/4.1/en/user-account-management.html) veya Manuel MySQL (http://dev.mysql.com/doc/refman/4.1/en/) adreslerinde yönlendirme desteği ve kullanıcı hakları konularında ayrıca bir çok yararlı bilgiye buradan ulaşabilirsiniz.

Yeni bir veritabanı oluşturma
Bir rpm dosyası içinde veritabanını otomatikleştirmek istiyorsanız geliştiriciler kılavuzuna bakın.
Konsol ortamında SME Serverda aşağıdaki komutu vererek bir veritabanı oluşturabilirsiniz.

#mysqladmin create 'resimler' --default-character-set=utf8

Bu komut ile MySQL de "resimler" adında boş bir veritabanı oluşturacaktır.

UYARI: "Root" kullanıcısına localhost dışında veritabanı erişimi için izin verilmemelidir. Her uygulama için bir veritabanı ve bu veritabanına erişmek için kendi kullanıcsı olmalıdır.

MySQL kullanıcısı(ları) oluşturma
MySQL de oluşturacağınız kullanıcılara hangi izinleri vereceğinize önceden karar verin. Manuel MySQL (http://dev.mysql.com/doc/refman/4.1/en/) adresinde bu konuyla ilgili detaylara ulaşabilirsiniz. SME Server da konsol ekranında aşağıdaki komutu vererek MySQL sunucusuna giriş yapın.

#mysql

MySQL'de bulunan veri tabanlarını listelemek

MySQL'e giriş yaptıktan sonra aşağıdaki komutu kullanarak mevcut veritabanlarının bir listesini alabilirsiniz.

mysql> show databases;
+-----------+
| Database  |
+-----------+
| gallery2  |
| horde     |
| joomla    |
| kplaylist |
| mysql     |
| resimler  |
| test      |
| wordpress |
+-----------+
8 rows in set (0.02 sec)

Mysql de kullanıcı oluşturmak

Mysql de kullanıcı oluşturmak için GRANT komutu kullanılır. Kullanıcı yetkileri GRANT opsiyonu ile belirlenir. Genel kullanımı şu şekildedir;

GRANT YETKİLER ON VERİTABANI_ADI TO KULLANICI IDENTIFIED BY İstenen_Şifre;

Örnegin ersan kullanıcısının resimler veritabanı üzerinde select ve insert yetkileri ile Ey+90-12 parolası baglanması için;

mysql> GRANT select,insert ON resimler.* TO ersan@localhost IDENTIFIED BY 'Ey+90-12';
mysql> flush privileges;

MySQL de verilebilecek yetkiler olarak; select,insert,update,delete,create,drop kullanılabilir. Ayrıca bütün yetkiler anlamında olan "ALL" seçeneğide kullanılabilir.

ersan kullanıcısına resimler veritabanı üzerinde "Ey+90-12" yetkisi ile bütün yetkileri vermek icin;

mysql > GRANT ALL ON resimler.* TO ersan@localhost IDENTIFIED BY 'Ey+90-12';
mysql> flush privileges;

ersan@localhost ile ersan kullanıcısının sadece localhosttan yani makine üzerinden bağlanabilmesi sağlandı. Burada makine adi ya da IP adresi belirtilebilir.

ersan kullanıcısına resimler veritabani üzerinde Ey+90-12 parolası ile 192.168.10.166 Ip adresli makineden bütün yetkiler ile bağlanabilmesi için;

mysql > GRANT ALL ON resimler.* TO Bu e-Posta adresi istenmeyen posta engelleyicileri tarafından korunuyor. Görüntülemek için JavaScript etkinleştirilmelidir. IDENTIFIED BY 'Ey+90-12';

Burada makine adıda belirtilebilir. Örneğin aynı yetki ve parola ile mysql.sunucu.net makinesinden bağlanabilmesi için;

mysql > GRANT ALL ON resimler.* TO Bu e-Posta adresi istenmeyen posta engelleyicileri tarafından korunuyor. Görüntülemek için JavaScript etkinleştirilmelidir. IDENTIFIED BY 'Ey+90-12';

komutu kullanilabilir.

Not: Eğer mevcut bir kullanıcıya haklar tanınacaksa "IDENTIFIED BY 'parola'" alanını yazmaya gerek yoktur.

Veritabanını kaldırma

SME Server üzerinde konsol ekrarnında MySQL'den bir veriyi kaldırmak için aşağıdaki komutu vermelisiniz. Örneğimizde oluşturduğumuz "resimler" veritabanını kaldırmak için aşağıdaki komut yeterlidir

mysql > drop database resimler;

Kullanıcı kaldırma

SME Serverda bir konsol ekranında MySQL'e erişip aşağıdaki komutları verin.

USE mysql;
DELETE FROM user WHERE user = 'username';<br /> FLUSH PRIVILEGES;<br /> <br /> Burada silmek istediğiniz kullanıcı adını girin.<br /> <br /> <strong>Kaynaklar</strong><br /> www.enderunix.org<br /> wiki.contribs.org</p>'</p>'