MySQL kök şifre değişikliği


101

MySQL kök parolamı sıfırlamaya çalışıyorum. Mysqld_safe --skip-grant-tablolarını çalıştırdım, root şifresini güncelledim ve orada olduğundan emin olmak için kullanıcı tablosunu kontrol ettim. Mysql daemon'u yeniden başlattıktan sonra, yeni belirlediğim yeni kök parolayla oturum açmayı denedim ve yine de kullanıcı 'kök' hataları nedeniyle Erişim reddedildi. Ayrıca mysql'yi tamamen kaldırmayı ve yeniden yüklemeyi denedim (my.cnf dosyasını kaldırmak dahil) ve hala şansım yok. Bundan sonra ne yapabileceğime dair herhangi bir önerisi olan var mı?

Şimdiden teşekkürler


2
lütfen gerçek
hatanızı gönderin

17
Kilitlenmemeniz SET PASSWORD FOR 'root'@'localhost' = PASSWORD('somepassword'); en güvenliyse.
sabgenton

Sunucularımdan birinde şifreyi değiştirmek için videodaki adımları takip ettim youtu.be/gFo5DV_pSg8
Prem


1
Sunucu sürümü: 8.0.20-0ubuntu0.20.04.1 (Ubuntu) ERROR 1064 (42000): SQL sözdiziminizde bir hata var; 1. satırda 'PASSWORD ("1")' yakınında kullanılacak doğru sözdizimi için MySQL sunucu sürümünüze karşılık gelen kılavuza bakın 'root' @ 'localhost' = ŞİFRE ("somepassword") için PAROLA AYARLA;
discipleartem

Yanıtlar:


133
SET PASSWORD FOR 'root'@'localhost' = PASSWORD('mypass');
FLUSH PRIVILEGES;

7
Bu, 5.7'de benim için çalışıyor, ancak kabul edilen cevap değil.
Stoopkid

3
MySQL kök parolanız boş olarak ayarlanmışsa bu doğru çözümdür.
fschuindt

4
> GÜNCELLE mysql.user SET authentication_string = ŞİFRE ('MyNewPass') NEREDE kullanıcı = 'root'; > FLUSH AYRICALIKLARI; MySQL 5.7.x sürümünde, mysql tablosunda artık parola alanı yoktur. Authentic_string ile değiştirildi.
Robert Anthony S. Tribiana

2
Bu bana bir
onay

1
FLUSH PRIVILEGESVeritabanı sunucusunu yeniden başlatmadan değişikliği etkili kılmak için fazladan bir komuta ihtiyacı vardır .
NetVicious

64

MySQL Referans kılavuzundan buna bir göz atın:

İlk giriş mysql:

# mysql -u root -p

Ardından mysql komut isteminde çalıştırın:

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

Sonra

FLUSH PRIVILEGES;

Daha fazla bilgi için bu sayfaya bakın: Kök Parolayı Sıfırlama: Unix Sistemleri


Kullanıcının parolasını güncellerken "Güvenli güncelleme modunu kullanıyorsunuz ve bir tabloyu KEY sütunu kullanan bir WHERE olmadan güncellemeye çalıştınız ..." hatası aldım. Bkz stackoverflow.com/questions/11448068/... bu hatayı gidermek için nasıl.
Joe Borysko

ERROR 1064 (42000): SQL sözdiziminizde bir hata var; 1. satırda '(' MyNewPass ') WHERE User =' root '' yakınında kullanmak için doğru sözdizimi için MySQL sunucu sürümünüze karşılık gelen kılavuza bakın
discipleartem

31
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass';

Sen bulabilirsiniz Kök Parola Sıfırlama MySQL belgelerinde.


Bu sorgu benim için çalıştı ancak yeni şifre çalışmıyor (Erişim reddedildi). Yalnızca kök kullanıcıyı askubuntu.com/a/784347/160368 yeniden oluşturduktan sonra çalışmaya başlıyor .
hlcs

1
MySQL 8.0.20'de benim için çalışıyor ve bu komutu kullanarak veri klasörünü başlattıktan sonramysqld --initialize --console
A.Henteti

27

Bu, WAMP v3.0.6 ve sonraki sürümler için güncellenmiş yanıttır

> UPDATE mysql.user 
> SET authentication_string=PASSWORD('MyNewPass') 
> WHERE user='root';

> FLUSH PRIVILEGES;

MySQL 5.7.x sürümünde, mysql tablosunda artık parola alanı yoktur. Authentication_string ile değiştirildi. (Bu terminal / CLI içindir)

UPDATE mysql.user SET authentication_string=PASSWORD('MyNewPass') WHERE user='root';

FLUSH PRIVILEGES;

(Bu, PHPMyAdmin veya herhangi bir Mysql GUI için ise)


Bu cevap, mysql.usertablonun güncellenmesi gerektiğini söyleyen birkaç kişiden biridir . Başka bir veritabanı kullanıyorsanız ( usekomutla ayarlanır ), tablonun usermevcut olmadığına dair bir hata alacağınıza dikkat edin . Teşekkürler bayım!
Aleksandar

