MySQL kullanıcı adımı ve şifremi nasıl alabilirim?


158

MySQL kullanıcı adımı ve şifremi kaybettim. Nasıl alırım?

Yanıtlar:


186

MySQL işlemini durdurun.

MySQL işlemini --skip-grant-tables seçeneği ile başlatın.

MySQL konsol istemcisini -u root seçeneğiyle başlatın.

Tüm kullanıcıları listeleyin;

SELECT * FROM mysql.user;

Şifreyi yenile;

UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

Ama UNUTMAYIN için

MySQL işlemini durdurma

MySQL İşlemini normal şekilde başlatın (yani --skip-grant-tables seçeneği olmadan)

bitirdiğin zaman. Aksi takdirde, veritabanınızın güvenliği tehlikeye girebilir.


7
Normal kullanıcıları sıfırlamak için arka plan programını yeniden başlatmanız gerekmediğini düşünün. sadece "FLUSH PRIVILEGES"; kullanıcı şifresini güncelledikten sonra. --skip-grant-tables yalnızca root kullanıcı şifresi sıfırlaması için gereklidir! Bu genellikle standart bir kullanıcı sıfırlaması için önerilmez.
Amos Folarin

dpkg-reconfigure mysql-server-5.5Kök MySQL parolasını sıfırlamak için komutu kullanmanın önemi nedir ?
phillipsK

@Xenph, Neden " MySQL konsol istemcisini -u root seçeneğiyle başlat " diyorsunuz? -uSunucunun başlatıldığında göz ardı edildiği gibi bunu yapmanın bir anlamı yoktur --skip-grant-tables.
Pacerier

15
MySQL 5.7. * 'De, mysql.useraranan sütun passwordkullanılmaz authentication_string.
Adib Aroui


42

Maalesef kullanıcı şifreniz geri alınamaz. Eğer bilmiyorsanız geri dönüşü olmayan tek yönlü bir karma ile karma edilmiştir. Yukarıda Xenph Yan ile gitmenizi ve sadece yeni bir tane oluşturmanızı öneririm.

Herhangi bir MySQL kökü için parolayı sıfırlamak için kılavuzdaki aşağıdaki yordamı da kullanabilirsiniz.Windows'taki hesabı :

  1. Sisteminizde Yönetici olarak oturum açın.
  2. Çalışıyorsa MySQL sunucusunu durdurun. Windows hizmeti olarak çalışan bir sunucu için Hizmetler yöneticisine gidin:

Başlat Menüsü -> Denetim Masası -> Yönetimsel Araçlar -> Hizmetler

Sonra listeden MySQL servisini bulun ve durdurun. Sunucunuz bir hizmet olarak çalışmıyorsa, onu durdurmak için Görev Yöneticisi'ni kullanmanız gerekebilir.

  1. Bir metin dosyası oluşturun ve içine aşağıdaki ifadeleri yerleştirin. Parolayı, kullanmak istediğiniz parola ile değiştirin.

    UPDATE mysql.user SET Password=PASSWORD('MyNewPass') WHERE User='root';
    FLUSH PRIVILEGES;

    GÜNCELLEME ve FLUSH ifadeleri her biri tek bir satıra yazılmalıdır. GÜNCELLEME deyimi mevcut tüm kök hesapları için parola ve sıfırlar FLUSH beyanı belleğe hibe tabloları yeniden etmesini söyler.

  2. Dosya 'yı kaydet. Bu örnek için, dosya adlandırılacaktır C: \ mysql-init.txt .
  3. Komut istemine ulaşmak için bir konsol penceresi açın:

    Başlat Menüsü -> Çalıştır -> cmd

  4. MySQL sunucusunu özel --init-file seçeneğiyle başlatın :

    C:\> C:\mysql\bin\mysqld-nt --init-file = C:\mysql-init.txt

    MySQL'i farklı bir konuma yüklediyseniz C: \ mysql , komutu uygun şekilde ayarlayın.

    Sunucu başlangıçta --init-file seçeneğiyle adlandırılan dosyanın içeriğini yürütür ve her birini değiştirir. kök hesap parolasını .

    Ayrıca --consoleSunucu çıktısının bir günlük dosyası yerine konsol penceresinde görünmesini istiyorsanız seçeneğini de komuta .

    MySQL'i MySQL Kurulum Sihirbazı'nı kullanarak kurduysanız, --defaults-file seçeneğini belirtmeniz gerekebilir :

    C:\> "C:\Program Files\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe" --defaults-file="C:\Program Files\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt

    Uygun --defaults-file ayarı, Hizmetler Yöneticisi kullanılarak bulunabilir:

    Başlat Menüsü -> Denetim Masası -> Yönetimsel Araçlar -> Hizmetler

    Listede MySQL servisini bulun, sağ tıklayın ve Özellikler seçeneğini seçin. Yürütülebilir dosya yolu --defaults-file ayarını içerir.

  5. Sunucu başarıyla başlatıldıktan sonra C: \ mysql-init.txt dosyasını silin .
  6. MySQL sunucusunu durdurun, ardından normal modda yeniden başlatın. Sunucuyu bir hizmet olarak çalıştırırsanız, Windows Hizmetleri penceresinden başlatın. Sunucuyu el ile başlatırsanız, normalde kullandığınız komutu kullanın.

