sql >> Database >  >> RDS >> Mysql

Hoe automatisch inloggen in MySQL vanuit een shellscript?

Alternatieve manieren om deze opties te schrijven.

Je kunt schrijven

mysql -u "$MYSQL_ROOT" -p"$MYSQL_PASS" -e "SHOW DATABASES"

om lege tekenreeksen als afzonderlijke argumenten door te geven. Uw opmerking hieronder geeft echter aan dat de klant nog steeds om een ​​wachtwoord zal vragen. Waarschijnlijk interpreteert het het lege argument als een databasenaam en niet als het wachtwoord. U kunt dus in plaats daarvan het volgende proberen:

mysql --user="$MYSQL_ROOT" --password="$MYSQL_PASS" -e "SHOW DATABASES"

.my.cnf-bestand

Maar zelfs als er een manier is, raad ik je toch aan om een ​​~/.my.cnf te gebruiken bestand in plaats daarvan. Argumenten op de opdrachtregel zijn waarschijnlijk opgenomen in een proceslijst die is gegenereerd door ps -A -ocmd , zodat andere gebruikers ze kunnen zien. De .my.cnf bestand daarentegen kan (en zou) alleen door jou leesbaar moeten worden gemaakt (met behulp van chmod 0600 ~/.my.cnf ), en wordt automatisch gebruikt. Laat dat bestand de volgende regels bevatten:

[client]
user=root
password=

Dan een simpele mysql -e "SHOW DATABASES" is voldoende, omdat de klant zijn inloggegevens uit dat bestand haalt.

Zie 6.1.2.1. Richtlijnen voor eindgebruikers voor wachtwoordbeveiliging voor de verschillende manieren waarop u een wachtwoord kunt opgeven, en hun respectievelijke voor- en nadelen. Zie 4.2.3.3. Optiebestanden gebruiken voor algemene informatie over deze .my.cnf bestand



  1. Nul volgen

  2. Het datamodel voor belangrijke data

  3. Laravel | Unieke validatie waarbij clausule

  4. De functie lower() voor internationale tekens in postgresql