MySQL kök parolasını bulma


167

MySQL kök parolamı anlayamıyorum; bunu nasıl öğrenebilirim? Bu şifrenin saklandığı herhangi bir dosya var mı?

Bu bağlantıyı takip ediyorum ama yerel directadmin dizini yok.


Basit bir Google Araması tarafından bulundu: dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html
Arran

11
varsayılan root şifresi - bekleyin - "kök" (tırnak işaretleri olmadan) veya hiç şifre yok (ve mysql sunucusu gerçekten size ait)
Nikola Bogdanović

evet benim laptop benim yerel mysql sunucum
Om3ga

yani birisi sadece bu sorudan geçti ve her doğru ve ilgili cevaba bir aşağı oy verdi mi?
lanzz

Yanıtlar:


142

@thusharaK sayesinde eski şifreyi bilmeden kök şifresini sıfırlayabilirim.

Ubuntu üzerinde aşağıdakileri yaptım:

sudo service mysql stop
sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking

Sonra mysql'i yeni bir terminalde çalıştırın:

mysql -u root

Ve şifreyi değiştirmek için aşağıdaki sorguları çalıştırın:

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

MySQL 5.7'de, mysql.user tablo alanındaki parola alanı kaldırıldı, şimdi alan adı 'authentication_string'.

MySQL güvenli modundan çıkın ve MySQL hizmetini şu şekilde başlatın:

mysqladmin shutdown
sudo service mysql start

24
mysqladmin -u root -p shutdownYeni şifre ile kullanmak zorunda kaldım .
SL Barth - Monica'yı

2
Özellikle güzel talimat akışı: sonra yeni bir terminalde mysql çalıştırın
Mohammed Subhi Sheikh Quroush

8
Bunu yapamam mysql -u root. Hata gösteriyorAccess denied
Avinash Raj

4
@AvinashRaj: Şunu deneyin: sudo mysql -u root
Allen Gingrich

Muhteşem. RHEL 7'de ne çalıştığını anlıyorum: Terminal 1: sudo service mysql stop sudo mysqld_safe --skip-grant-tables --skip-syslog --skip-networking Terminal 2: mysql -u kök GÜNCELLEME mysql.user SET Şifre = ŞİFRE ('yeni şifre') NEREDE Kullanıcı = 'kök'; SIVA AYRICALIKLARI; mysqladmin -u root -p kapatma Not: Mysqladmin'i kapattığınızda, Terminal 1'de güvenli mod çıkışlarını görürsünüz. sudo service mysql start Bu kadar ve yeni parola ile bir cazibe gibi çalışıyor!
StackOverFlow Kullanıcısı

65

Karma şifreyi görüntüleyemezsiniz; yapabileceğiniz tek şey sıfırlamak!

MySQL'i durdurun:

sudo service mysql stop

veya

$ sudo /usr/local/mysql/support-files/mysql.server stop

Güvenli modda başlatın:

$ sudo mysqld_safe --skip-grant-tables

(yukarıdaki satır tüm komuttur)

İşlem tamamlanıncaya kadar bu devam eden bir komut olacaktır, bu yüzden başka bir kabuk / terminal penceresi açın, parola olmadan oturum açın:

$ mysql -u root

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

MySQL 5.7 ve üstü:

mysql> use mysql; 
mysql> update user set authentication_string=password('password') where user='root'; 

MySQL'i başlatın:

sudo mysql start

veya

sudo /usr/local/mysql/support-files/mysql.server start

Yeni şifreniz 'şifre'.


sudo /usr/local/mysql/support-files/mysql.server stop sudo: /usr/local/mysql/support-files/mysql.server: komut bulunamadı
Isuru

Bu durumda ne yapmalı?
Isuru

Mysql düzgün takılmamış gibi görünüyor. Düzgün olarak kaldırın ve yeniden yükleyin.
tk_

Çok teşekkürler. Bir şey garip gitti mysql_secure_installationve kök artık işbirliği yapmıyordu. Ne geliyor authentication_stringayar yapmak?
will

3
Yeniden başlatmak mysqladmin -u root -p shutdowniçin yeni şifreyi deneyinsudo service mysql start
forumülatör

37

MySQL 5.7 ve üstü, MySQL günlük dosyasına kök kaydeder.

Lütfen şunu deneyin:

sudo grep 'temporary password' /var/log/mysqld.log

