Hoşgeldin, ziyaretçi [ Hesap Oluştur | Giriş YapRSS Feed  | 

MySQL Çalışma Modu – strict mode

| MySQL | Eylül 3, 2013

PHP 5 ve MySQL 5.x sonrası bu hata mesajını çok sık alabilirsiniz “doesn’t have a default value“. Bunun anlamı sunucunuz titiz modda yanni strict modd çalışıyor olabilir. MySQL server veri girdilerinde çok hassas davranır ve belirsizlik durumlarında “NULL” gibi hata mesajı döndürür ve kullanıcıyı uyarır. Aynı zamanda güvenlik düzeyi hat safhadadır. Elbette iyi yapılandırılmış bir veritabanı çok verimli çalışır ama sistemi yeni güncellediniz ve çok veritabanınız varsa bu modu devre dışı bırakmanız gerekebilir. En azından tüm veritabanı sorunlarını giderene kadar.

Konunun devamı »

Share

Görüntülenmedi

MySQL veritabanı oluşturma ve kullanıcı ekleme

| MySQL | Nisan 6, 2011

MySQL komut satırından veritabanı oluşturma ve veritabanına kullanıcı tanımlama işlemi. Normalde elle oluşturulan bir veritabanı bir script tarafından normal kullanıcı yetkileriyle kullanılmak için hazır değildir.

Konunun devamı »

Share

Görüntülenmedi

MySQL Tüm veritabanları tek seferde yedekle

| MySQL | Mart 29, 2011

Host veya benzeri bir şeyler yapıyorsanız tüm veritabalarını hızlı bir şekilde ve tek seferde yapabilirsiniz. Aslında bunu yapan mysqldump aracının –all-databases parametresi.

Konunun devamı »

Share

Görüntülenmedi

MySQL Tablo oluşturma

| MySQL | Ağustos 2, 2008

PHP ile MySQL üzerinde tablo oluşturma örneği;

@mysql_connect("localhost","root","pass") or die ("bağlanılamadı");

//tablo oluştur

mysql_select_db("yeni_veritabani") || die ("veritabani seçilemedi")
$table="create table deneme" (
adi char (10) NULL,
soyadi char (10) NULL
)";

if (mysql_query($table)) {
echo "table oluşturuldu";
else
{
echo "table oluşturalamadı";
}
Share

Görüntülenmedi

Birden fazla mySQL tablodan aynı sorgu ile veri çekme

| MySQL | Ekim 10, 2007

Ortak alanları olan yani birbiriyle bağlı alanlardan veri çekme pek çok kişinin önelikli sorunu olmuştur.

Ufak bir örnekle iki veya daha fazla tabloadan veri çekebileceğimi göstermek istiyorum.

1. Önce MySQL suncuya bağlanıyoruz.
mysql_connect("localhost","user","pass") or die ("MySQL bağlantı hatası");

2. İşlem yapabileceğimiz db’mizi seçiyoruz.
mysql_select_db("database") or die ("MySQL DB Seçilemedi");

3. olarak sorgu nasıl olacak diye merak ediyorsunuzdur!
$sql=mysql_query("SELECT tablo1.isim, tablo2.mail, tablo3.adres
FROM tablo1, tablo2, tablo3
WHERE tablo1.id=tablo2.id AND tablo1.id=tablo3.id");

Sorguda görüldüğü gibi tabloların hepsinde id alanı var ve kullanıcı bilgisinin ID numarası bu alanlarda saklanıyor. Örnek tablo1’den isim, tablo2’den mail ve tablo3’den adres bilgisini tek seferde çekebiliyoruz.

Tek satır halinde çektiğimiz bilgileri ekrana basabiliriz;
while($data = mysql_fetch_array($sql)){
echo "$data[0] - $data[1] - $data[2]
";
}

Görüldüğü gibi çok kolay, aynı şekilde update, delete, ve insert işlemleri de benzer yöntemle yapılabilir.

Bir değil tam 3 tablodan veri çekmeyi öğrenmiş olduk. 🙂

Share

Görüntülenmedi

Unutulan MySQL şifresini değiştirmek

| MySQL | Ağustos 21, 2007

Bazı durumlarda MySQL root şifresini unutmuş olabiliriz. Unutulan şifrenin yerine yenisini belirlemek için bir kaç adımlık iş var.

MySQL’i tamamen durdurun ve varsa ilgili süreçleri öldürün
killall mysql veya killall mysqld

Başka çalışan MySQL süreçi var mı kontrol etmek için;
ps ax | grep mysql

Daha sonra bu işlemleri adım adım uygulayın;
/usr/bin/mysqld_safe –skip-grant-tables &
mysql -h localhost
use mysql
update user set password = password(‘yenisifre’) where user = ‘root’ and host=’localhost’;
quit

Son olarak MySQL’i restart ettiğinizde yeni şifrenizi deneyebilirsiniz.
mysql -u root -p yenisifre

hepsi bu kadar.

Share

Görüntülenmedi

MySQL ve yedekleme teknikleri

| MySQL | Şubat 12, 2007

MySQL Yedekleme Teknikleri

YEREL:
Yedekle:
mysqldump -u user -p password database > yedek_database.sql

Sıkıştırılmış olarak Yedekle:
mysqldump -u user -p password database | gzip > yedek_database.sql.gz

Geri yükle:
mysql -u user -p password database < yedek_database.sql

INTERNET ÜZERİNDEN:

Yedekle:
mysqldump -u user -h HOST -p –opt database > yedek_database.sql

Sıkıştırarak yedekle:
mysqldump -u user -h HOST -p –opt database | gzip > yedek_database.sql.gz

Geri yükle:
mysql -u user -h HOST dbname -p < dbname.sql

Sıkıştırılmış dosyayı geri yükle:
cat dbname.sql.gz | gunzip | mysql -u user -h HOST dbname

Mysql’de bulunan bütün db’leri tek komutla yedeklemek için şu komutu kullanın;

mysqdump -uuser -ppass -A > all_db_yedek.sql

MySQL yedekleme önemli bir konu olduğu için bir kaç ekleme daha yapmakta fayda vardır diye düşünüyorum.

Diyelimki MySQL db’niz var ve bu db ‘nin boyu çok büyük, bilgilerinizin tamamını değilde sadece çok kullanılan önemli bir tabloyu yedeklemek istiyoruz.

Sadece belirtilen tabloyu yedeklemek için;
mysqldump -uroot -p database tablo > tabloadi.sql

Tabloyu sıkıştırarak almak için eklememiz gerek parametse gzip;
mysqldump -uroot -p database tablo | gzip > tabloadi.sql
Durumdan da anlaşılacağı gibi gzip programının sisteminize yüklü olması gerekiyor.

Daha başka yöntemlerde var, mesela her seferinde tabloların almaya gerek olmayabilir, yani sadece verileri indirmek yeterli olacaktır. O zaman eklememiz gereke parametre –no-create-info
mysqldump -uroot -p –no-create-info database tablo > tabloadi.sql

Peki sadece tabloları boş olarak indirmek istersen o zaman stringimiz şu şekilde olacaktır;
mysqldump -uroot -p –no-data database tablo > tabloadi.sql l
Daha da çok işinize yarayacak bir yöntemi kullanabiliriz. Diyelim ki db’nize her gün yüzlerce kayıt giriyor ve db’niz günden güne büyüyor. DB’yi her gün yedeklemek çok olacaktır ve gereksiz bir sürü bw harçanmasına neden olacaktır.

Benimde kullandığım bir yöntemle onunda üstesinden gelmem mümkün. DB’yi bir kere indirdikten sonra sadece eklenen verileri indirmeye ne dersiniz. Değil mi çok mantıklı sadece yeni eklenen verileri indirmek ciddi bir zaman ve bw ekonomisi sağlayacaktır.

Verilerinizi girerken her db’de mutlaka verilerin kayıt olduğu tarihte db’ye girilmektedir. O zaman sadece o gün girilen verileri yedekleyelim;

Yedekleme yapmadan önce verilerin zaman bilgilerinin nasıl girildiğini bilmekte fayda vardır.
mysqldump -uroot -p db tablo –where zaman=’20-10-2006′ > gunlikveri.sql

Buradaki zaman db’deki zaman bilgisinin saklandığı hücrenin adıdır.

Verileri net üzerinden yedekliyorsanız -h sunucu parametresini eklemeniz gerektiğini yukarıda belirtmiştik.

MySQL yedekleme teknikleri daha ayrıntılı bilgilerini vermeye devam edeceğim.

Share

Görüntülenmedi