Frage Erlaube dem Benutzer linux root mysql root access ohne Passwort


Auf cPanel, wenn ich als root angemeldet bin und "mysql" ohne hostname und password eingib, bekomme ich direkten Zugriff auf mysql root user.

Ich möchte dies für einen meiner Nicht-cpanel-Server tun, wo der Linux-root-Benutzer eine Passwort-lose Anmeldung an mysql-root-Benutzer auf die gleiche Weise erhält wie auf cPanel.

Ist das möglich ?


21
2017-12-27 07:53


Ursprung




Antworten:


Am einfachsten ist es, einen Client-Abschnitt der Datei ~ / .my.cnf zu verwenden und die Anmeldeinformationen dort hinzuzufügen.

[client]
user=root
password=somepassword
...

Es ist eine gute Idee, diese Datei nur für root lesbar zu machen.


45
2017-12-27 08:16



Ja, das funktioniert und so macht cPanel es - user1066991
Ich muss auf ein potenzielles Sicherheitsproblem hinweisen. Sie müssen ein wenig vorsichtig sein, dass Sie dies nicht in der /etc/my.cnf die der mysql-Server zum Booten verwendet. Wenn Sie den mysql root-Benutzer in die /etc/my.cnf JEDER kann den mysql-Server mit ALLEN Rechten für jede Datenbank ohne Passwort benutzen. Iain zeigt auf den eigenen Shell-Benutzer .my.cnf in der Heimat der Wurzel, die natürlich korrekt ist. - Koen van der Rijt
Was passiert, wenn es keine ~ / .my.cnf Datei gibt? Wenn ich es erstelle und mysqld neu starte, soll ich das dann können? - Amalgovinus


Wenn Sie für mysql 5.7+ ein leeres Kennwort für die Ersteinrichtung festlegen, wird mysql automatisch verwendet auth_socket als eine Strategie. Ein Versuch, das Passwort zu aktualisieren, ohne die Strategie zu ändern, führt zu keinem Ergebnis. Sie können sich immer einloggen, ohne ein Passwort zu verwenden, wenn Ihr Benutzer es ist root.

Lösung Führen Sie den folgenden Befehl aus, um die Authentifizierungsstrategie zu ändern und das Passwort festzulegen

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'ANY_PASSWORD'

Referenz: https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/


14
2017-10-14 14:50



Ich musste am Ende eine leere Zeichenfolge hinzufügen, damit es funktioniert: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY ''; - kramer65


Ab MySQL 5.6.6 können Sie mit dem mysql_config_editor eine verschlüsselte Datei erstellen, die Sie automatisch anmeldet:

mysql_config_editor set --login-path=client --host=localhost --user=root --password

Geben Sie dann das Passwort ein, wenn Sie dazu aufgefordert werden.

Hinweis: Wenn Ihr Passwort "#" und möglicherweise andere Zeichen enthält, verwenden Sie zur Eingabe des Passworts einfache Anführungszeichen.


6
2017-12-22 21:48



Können Sie den Single-Quote-Kommentar näher erläutern? Sie werden nach dem Kennwort auf dem Terminal gefragt, wenn Sie das Kennwort in einfache Anführungszeichen setzen - user2299958
Ja, ich habe festgestellt, dass die Eingabe ohne Anführungszeichen nicht funktioniert, wenn Sonderzeichen vorhanden sind. Wenn Sie dazu aufgefordert werden, geben Sie einfach "(einfaches Anführungszeichen) und dann das Passwort ein". - Brian Deterling


Eine Datei erstellen, die nur das mysql root-Passwort enthält und nur root lesen kann.

# ls -l /root/.mysqlpw 
-rw------- 1 root root 7 2013-08-19 13:24 /root/.mysqlpw

Sie können eine Datenbank mit importieren

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase < databasedump.sql

oder verbinde dich mit deiner Datenbank und gib mysql-Befehle aus

# mysql -u root -p`cat /root/.mysqlpw ` yourdatabase
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 20460
Server version: 5.1.63-0ubuntu0.10.04.1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

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

mysql> show tables;
...

0
2018-01-02 12:20



Das ist viel mehr Arbeit als die andere Antwort. Und dein Passwort ist zu kurz. :) - Michael Hampton♦
Mach das nicht. Es setzt das Passwort auf die Kommandozeile, mit der jeder lesen kann ps(1) - camh