mySQL, Dump veri girişinde hata, Error 1044, Lock Tables
Bugün sabah sularında irc’de (irc.freenode.net) bir kişiye yardım etmeye çalışırken öğrendiğim bir durum.
mysqldump aracısı kullanarak veritabanınızı yedeklediniz. Ancak verileri komut satırından veya phpmyadmin ile yüklemeye çalışırken şöyle bir hata alıyorsunuz :
#1044 - Access denied for user: 'kullanici_adi@localhost' to database 'veritabanim'
Oysaki siz o veritabanında tablo yaratabiliyorsunuz. İlginç değil mi?
Biraz araştırmadan dump dosyasında hata veren satırın şöyle olabileceğini bulduk :
/*!40000 ALTER TABLE `benim_tablom` DISABLE KEYS */;
LOCK TABLES `benim_tablom` WRITE;
Biraz araştırma yaptıktan sonra mySQL manual’da bir parça buldum.
As of MySQL 4.0.2, to use LOCK TABLES you must have the LOCK TABLES privilege and a SELECT privilege for the involved tables. In MySQL 3.23, you must have SELECT, INSERT, DELETE, and UPDATE privileges for the tables.
Türkçe olarak diyor ki;
mySQL 4.0.2′den itibaren LOCK TABLES kullanmak için kullanıcının LOCK TABLES yetkisine sahip olması ve o tablo için SELECT yetkisine sahip olması gerekir. mySQL 3.23′te ise bahsedilen tablolar için SELECT, INSERT, DELETE, UPDATE yetkisine sahip olunması gerekir.
Örnek olay şöyle olabilir : mysqldump ile verilerinizi yedeklemişsinizdir. Sonra yeni bir sunucuya taşınmışsınızdır. Bu sunucuda phpmyadmin ya da komut satırından dump dosyasını yüklemek istiyorsunuzdur. Ama sürekli 1044 Access denied hatası alıyorsunuzdur.
Bunun sebebi şu olabilir : mySQL sunucunuz 4.x sürümüdür ve size hesabı açan admin LOCK TABLES yetkisini kullanıcı adınıza vermemiştir. Haliyle siz dump dosyasını yüklemek istediğinizde access denied (erişim engellendi) hatası alıyorsunuzudur. Çünkü lock tables yetkisi olan bir kullanıcı değilsiniz.
Çözümü basit : Dump dosyasından LOCK TABLES satırlarını tümden silin.
Zaten mySQL 3.23.xx’deki mysql veritabanındaki user tablo yapısına baktığınızda tablo da lock tables ile alakalı bir kolon olmadığını, ama 4.x’teki aynı tablo’da böyle bir yapı olduğunu, sadece kullanıcıya INSERT, DELETE, UPDATE, SELECT yetkisi vermenin yetmeyeceğini görebilirsiniz.
Yazdır
| 170 Görüntülenme | Kategori: Veritabanları & SQL |
Geri İzleme
Etiketler: mysqldump, mysql, yedeklemeBenzer Yazılar
Yorum Yap
XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>

14 Ocak 2006 |



Henüz yorum yapılmamış.