Benim MySQL root kullanıcı sorunu teşhis edemez

4 Cevap php

Ben MySQL kurulumunda MySQL root kullanıcısı ile ilgili bir sorun var ve ben sadece bana yaşam için bunu düzeltmek için nasıl çalışmak olamaz. Ben bir şekilde kök kullanıcıyı berbat gibi görünüyor, ve veritabanları benim erişim artık çok düzensiz.

Başvuru için, ben MySQL sunucu sağlamak için OS X üzerine mAmp kullanıyorum. Ben bu olsa konularda ne kadar emin değilim - Ben ne yaptım bunu çözmek için bir komut satırı düzeltmeyi gerektiren olacağını tahmin ediyorum.

Ben her zamanki gibi mAmp kullanarak MySQL başlar, ve benim PHP uygulamaları için yarattık 'standart' kullanıcıları kullanarak erişim veritabanları olabilir. Ancak, benim MySQL GUI istemci ve ayrıca phpMyAdmin kullanmak kök kullanıcı, sadece elle oluşturduğunuz "information_schema" veritabanı yanı sıra, iki erişebilir, ve muhtemelen (ve yanlışlıkla) için geniş açık izinleri bıraktı. Benim 15 ya da öylesine diğer veritabanları benim root erişilemiyor. Ben phpMyAdmin kadar yük zaman, ana ekran diyor: "Yeni bir veritabanı oluşturun: Hayır Ayrıcalıklar".

Ben kesinlikle bazı aşamada MAMP iletişim kutusunu kullanarak benim root kullanıcının şifresini değiştirmek etmedi. Ben bu soruna neden olabilecek başka bir şey yapsam ama ben hatırlamıyorum. Ben tekrar şifreyi değiştirerek denedim, ve konuyla hiçbir değişiklik gibi görünüyor ettik.

Ben de manuel mysql başlayan içeren komut satırını kullanarak root şifresini sıfırlayarak denedim - skip-grant-tables sonra privs kızarma, ama yine hiçbir şey sorunu çözmek gibi görünüyor.

Ben fikirlerin sonuna geldik ve burada çok uzmanlarından biri bazı adım adım tavsiye ve tanı seviniriz!

Yardımlarınız için çok teşekkürler.

4 Cevap

Thats MAMP ve komut satırı mysql (ve MAMP dışında mysql herşey) farklı olduğu için.

MAMP mysql inşa kendi vardır ve komut satırında, phpmyadmin sadece yapı aracılığı alınamıyor.

Bu benim bir deneyim oldu, ben mAmp ve raylar ve diğer şeyler üzerinde ruby ​​için diğer mysql kullanabilirsiniz.

Ben aynı sorunu vardı: yalnızca bir kullanıcı hesabı yönetim konsolu veya sorgu tarayıcı üzerinden mysql veritabanlarına erişmek için çalıştı. Ben atlama-hibe-Kullanılan tabloları aniden tüm hesaplar kökü dahil, giriş yapabilirsiniz.

I as a bug as far back as 2006 gördüm, ama son giriş atlama-hibe masalar modunda çalıştırılabilir bir komut yoktur, bu yüzden hala sorunu çözmüş değil.

What helped me
This answer is similar to one described by Ben Bakelaar in the above link. The problem comes when your my.ini has the name resolution flag disabled (skip-name-resolve). This kills mysql's ability to resolve 'localhost' and the mysql.user table only has an entry for localhost / root.

Yerine 127.0.0.1 olmak için mysql.user tablonun localhost girişini güncellemek ve hatta atlama adı çözümleme özelliği etkinleştirilmiş ile yerel konsolları için giriş yapabilirsiniz.

Ile sunucu başlayan deneyin --hibe tabloları atlamak ve daha sonra mysql veritabanındaki ayrıcalık tabloları kontrol:

select * from user where User='root';
select * from tables_priv where User='root';
select * from db where User='root';

Şunu da deneyebilirsiniz:

show grants for root@localhost;
show grants for root@'%';
show grants for root@'hostname';

Bir kez root tam ayrıcalıkları vermek girişimi için bunu yapabilirsiniz:

grant all privileges on *.* to root@localhost identified by 'password' with grant option;

Yorumunuz (- skip-grant-tablolar olmadan) mevcut root yetkileri gösterir. Bu 'root' için herhangi bir girdisi yok bu iyi @ '%', varsayılan olarak bu yok ve bunu bir güvenlik önlemi düşünebilirsiniz.

Eğer 'root'@'localhost' ayrıcalıklar mahvettigini gibi görünüyor. GRANT ALL PRIVILEGES ON . garip. Genellikle, GRANT ALL PRIVILEGES ON *.* veya GRANT ALL PRIVILEGES ON myDatabase.myTable gibi bir şey var. Sizin GRANT için yetkileri vermek için veritabanları ve / veya tablolar belirtmiyor. Ben müşteri üretmek başardı nasıl hiçbir fikrim yok. Ben mysql komut istemcisi (denedim boş dizeler, boşluklarla, tırnak her türlü ...) ile yeniden olamaz, mysql GRANT deyimi (tabii ki, doğru davranış hangisi) reddediyor. MAMP gerçekten garip bir şey yapıyor gibi görünüyor. Ben yeniden olamaz yana GRANT, sizinki gibi, ben mysql olduğunu nasıl yorumladığını diyemeyiz, ama küresel düzeyde 'N' için ayrıcalıkları belirledi sanırım.

Bunu düzeltmek için, uygun olanı ayrıcalıklarına sahip bir kullanıcı gerekiyor. Genellikle, bir kullanıcı varsa 'root'@'localhost' ve 'root'@'your-hostname'. Eğer şanslıysanız, 'root'@'your-hostname' hala gayet iyi. Afair, mysql bağlantıları aşağıdaki gibi çalışır: Eğer 127.0.0.1, ben (o da {[sanırım localhost, yaklaşık 'root'@'localhost' (emin değilim olarak bağlamak bağlarsanız 0)]}). Eğer bağlanıyorsanız your-hostname, sen 'root'@'your-hostname' olarak bağlayın. Bu kullanıcının ayrıcalıklarını yine Tamam iseniz, 'root'@'localhost' için ayrıcalıkları güncelleyebilir ve bitirdiniz.

Yorumlarınız olarak, soket alışılmadık bir yerde olduğundan size 127.0.0.1 üzerinden bağlayabilirsiniz söylüyorlar. Ben hatayı yanlış anlaşılabilir sanırım. Eğer 127.0.0.1 veya your-hostname bağlanmak eğer IIRC size 'localhost' bağlanmak eğer soketi üzerinden bağlanmak, ancak TCP / IP üzerinden. Mysql soketi üzerinden bağlanmak ve (eğer doğru konumunu belirtmek yoktu çünkü) soketi bulamazsanız çalışırsa mysql yuva bulmaya çalıştım, nerede hata mesajı bahseder. Sizin hata mesajı yok. Ben hata bir ağ hatası sanırım. Belki --skip-networking seçeneği ile mysql-server başladım, ya da yapılandırma yanlış bağlama-adresini belirtir. Aksi takdirde 'root'@'your-hostname' olarak bağlanamıyor, ilk düzeltmek gerekir.