Ich habe das folgende Bash-Skript, um mein Datenbankschema zu aktualisieren. Das Skript liest den Hostnamen und das Datenbankpasswort von der Befehlszeile.Mysql Kommandozeilen-Passwort mit Sonderzeichen funktioniert nicht
Das Problem ist hier, dass, wenn das Passwort alphanumerische ist z r00t dann Skript funktioniert. Wenn das Kennwort jedoch Sonderzeichen enthält, z. B. pa ** w0rd, funktioniert das Skript nicht und wird direkt beendet. Bitte hilf mir dabei. Vielen Dank.
#!/bin/bash
echo "Enter hostname."
read -p "Hostname [localhost]: " DB_HOST
DB_HOST=${DB_HOST:-localhost}
echo "Enter MySQL root password"
DB_PASS=
while [[ $DB_PASS = "" ]]; do
read -sp "Password: " DB_PASS
done
MYSQL="mysql --force --connect-timeout=90 --host=$DB_HOST -u root --password=${DB_PASS}"
# Apply schema updates. My DBName is "mydb"
# Upgrade schema file is stored in "mysql" folder
$MYSQL mydb -e exit > /dev/null 2>&1 && $MYSQL mydb < "../mysql/upgrade_schema_v.2.1.sql"
Ändern Sie das Passwort, um nur die Zeichen zu verwenden, die Sie kennen. Aus Sicherheitsgründen sollten Sie das Passwort dann länger machen. – Ben
Das Problem scheint wirklich zu sein, dass Sie versuchen, den Befehl als Zeichenfolge zu speichern. Bitte beachten Sie http://mywiki.wooledge.org/BashFAQ/050, um Code-Wiederholungen zu vermeiden, wäre es besser, hier eine Funktion anstelle einer Zeichenfolge zu verwenden, bei der Sie Schwierigkeiten haben, richtig zu zitieren. –