Aktivieren Sie den kennwortlosen Zugriff auf MySQL

15

Wie kann ich mein Passwort für MySQL löschen? Ich möchte kein Passwort haben, um eine Verbindung zur Datenbank herzustellen. Auf meinem Server läuft Ubuntu.

Yosef
quelle
Warum möchten Sie nicht ein Passwort?
John Gardeniers
Zum Beispiel stoße ich beim Ausführen von "dpkg-reconfigure phpmyadmin" auf Fehler. Es stoppt mit Fehler 1045, wobei der Zugriff verweigert wird. Root @ localhost "password: no" endet.
Lacek

Antworten:

29

Ich persönlich denke, stattdessen ist es besser, ein Passwort festzulegen und es in /root/.my.cnf zu speichern:

Zuerst:

mysqladmin -u root password 'asdfghjkl'

Bearbeiten Sie dann die .my.cnf-Datei von root:

[client]
password = asdfghjkl

Stellen Sie sicher, zu chmod 0600 .my.cnf.

Jetzt haben Sie ein Passwort, werden aber nicht mehr dazu aufgefordert. Meine Standardinstallation für MySQL-Server ist ein völlig zufälliges, eindeutiges Kennwort für jeden MySQL-Server, das in der Datei .my.cnf wie folgt gespeichert wird.

freiheit
quelle
1
Ich stimme voll und ganz der Einstellung Ihrer Umgebung zu, dass Sie automatisch authentifiziert werden, anstatt das Kennwort zu entfernen.
Zoredache
2
Möglicherweise müssen Sie dieses Kennwort in der Datei .my.cnf in Anführungszeichen setzen. Ohne hat es bei mir nicht funktioniert.
user67641
1
@ user67641: Könnte von der Version und dem Inhalt Ihres Passworts abhängen ... Meine sind alle lange, zufällige alphanumerische Zeichenfolgen (keine Sonderzeichen) und benötigen keine Anführungszeichen.
freiheit
2
Wenn Sie /root/.my.cnf erstellen müssen, sollten Sie explizit 0600-Berechtigungen dafür festlegen, um sicherzustellen, dass kein anderer Benutzer Snooping durchführen kann. Normalerweise können normale Benutzer nicht in / root absteigen, aber die zusätzliche Paranoia ist fast immer gerechtfertigt.
Dale Anderson
Fehlende mv ./+%Y%m%d. $ Db.sql $ OUTPUT` zwischen mysqldump und gzip
Siddharth
9

Wenn Sie ein Kennwort für MySQL festgelegt haben, befolgen Sie die Anweisungen unter Wiederherstellen des MySQL-Stammkennworts und setzen Sie Ihr Kennwort auf null:

Für 5.7.6 und höher

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

Für 5.7.5 und früher

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

* benötigt einen DB-Neustart (siehe Anweisungen am Link), damit dies wirksam wird.

sudo service mysql restart
Stefan Lasiewski
quelle
Vergessen Sie in diesem Fall nicht, die Berechtigungen zu löschen.
Marco Ramos
@meyosef - Bitte markieren Sie eine Antwort als beantwortet, wenn sie Ihr Problem gelöst hat (klicken Sie auf das grüne Häkchen unter der Anzahl der Stimmen).
Jneves
Ich dachte, ich könnte ein leeres Passwort nur für Unix-Sockets und nicht für Loopbacks verwenden, aber das ist nicht möglich. Das unix_socketPlugin macht etwas anderes.
Becken
9

Ja, weniger Passwörter können eine gute Sache sein. Öffnen Sie die Datenbank aber nicht nur für jedermann.

über unix_socket:

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

Dadurch erhalten Sie kennwortlosen Mysql-Zugriff für einen lokal angemeldeten Root-Benutzer. Btw. Dies ist die Standardeinstellung in den letzten Ubuntu / Debian-Versionen.

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

Erklärende Folien: https://www.slideshare.net/ottokekalainen/less-passwords-more-security-unix-socket-authentication-and-other-mariadb-hardening-tips .

Matthias Bloch
quelle
2
Willkommen bei SF! Schöne erste Antwort: klar, eine gute Zusammenfassung, ein Link für die weitere Erforschung, und es fügt etwas zum vorhandenen Korpus von Antworten hinzu. Ich freue mich sehr, Ihre erste Wahl zu sein, und ich hoffe, Sie bleiben hier, um weitere Antworten wie diese zu schreiben.
MadHatter unterstützt Monica am
Die Folien sind in Ordnung, aber dies ist die eigentliche Dokumentation: mariadb.com/kb/en/library/authentication-plugin-unix-socket
JonnyJD
5

Sie können auch tun:

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

Ich bin mir ziemlich sicher, dass es standardmäßig kein Passwort gibt, wenn Sie der Administrator sind und lokal darauf zugreifen. Finden Sie etwas anderes als das?

Funktioniert das?

#> mysqladmin -u root password ''
Djangofan
quelle