Artık yeni şifreyi kullanarak MySQL'e root olarak bağlanabilmelisiniz.


5
@ Jake - cevap için teşekkürler. Ben bir başparmak vazgeçmek istedim ama nedense stackoverflow itibar noktaları nedeniyle bunu yapmama izin vermeyeceğim. Ben SADECE google okumak olduğunu her şey bana adres tarifi verdi neden açıklama "maalesef kullanıcı şifresi geri alınamaz. Eğer bunu yaparsanız değil biliyorum geri döndürülemez bir tek yönlü hash ile karma olmuştur" benim anlayışıma anahtarı olduğunu değiştirmek benim parola. iyi açıklamalar sadece talimatlardan daha anlayışlıdır.
dsdsdsdsd

1
@jake mysql hizmet listesinde bulamıyorum Lütfen ne yapacağımı söyle?

1
Neden senin mysqld-ntyerine mysqld?
Pacerier

Btw, dosya olmayan bir seçenek var --init-filemı? (Mysql.exe --executekomutuna benzer bir şey .)
Pacerier

34

Burada en yararlı cevaba bir gelişme:

1] MySQL sunucusunu yeniden başlatmaya gerek yok
2] Bir ağa bağlı bir MySQL sunucusu için güvenlik sorunu

MySQL sunucusunu yeniden başlatmanıza gerek yoktur.

kullanım FLUSH PRIVILEGES;parola değişikliği için mysql.user ifadesinin güncellenmesinden sonra .

FLUSH deyimi, sunucuya hibe tablolarını parola değişikliğini fark edecek şekilde belleğe yeniden yüklemesini bildirir.

--skip-grant-optionsŞifre olmadan ve tüm ayrıcalıklara sahip bağlantı herkes tanır. Bu güvensiz olduğu için,

uzak istemcilerin bağlanmasını önlemek için --skip-grant-tables komutunu --skip-networking ile birlikte kullanın .

from: başvuru: sıfırlama-izinler-genel


@ThinkingMonkey, Bu, şu anda oturum açmış olan kullanıcının değiştirme ayrıcalıklarına sahip olduğunu varsaymıyor mu mysql.user? Yine de, durum böyle değil.
Pacerier

6

Bruteforcing olmadan bir MySQL şifresini doğrudan kurtaramasanız da, başka bir yol olabilir - veritabanına bağlanmak için MySQL Workbench'i kullandıysanız ve kimlik bilgilerini "kasaya" kaydettiyseniz, altınsınız demektir.

Windows'da kimlik bilgileri % APPDATA% \ MySQL \ Workbench \ workbench_user_data.dat - CryptProtectData ile şifrelenmiştir (ek entropi olmadan). Şifre çözme kolaydır.

std::vector<unsigned char> decrypt(BYTE *input, size_t length) {
    DATA_BLOB inblob { length, input };
    DATA_BLOB outblob;

    if (!CryptUnprotectData(&inblob, NULL, NULL, NULL, NULL, CRYPTPROTECT_UI_FORBIDDEN, &outblob)) {
            throw std::runtime_error("Couldn't decrypt");
    }

    std::vector<unsigned char> output(length);
    memcpy(&output[0], outblob.pbData, outblob.cbData);

    return output;
}

Veya bu DonationCoder iş parçacığının kaynak + hızlı ve kirli bir uygulamanın yürütülebilir olup olmadığını kontrol edebilirsiniz .