1
benim için çalışıyor . 5.7.x kullanıyorum, mysql.usertablo yok . diğer yanıtların tarihi geçmiş
Siwei Shen 申思维

Memnuniyetle yardım ettim!!
Robert Anthony S. Tribiana

Geri alıyorum çünkü terminal için tasarlanan satır başına noktalı virgül> kullanmak niyetindeyim
Robert Anthony S. Tribiana

0 satır etkilendi, eşleşti: 3 değişti: 0 ...?
trainoasis

22

Buldum! Parolayı değiştirdiğimde hashlamayı unuttum. Sorunumu çözmek için bu sorguyu kullandım:

update user set password=PASSWORD('NEW PASSWORD') where user='root';

PASSWORD('NEW PASSWORD')Şifreyi unuttum ve yeni şifreyi düz metin olarak yazdım


Diğerlerinin çözümü görmesine izin vermek için geri dönüp cevabınızı kabul ettiğinizden emin olun
ghostJago

1
dev.mysql.com/doc/refman/5.0/en/resetting-permissions.html , bakarsanız bunu nasıl yapacağınızı gösterir --init-file=.
sabgenton

3
Aynı komutu kullandığımda aşağıdaki hatanın neden döndürüldüğüne dair bir fikriniz var mı? Hata 1054 (42S22): 'alan listesindeki' bilinmeyen 'Şifre' sütun
Adrian M.

1
SQL sözdiziminizde bir hata var; 1. satırda user = 'root' olduğu yerde '(' NEW PASSWORD ') yakınında doğru sözdizimi için MySQL sunucu sürümünüze karşılık gelen kılavuza bakın
discipleartem

21

Lütfen aşağıdaki adımları izleyin.

Aşama 1. mysql'i durdur

Adım 2. sudo mysqld_safe --skip-grant-tables

Aşama 3.mysql -u root

adım4.use mysql;

Adım 5.show tables;

adım6.describe user;

adım7.update user set authentication_string=password('1111') where user='root';

şifre 1111 ile giriş


3
flush privilegesson adım olarak önemlidir.
Khom Nazid

Gerçekten eşek ile yapılır.Şifreyi sıfırlamak için tüm eğitimleri yaptım. Yeni şifre ile giriş yaptığım zaman dışında her şey çalışıyor, çalışmıyor.
Shidomaru NeveRage

mysqld başlamıyorsa ve bu mysqld arka plan programı gibi mesajlar, pid dosyasından / var / lib / mysql mysqld_safe mysqld'den /var/run/mysqld/mysqld.pid sona erdi, şunu yapın: mkdir / var / run / mysqld chomod 777 / var / run / mysqld ve her
şeye

18

Ben de etrafı araştırdım ve muhtemelen bazı cevaplar bazı durumlar için uygundur.

benim durumum bir Ubuntu 18.04.2 LTS sisteminde Mysql 5.7:

(kök ayrıcalıkları alın)

$ sudo bash

(root db kullanıcısı için şifre ayarlayın + adımlarla uygulama güvenliği)

# mysql_secure_installation

(soket yerine şifre ile root kullanıcısına erişim verin)

(+ düzenleme: görünüşe göre şifreyi yeniden belirlemeniz gerekiyor?)

('mySecretPassword' olarak ayarlamayın !!!)

# mysql -u root

mysql> USE mysql;
mysql> UPDATE user SET plugin='mysql_native_password' WHERE User='root';
mysql> set password for 'root'@'localhost' = PASSWORD('mySecretPassword'); 
mysql> FLUSH PRIVILEGES;
mysql> exit;

# service mysql restart

İçin çok teşekkürler zetacu (ve Erich için) bu mükemmel cevap (birkaç saat arama yaptıktan sonra ...)

Keyfini çıkarın: -D

S.

Düzenleme (2020):

Bu yöntem artık çalışmıyor, ileride başvurmak için bu soruyu görün ...


Bu şimdiye kadarki en iyi cevap, en azından mysql server 5.7 için.
Zoltán Hajdú

EN İYİ cevap. Teşekkür ederim.
Luciano Fantuzzi

11

MySQL 8.0.4+ üzerinde

Mevcut kök kullanıcıyı güncellemek için:

select current_user();
set password = 'new_password';

Diğer kullanıcıyı güncellemek için:

set password for 'otherUser'@'localhost' = 'new_password';

Şifreyi güncellemeden önce şifre politikası belirlemek için:

set global validate_password.policy = 0;
set password = 'new_password';
set password for 'otherUser'@'localhost' = 'new_password';

Kök şifresini güncellemenin diğer / daha iyi yolu:

mysql_secure_installation

Eski uygulamaları kullanmaya devam edebilmek için 5.x kimlik doğrulamasına bağlı kalmak mı istiyorsunuz?

Açık my.cnf

default_authentication_plugin = mysql_native_password

Kökü güncellemek için:

set global validate_password.policy = 0;
alter user 'root'@'localhost' identified with mysql_native_password by 'new_password';


6

Parolayı sıfırlamalısınız! mac osx (test edilmiş ve çalışıyor) ve ubuntu için adımlar

