Alternativa sätt att skriva dessa alternativ.
Du kan skriva
mysql -u "$MYSQL_ROOT" -p"$MYSQL_PASS" -e "SHOW DATABASES"
för att skicka tomma strängar som separata argument. Din kommentar nedan visar att klienten fortfarande kommer att be om ett lösenord. Förmodligen tolkar den det tomma argumentet som ett databasnamn och inte som lösenordet. Så du kan prova följande istället:
mysql --user="$MYSQL_ROOT" --password="$MYSQL_PASS" -e "SHOW DATABASES"
.my.cnf-fil
Men även om det finns ett sätt, skulle jag ändå föreslå att du använder en ~/.my.cnf
fil istället. Argument på kommandoraden ingår sannolikt i en processlista genererad av ps -A -ocmd
, så att andra användare kan se dem. .my.cnf
filen, å andra sidan, kan (och bör) göras läsbar endast av dig (med chmod 0600 ~/.my.cnf
), och kommer att användas automatiskt. Låt den filen inkludera följande rader:
[client]
user=root
password=
Sedan en enkel mysql -e "SHOW DATABASES"
kommer att räcka, eftersom klienten kommer att hämta sina referenser från den filen.
Se 6.1.2.1. Riktlinjer för slutanvändare för lösenordssäkerhet
för de olika sätten på vilka du kan ange ett lösenord, och deras respektive fördelar och nackdelar. Se 4.2.3.3. Använda alternativfiler
för allmän information om denna .my.cnf
fil