GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Stellen Sie über die Befehlszeile eine Verbindung zu MySQL her, ohne das Root-Passwort zu verwenden?

Lösung 1:

Sowohl für MySQL als auch für PostgreSQL können Sie Ihren Benutzer und Ihr Passwort in der lokalen Konfigurationsdatei angeben. .my.cnf für MySQL und .pgpass für PostgreSQL. Diese Dateien sollten sich in Ihrem Home-Verzeichnis befinden (d. h. ~/.my.cnf).

.my.cnf:

[mysql]
user=user
password=password

.pgpass:

host:port:database:user:password

Sie können hier einen Platzhaltereintrag haben, der ******* durch ein beliebiges Feld ersetzt.

PS:GEBEN SIE NIEMALS EIN PASSWORT AUF DER KOMMANDOZEILE AN! Mit ps lässt sich das gut sichtbar machen wenn Ihr System nicht so konfiguriert ist, dass Prozesse, die anderen Benutzern gehören, nicht angezeigt werden.

@thinice:Wenn Sie diese Dateien wirklich sicher erstellen möchten, sollten Sie Folgendes tun:

umask 077
touch .my.new.config
umask 022 # or whatever was your default

Auf diese Weise würde die Datei von Anfang an mit sicheren Berechtigungen erstellt und kein Lauscher hätte eine Chance, Ihr Passwort zu stehlen.

PostgreSQL weigert sich ohnehin, die Datei mit Berechtigungen über 0600 zu verwenden.

Lösung 2:

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

Wie führe ich eine Kommandozeile mit einem sicheren Passwort aus??benutze den Konfigurationseditor!!!

Ab mysql 5.6.6 können Sie das Passwort in einer Konfigurationsdatei speichern und dann cli-Befehle wie diesen ausführen ....

mysql --login-path=storedPasswordKey ....

--login-path ersetzt Variablen... Host, Benutzer UND Passwort. Ausgezeichnet richtig!

Lösung 3:

Setzen Sie das Passwort nicht in Anführungszeichen, da die Anführungszeichen sonst als Teil des Passworts betrachtet werden.

Lösung 4:

MYSQL_USER="root"
MYSQL_PASSWORD="PASSWORD"
DBNAME="DB_NAME"

mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -e "CREATE DATABASE $DBNAME;" 2> /tmp/error1

STATUS=$? 
if [ $STATUS -eq 0 ];
then 
    echo -e "Database '$DBNAME' is created"
elif (grep -i "^ERROR 1007" /tmp/error1 > /dev/null);
then
    echo -e "Database '$DBNAME' already exists"
else
    echo -e "Failed to create database '$DBNAME'"
fi

rm -r /tmp/error1 

Dies wird den Zweck erfüllen. Danke


Linux
  1. Setzen Sie ein MySQL-Root-Passwort zurück

  2. Gesamtgröße meiner Festplatte in Linux über die Befehlszeile ohne Root-Berechtigungen abrufen?

  3. Erlauben der automatischen Befehlsausführung als root unter Linux mit SSH

  4. Linux:Datum über die Befehlszeile festlegen

  5. Kennwort programmgesteuert ändern

So verbinden Sie sich mit MySQL über die Windows-Befehlszeile

Zwingen Sie Benutzer, das Root-Passwort anstelle ihres eigenen Passworts zu verwenden, wenn Sie den Sudo-Befehl verwenden

So ändern Sie das sudo-Passwort über die Befehlszeile unter CentOS 8

So setzen Sie das MySQL-Root-Passwort zurück

Wie man mit PHP eine Verbindung zu MySQL herstellt

Wie setze ich das MySQL 8.0-Root-Passwort auf Centos 7.x zurück?