MySQL'i durdur

$ 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ın tamamı komuttur)

Bu, işlem bitene kadar devam eden bir komut olacaktır, bu nedenle başka bir kabuk / terminal penceresi açın, şifre olmadan oturum açın:

$ mysql -u root

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

MySQL'i başlatın

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

yeni şifreniz 'şifre'dir.


Bir mesajım var: veri tabanı seçilmedi
Mimouni


5

MySQL 5.7.6 ve sonrası için:

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

MySQL 5.7.5 ve öncesi için:

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

3

Mevcut en son mysql sürümü (8.0.16) için bu yanıtların hiçbiri benim için işe yaramadı.

Birkaç farklı cevaba baktıktan ve bunları bir araya getirdikten sonra, işe yarayan şey şu oldu:

update user set authentication_string='test' where user='root';

Bu yardımcı olur umarım.


2

Zaman zaman karşılaştığım yaygın bir hata, -pseçeneği unutmamdır , bu yüzden kullandığınızdan emin misiniz:

mysql -u root -p

2

MySQL 5.7'de, parola 'authentication_string' ile değiştirilir.

kullanım

update user set authentication_string=password('myfavpassword') where user='root';

2

MySQL şifresini değiştirmek için mysqladmin komut satırı yardımcı programını kullanma:

mysqladmin --user=root --password=oldpassword password "newpassword"

Kaynak


1

@Kta'dan cevabı denedim ama benim için işe yaramadı.

MySQL 8.0 kullanıyorum

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

mysql> SET PASSWORD FOR 'root'@'localhost' = 'yourpassword'


1
Lütfen kodunuza bir açıklama ekleyin - bu yedi yıllık bir soruyu tam olarak nasıl çözer?
Nico Haase

Görünüşe göre sözdizimi yedi yıl içinde değişmiş. Şifreyi PASSWORD () dev.mysql.com/doc/refman/8.0/en/set-password.html
kangkyu

Şifre karması 41 haneli onaltılık bir sayı olmalıdır
Mimouni

1

Çok fazla yorum, ama bu yönteme yardım ettim:

sudo mysqladmin -u root password 'my password'

Kurulumdan sonra benim durumumda root kullanıcısı için bir şifre olmadan mysql servisini aldım ve güvenliğim için şifre belirlemem gerekiyordu.


Eskisini bilmeden mysql root kullanıcı şifresini sıfırlamak için kullanılabilir. Ancak bu parola kaydedildiği için Aug 07 16:21:55 ubuntupc sudo[93250]: user : TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/bin/mysqladmin -u root password 'my password'
kimsenin sistem günlüğünüze

0

tüm wamp hizmetlerini durdur, wamp'tan çık.

not defterini açın ve> 'root' @ 'localhost' = PAROLA ('') İÇİN PAROLA AYARLA yazın;

daha sonra herhangi bir adla c: sürücüsüne kaydedin .. "c: /example.txt" gibi

şimdi "wamp" falder wamp'ınıza gidin> bin> mysql> mysql (sürümünüz)> durum yolumdaki bin "C: \ wamp \ bin \ mysql \ mysql5.6.17 \ bin"

şimdi yolunuzu kopyalayın ve (ctrl + r) ile cmd'yi çalıştırın ve ardından "cmd" yazın (girin)

cd yazın ve cmd'ye sağ tıklayın ve yolu yapıştırın (girin) şimdi parantez olmadan (mysqld --init-file = C: \ example.txt) yazın ve ardından (girin)

ardından bilgisayarı yeniden başlatın veya taskmgr'yi açın ve mysqld.exe'yi öldürün

wamp'ı başlatın ve şifreniz kaldırılacaktır ...


0

MacOS kullanıcıları için, root şifrenizi unutursanız, @ thusharaK'ın cevabı ( https://stackoverflow.com/a/28601069/5628856 ) iyidir, ancak biraz daha püf noktası vardır:

Mysql serveride başlatmak için sistem tercihi kullanıyorsanız,

sudo mysqld_safe --skip-grant-tables

sizin için çalışmayabilir.

Komut satırı argümanlarının sistem başlatma yapılandırması ile aynı olduğundan emin olmalısınız.

Aşağıdaki komut benim için çalışıyor:

/usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --keyring-file-data=/usr/local/mysql/keyring/keyring --early-plugin-load=keyring_file=keyring_file.so --skip-grant-tables

Kullanabilirsiniz

ps aux | grep mysql

kendi kontrol etmek için.


0

Veya sadece etkileşimli yapılandırmayı kullanın:

sudo mysql_secure_installation

-1

Ubuntu'da,

sudo dpkg-reconfigure mysql-server-5.5 

5.5Mevcut sürümünüzle değiştirin ve sizden yeni kök şifresi istenecektir.


Hangi işletim sisteminde? Bu hiçbir anlam ifade etmiyor.
Khom Nazid

-1
  1. Mac'te sistem tercihleri> MySQL'i açın.
  2. MySQL'in konfigürasyon bölümünde veritabanını başlatmak için kontrol edin.
  3. istemde şifreyi değiştirin. Veritabanını başlat
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.