sql >> Database >  >> RDS >> Mysql

Hoe voer je een MySQL-opdracht uit vanuit een shellscript?

U moet de -p . gebruiken vlag om een ​​wachtwoord te verzenden. En het is lastig omdat je geen spatie mag hebben tussen -p en het wachtwoord.

$ mysql -h "server-name" -u "root" "-pXXXXXXXX" "database-name" < "filename.sql"

Als u een spatie gebruikt na -p het zorgt ervoor dat de mysql-client u interactief om het wachtwoord vraagt, en vervolgens interpreteert het het volgende opdrachtargument als een databasenaam:

$ mysql -h "server-name" -u "root" -p "XXXXXXXX" "database-name" < "filename.sql"
Enter password: <you type it in here>
ERROR 1049 (42000): Unknown database 'XXXXXXXX'

Eigenlijk geef ik er de voorkeur aan om de gebruiker en het wachtwoord op te slaan in ~/.my.cnf, zodat ik het helemaal niet op de opdrachtregel hoef te zetten:

[client]
user = root
password = XXXXXXXX

Dan:

$ mysql -h "server-name" "database-name" < "filename.sql"

Opnieuw uw opmerking:

Ik voer altijd mysql-commando's in batch-modus uit op de opdrachtregel en in shellscripts. Het is moeilijk om vast te stellen wat er mis is met je shellscript, omdat je het exacte script of de uitvoer van fouten niet hebt gedeeld. Ik stel voor dat je je oorspronkelijke vraag hierboven aanpast en voorbeelden geeft van wat er mis gaat.

Ook als ik problemen met een shellscript oplos, gebruik ik de -x vlag zodat ik kan zien hoe het elke opdracht uitvoert:

$ bash -x myscript.sh


  1. Een PHP-variabele opnemen in een MySQL-instructie

  2. SQL-query om een ​​lijst met getallen die overeenkomen met verschillende bereiken, te vertalen naar een lijst met waarden

  3. FOUT:relatie plaatsen bestaat niet Heroku db import

  4. Is het mogelijk om de tabelnaam als parameter in Oracle door te geven?