MySQL'e şifresiz erişimi etkinleştir


15

MySQL için şifremi nasıl silebilirim? Veritabanına bağlanmak için bir parola istemiyorum. Sunucum Ubuntu çalıştırıyor.


Sadece bir ilgi konusu olarak, neden bir şifre istemiyorsunuz?
John Gardeniers

Örneğin "dpkg-reconfigure phpmyadmin" çalıştırdığımda hatalarla karşılaşıyorum. Erişim reddedildi hatası 1045 hatasıyla durur root @ localhost "parola: hayır" bitiyor.
Lacek

Yanıtlar:


30

Şahsen, bunun yerine bir şifre ayarlamak ve /root/.my.cnf içine kaydetmek daha iyi olduğunu düşünüyorum:

İlk:

mysqladmin -u root password 'asdfghjkl'

Ardından root'un .my.cnf dosyasını düzenleyin:

[client]
password = asdfghjkl

Emin olun chmod 0600 .my.cnf.

Şimdi bir şifreniz var, ancak artık sizden istenmiyor. Varsayılan MySQL sunucu kurulumum, bu gibi .my.cnf dosyasına kaydedilen her MySQL sunucusu için tamamen rastgele benzersiz bir şifredir.


1
Şifrenizi kaldırmak veya sizi otomatik olarak doğrulamak için ortamınızın ayarlanmasına kesinlikle katılıyorum.
Zoredache

2
.My.cnf dosyasındaki bu parolayı tırnak içine almanız gerekebilir. O olmadan benim için işe yaramadı.
user67641

1
@ user67641: Sürüme ve şifrenizde ne olduğuna bağlı olabilir ... Benimki hepsi alfasayısalların uzun rastgele dizeleridir (özel karakter yok) ve tırnak işaretleri gerekmez.
freiheit

2
/Root/.my.cnf oluşturmanız gerekiyorsa, başka hiçbir kullanıcının göz ardı edemeyeceğinden emin olmak için açıkça 0600 izinleri ayarlamaya değer. Çoğu zaman normal kullanıcılar / köke inemezler, ancak ekstra paranoya neredeyse her zaman garanti edilir.
Dale Anderson

mv ./+%Y%m%dMysqldump ve gzip arasında eksik . $ Db.sql $ OUTPUT`
Siddharth

11

Evet, daha az parola iyi bir şey olabilir. Ancak veritabanını herkes için açmayın.

unix_socket aracılığıyla:

grant usage on *.* to 'root'@'localhost' identified via unix_socket;

Bu, yerel olarak oturum açmış bir kök kullanıcı için şifresiz mysql erişim sağlar. Btw. bu son ubuntu / debian sürümlerinde varsayılan değerdir.

some_user@box: mysql -u root  # denied
root@box: mysql               # good
some_user@box: sudo mysql     # good, if "some_user" has sudo rights.

Açıklayıcı slaytlar: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips .


2
SF'ye hoş geldiniz! Güzel ilk cevap: açık, iyi bir özet, daha fazla keşif için bir bağlantı ve mevcut cevaplar topluluğuna bir şeyler ekliyor. İlk vekiliniz olmaktan mutluluk duyuyorum ve umarım bunun gibi daha fazla cevap yazabilirsiniz.
MadHatter

Slaytlar uygundur, ancak asıl dokümantasyon şudur
JonnyJD

10

MySQL için ayarlanmış bir parolanız varsa MySQL kök Parolasını Kurtar bölümündeki talimatları izleyin ve ardından parolanızı null olarak ayarlayın:

5.7.6 ve üstü için

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

5.7.5 ve öncesi için

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

* bunun etkili olması için DB'nin yeniden başlatılması gerekir (bağlantıdaki talimatları inceleyin)

sudo service mysql restart

bu durumda, "ayrıcalıkları yıkamayı" unutmayın;
Marco Ramos

@meyosef - sorununuzu çözdüyse lütfen cevabı cevap olarak işaretleyin (oy sayısının altındaki yeşil onay işaretine tıklayın).
jneves

Boş bir parolayı sadece Unix soketi için kullanabileceğimi düşündüm, geri döngü için değil, ama mümkün değil. unix_socketEklenti biraz daha farklı bir şeyi yapar.
havza

5

Ayrıca şunları da yapabilirsiniz:

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

1

Yönetici kullanıcı ve yerel olarak erişim varsa varsayılan olarak parola olmadığından eminim. Bundan farklı bir şey mi buluyorsun?

Bu çalışıyor mu?

#> mysqladmin -u root password ''

0

IDENTIFIED VIA unix_socketİfadesi yalnızca mariadb içindir.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED VIA unix_socket;

MySQL için de aynı şey başarılır IDENTIFIED WITH auth_socket.

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED WITH auth_socket;

Sadece iki kelimeden oluşan bir fark, ama gerçekten aynı değiller.

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.