Benim durumumda şifre burada değildi; Ancak, bunun yerine, /var/log/mysql/error.logkök parola boş olduğu hakkında bir uyarı içeriyordu - bu yüzden günümü kurtardı :)
Janaka Bandara

19

mySQL'in yeni bir kurulumunda beni harekete geçiren ve neden çalışmak için varsayılan şifreyi alamadığım ve neden sıfırlama yöntemlerinin çalışmadığı merak ediyorum. Ubuntu 18'de mysql sunucusunun en son sürümünün varsayılan olarak kök kullanıcı için hiç şifre yetkisi kullanmadığı ortaya çıkıyor. Yani bu, neyi ayarladığınız önemli değil, onu kullanmanıza izin vermeyeceği anlamına gelir. ayrıcalıklı bir soketten giriş yapmanızı bekliyor. yani

mysql -u root -p

Doğru şifreyi kullanıyor olsanız bile hiç çalışmaz !!! ne koyarsanız koyun erişimi reddeder.

Bunun yerine kullanmanız gerekir

sudo mysql

herhangi bir şifre ile çalışır. sonra bir kez sen yazmak gerekir

 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Password you want to use';

sonra oturumu kapatın ve şimdi kanlı şey sonunda şifrenizi kabul edecek



14

Windows sisteminde parolayı sıfırlamak için şu adımları izleyin

  1. Görev yöneticisinden Mysql hizmetini durdurma

  2. Bir metin dosyası oluşturun ve aşağıdaki ifadeyi yapıştırın

MySQL 5.7.5 ve öncesi:

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');


MySQL 5.7.6 ve üstü:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'yournewpassword';

  1. Farklı kaydedin mysql-init.txtve yerleştirin 'C' drive.

  2. Komut istemini açın ve aşağıdakileri yapıştırın

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


2
Bu bir hayat kurtarıcı, BÜYÜK ipucu oldu!
Nicholas Kreidberg

Centos7'de çalıştı mysqld --init-file=/root/m.txt. Ben komuta yukarıda eklenen SET PASSWORD FOR 'root'@'localhost' = PASSWORD('yournewpassword');için /root/m.txt
Damodar Bashyal

8

Paket yöneticisi kurulum sırasında kök parolayı girmenizi istemedikçe, varsayılan kök parola boş dizedir. Yeni yüklenen sunucuya bağlanmak için şunu yazın:

shell> mysql -u root --password=
mysql>

Parolayı değiştirmek için unix kabuğunu geri alın ve şunu yazın:

shell> mysqladmin -u root --password= password root

Yeni şifre 'root'tur. Şimdi sunucuya bağlanın:

shell> mysql -u root --password=
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

Hata! Şifre değişti. , Yenisini kullanın root:

shell> mysql -u root --password=root
...
blah, blah, blah : mysql welcome banner
...
mysql> 

Bingo! Yeni ilginç bir şey yap

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

Maurycy


1
şu anda varsayılan olarak parolalar değil, kimliği doğrulanmış yuvalar kullanıyor. bu yüzden sadece şifreyi değiştirmek artık yeterli değil.
Kit Ramos

7

Diğer cevaplara ek olarak, bir cpanel kurulumunda, mysql kök şifresi adlı bir dosyada saklanır /root/.my.cnf. (ve cpanel hizmeti değişikliği yeniden sıfırlar, bu nedenle buradaki diğer yanıtlar yardımcı olmaz)


6

mysql root şifresini görüntüleyebilirsiniz, iyi i mysql 5.5 üzerinde denedim, bu yüzden diğer yeni sürüm iyi çalışma ya da çalışma hakkında bilmiyorum

nano ~/.my.cnf

4

Bu benim için çalıştı:

Terminalde aşağıdakileri yazın

$ sudo mysql -u root -p

Şifre girin: // sadece enter tuşuna basın

mysql>


mysql sunucusu artık varsayılan olarak parola yetkilendirmesi kullanmıyor gibi görünüyor. oturum açma yöntemini değiştirene kadar erişim elde etmek için mysql istemcisini süper kullanıcı (sudo) olarak başlatmanız gerekir.
Kit Ramos

4

MySQL sunucusunun derhal kurulumundan sonra benim için çalışan varsayılan şifre: mysql


2
belki soruya cevap vermedi, ama buraya gelen birçok kişi sorunu çözdüğünü görebilir.
Ohad Cohen

