sql >> Databasteknik >  >> RDS >> Mysql

Hur loggar man in automatiskt i MySQL från ett skalskript?

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



  1. Reproducera com.mysql.jdbc.exceptions.jdbc4.CommunicationsException med en inställning av Spring, hibernate och C3P0

  2. Utökade evenemang för SSAS

  3. Ansluter till en MySQL-databas i .NET

  4. Varför kan jag inte använda en variabel som tabellnamn i en lagrad procedur?