2
Bu mükemmeldi. MySQL Workbench kasamda saklanan kullanıcı hesabı parolamı almak için iş parçacığı snemarch kaynak kodu ile bir exe var. Kullanıcı tablosunu okuma veya güncelleme haklarım varsa, bu diğer yöntemler de muhtemelen işe yarayacaktır.
RobbZ

Ancak göreceli olarak, çok az insan Workbench kullanıyor.
Pacerier

İşte Workbench'in depolanan kullanıcı adı ve şifre bilgilerini kurtarmak için Visual Studio ile oluşturulduktan sonra çalıştırılabilecek başka bir uygulama: github.com/wclear/MySQLWorkbenchPasswordViewer
bnp887

6

Kesinti olmadan yap

DBMS'ye bağlanmak için Terminal'de aşağıdaki komutu çalıştırın (root erişimine ihtiyacınız vardır):

sudo mysql -u root -p;

hedef kullanıcının güncelleme şifresini çalıştır (örnek kullanıcı adım mousavive şifresi olmalı 123456):

UPDATE mysql.user SET authentication_string=PASSWORD('123456') WHERE user='mousavi';  

bu noktada değişiklikleri uygulamak için bir sifon yapmanız gerekir:

FLUSH PRIVILEGES;

Bitti! Herhangi bir duraklama olmadan veya mysql hizmetini yeniden başlatın.


5

MySQL'in çalıştığı sunucuya root erişiminiz varsa, bu komutu kullanarak MySQL sunucusunu durdurmalısınız.

sudo service mysql stop

Şimdi bu komutu kullanarak mysql'yi başlatın

sudo /usr/sbin/mysqld --skip-grant-tables  --skip-networking &

Şimdi kullanarak mysql giriş yapabilirsiniz

sudo mysql
FLUSH PRIVILEGES;
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');

Tüm talimatları http://www.techmatterz.com/recover-mysql-root-password/ adresinde bulabilirsiniz.


3

Varolan kullanıcıyı kullanarak windows cmd'den MySql oturumu açın:

mysql -u kullanıcı adı -p
Parolayı girin: ****

Ardından aşağıdaki komutu çalıştırın:

mysql> SELECT * FROM mysql.user;

Bundan sonra ilgili kullanıcı için şifreli md5 şifresini kopyalayın ve web'de mevcut birkaç çevrimiçi şifre şifresi çözülmüş uygulama vardır. Bu şifre çözme şifresini kullanarak bir dahaki sefere giriş yapmak için bunu kullanın. veya flowing komutunu kullanarak kullanıcı şifresini güncelleyin:

mysql> UPDATE mysql.user SET Password=PASSWORD('[password]') WHERE User='[username]';

Ardından yeni şifreyi ve kullanıcıyı kullanarak giriş yapın.


0

ODBC ayarlanmışsa, şifreyi ODBC yapılandırma dosyasından alabilirsiniz. Bu Linux için /etc/odbc.ini ve Windows kayıt defterinde Software / ODBC klasöründe (birkaç tane var - biraz avlanabilir)


0

Dosya 'yı kaydet. Bu örnekte, dosya C: \ mysql-init.txt olarak adlandırılacaktır. dosyayı kaydetmek için yönetici izinleri istiyor


-1

Op sorusuna sıkı, mantıklı, bilgisayar science'ish yorumlama gerektiren olacağını rağmen hem "Ben MySQL adlarını almak nasıl" ve "şifre" - Ben O da ele almak birine yararlı olabileceğini düşündüm VEYA yorumunu. Diğer bir deyişle ...

1) MySQL kullanıcı adımı nasıl alabilirim?

VEYA

2) şifre

Bu son durum zaten çok fazla ele alınmış gibi görünüyor, bu yüzden onunla uğraşmayacağım. Aşağıda yalnızca "MySQL kullanıcı adımı nasıl alırım" davası için bir çözüm bulunmaktadır. HIH.

MySQL kullanıcı adınızı bulmak için MySQL kabuğundan aşağıdaki komutları çalıştırın ...

Mysql.user'dan Kullanıcı SEÇ;

tüm mysql kullanıcılarının bir tablosunu yazdıracaktır.


1
Bu geç bir cevaptır ve bunları yalnızca çözümünüz zaten gönderilen veya kabul edilenlerden açıkça farklıysa göndermelisiniz. Bu durumda, özellikle cevabınız kabul edilen bir cevabı çoğaltmıyor.
m.cekiera
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.