3

Prosedür MySql sürümüne bağlı olarak değişir. Sürümü tam olarak sürümünüz için açıklanan şekilde uygulayın:

  • İPUÇLARI - MySql sürümünüzün talimatları sayfasından önce okuyun *

  • 5. Adım: CMD'yi çalıştırmak yerine, masaüstünüzde CDM.exe'yi çağıran bir kısayol oluşturun. Ardından kısayola sağ tıklayın ve "Yönetici Olarak Çalıştır" ı seçin.

  • 6. adımda: Komutun ilk önerilen sürümünü atlayın ve ikincisini --defaults-file parametresine sahip olanı çalıştırın

  • Komutu yürüttüğünüzde, her şey yolundaysa, CMD penceresi açık kalır ve 6. adımın komutu yürütülmeye devam eder. Pencereyi kapatın ('x' düğmesine tıklayın) ve ardından Görev Yöneticisi'nden MySQl'i kapatmaya zorlayın.

  • SQL komutları ile dosyayı silin ve MySQL'i yeniden başlatın. Parola şimdi değiştirilmelidir.

5.0 http://dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html

5.1 http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html

... sadece bağlantıdaki sürümü değiştirin (5.5, 5.6, 5.7)


3

MySQL'in üzerinde çalıştığı veri klasörünün içindeki "hostname" .err dosyanızda, ile başlayan bir dize aramaya çalışın:

"Roor @ localhost için geçici bir şifre üretildi"

kullanabilirsiniz

less /mysql/data/dir/hostname.err 

sonra slash komutu ve ardından aramak istediğiniz dize

/"A temporary password"

Ardından Sonraki sonuca gitmek için n tuşuna basın.



0

Sistem:

  • CentOS Linux 7
  • mysql Ver 14.14 Dağılım 5.7.25

Prosedür:

  1. İki kabuk oturumu açın, birine Linux kök kullanıcısı ve diğeri mysqlkomuta erişimi olmayan kök olmayan bir kullanıcı olarak oturum açın .

  2. Kök oturumunuzda, normal mysqld dinleyicisini durdurun ve parola kimlik doğrulamasını atlayan bir dinleyici başlatın ( not: bu,mysql komuta erişimi olan herkes veritabanlarına parola olmadan erişebileceği için önemli bir güvenlik riskidir . Etkin kabuk oturumlarını kapatmak isteyebilirsiniz ve / veya bunu yapmadan önce kabuk erişimini devre dışı bırakabilirsiniz):

    # systemctl stop mysqld
    # /usr/sbin/mysqld --skip-grant-tables -u mysql &

  3. Kök olmayan oturumunuzda mysql'de oturum açın ve mysql kök parolasını ayarlayın:

    $ mysql
    mysql> flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPass');
    Query OK, 0 rows affected, 1 warning (0.01 sec)

    mysql> quit;

  4. Kök oturumunuzda, şifresiz mysqld örneğini öldürün ve normal mysqld dinleyicisini servise geri yükleyin:

    # kill %1
    # systemctl start mysqld

  5. Kök olmayan oturumunuzda, yukarıda yapılandırdığınız yeni kök parolayı test edin:

    $ mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    ...
    mysql>


-2

Bunu farklı bir şekilde çözdüm, bazıları için daha kolay olabilir.

Bu şekilde yaptım çünkü güvenli modda başlatmayı denedim ama hatayla bağlanamıyorum: ERROR 2002 (HY000): Yerel MySQL sunucusuna '/var/run/mysqld/mysqld.sock' soketi ile bağlanamıyorum (2)

Yaptığım şey normal olarak root olarak bağlanmaktı:

$ sudo mysql -u root

Sonra yeni bir süper kullanıcı oluşturdum:

mysql> grant all privileges on *.* to 'myuser'@'%' identified by 'mypassword' with grant option;
mysql> quit

Sonra kullanıcı olarak giriş yap

$ mysql -u myuser -p -h localhost

Parolayı değiştirmeye çalışmak bana hata vermedi ama benim için hiçbir şey yapmadı, bu yüzden root kullanıcısını bıraktım ve yeniden oluşturdum

mysql> drop user 'root'@'localhost;
mysql> mysql> grant all privileges on *.* to 'root'@'localhost' identified by 'mypassword' with grant option;

Kök kullanıcı şimdi yeni parola ile çalışıyor


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.