So veranlassen Sie, dass die MySQL-CLI mich interaktiv nach einem Kennwort fragt

So veranlassen Sie, dass die MySQL-CLI mich interaktiv nach einem Kennwort fragt

Ich verwende den folgenden Code als Teil eines viel größeren Skripts:

mysql -u root -p << MYSQL
    create user '${DOMAIN}'@'localhost' identified by '${DOMAIN}';
    create database ${DOMAIN};
    GRANT ALL PRIVILEGES ON ${DOMAIN}.* TO ${domain}@localhost;
MYSQL

Wie Sie sehen, werden ein autorisierter DB-Benutzer mit allen Berechtigungen und eine DB-Instanz mit demselben Wert erstellt (das Kennwort hat ebenfalls den gleichen Wert).

DB user ====> ${domain}.
DB user password ====> ${domain}.
DB instance ====> ${domain}.

Das ist problematisch, weil ich ein anderes Passwort brauche. Natürlich könnte ich das Passwort von `${domain} manuell ändern, nachdem das ganze Skript ausgeführt wurde, aber das ist nicht das, was ich will:

Ich möchte das Passwort direkt bei der Ausführung eingeben/einfügen.interaktiv.

Mit anderen Worten möchte ich, dass die Abfrage des Kennworts des DB-Benutzers ein integraler Bestandteil der Ausführung des Skripts ist.

Ich habe bereits den folgenden Code ausprobiert, der fehlgeschlagen ist:

mysql -u root -p << MYSQL
    create user '${DOMAIN}'@'localhost' identified by -p;
    create database ${DOMAIN};
    GRANT ALL PRIVILEGES ON ${DOMAIN}.* TO ${domain}@localhost;
MYSQL

Was ist die richtige Möglichkeit, ein Kennwort interaktiv einzugeben, indem es entweder direkt während der Skriptausführung eingegeben/eingefügt wird (anstatt es nach der Skriptausführung manuell zu ändern)?

Antwort1

Lassen Sie den Benutzer die Variable einfach vorher mit folgendem speichern read:

echo "Please enter password for user ${domain}: "; read -s psw
mysql -u root -p << MYSQL
  create user '${domain}'@'localhost' identified by '${psw}';
  create database ${domain};
  GRANT ALL PRIVILEGES ON ${domain}.* TO ${domain}@localhost;
MYSQL 

Hier readliest der Befehl die Benutzereingaben und speichert sie in der $pswVariable. Beachten Sie, dass Sie direkt nach der Eingabe des Kennwortwerts nach dem MySQL-Root-Kennwort gefragt werden, um eine Verbindung zur MySQL-Datenbank herzustellen ( -pFlag = interaktive Kennwortabfrage).

verwandte Informationen