Puncte:-1

Rularea unui shell bash folosind o parolă cu un job cron

drapel cn

Am un shell bash pentru a face copii de rezervă pentru o bază de date care necesită o parolă pentru ao deschide. Vreau să rulez pe un job cron, dar cum îl fac să ruleze automat fără a completa parola bazei de date?

Versiunea server ubuntu: 20.04.3 Versiunea Mysql: 8.0.26

Comanda pe care am incercat-o: mysqldump -u root -p „dbname” > backupname.sql când apăs pe Enter, sistemul îmi cere parola. cand scot -p, apare o eroare.

David avatar
drapel cn
Cum arată scenariul?
drapel cn
Ray
[this](https://dba.stackexchange.com/questions/72417/credentials-file-for-running-mysql-related-jobs-via-script) ajută?
drapel in
Dacă utilizați MySQL pe o versiune modernă a Ubuntu și nu ați suprascris în mod intenționat mecanismul de permisiuni al software-ului, atunci nu trebuie să furnizați o parolă atunci când faceți o copie de rezervă prin `mysqldump`. Contul de sistem `rădăcină` se va conecta la contul MySQL `rădăcină` fără o parolă, deoarece aceasta face parte din administrare
Rendiero avatar
drapel cn
@David Nu am scris încă comanda pentru că vreau să știu mai întâi cum să o fac
Rendiero avatar
drapel cn
@Ray se pare că ai introdus parola utilizatorului, nu parola bazei de date mysql
Rendiero avatar
drapel cn
@matigo Am încercat, dar sistemul cere să introduc parola bazei de date mysql
drapel in
Vă rugăm să [editați] întrebarea dvs. pentru a răspunde la aceste întrebări: (1) Ce versiune de Ubuntu rulați? (2) Ce versiune de MySQL rulați? (3) Ce *exact* ai încercat? (cu mostre de cod) â Până când se va răspunde la aceste trei întrebări, va fi aproape imposibil pentru cineva să ofere orice fel de soluție.
Rendiero avatar
drapel cn
@matigo L-am editat, mă poți ajuta?
Puncte:0
drapel in

Pentru a folosi mysqldump cu rădăcină MySQL, va trebui să prefixați comanda cu sudo:

sudo mysqldump database_name > backup.sql

Dacă doriți să rulați acest lucru printr-un job cron, atunci puteți face ceva de genul acesta:

0 3 * * * mysqldump database_name > /path/to/backups/backup.sql

Ca bonus, dacă doriți să comprimați acea copie de rezervă și ca numele fișierului să conțină data, puteți face ceva de genul acesta:

0 3 * * * mysqldump database_name | gzip > /path/to/backups/backup_$(data +\%Y-\%m-\%d).gz

Asigurați-vă că includeți necesarul --rutine și --declanșatoare opțiuni în dvs mysqldump comanda dacă baza de date conține fie proceduri stocate, fie declanșatoare.

Rendiero avatar
drapel cn
Multumesc, o sa incerc.
Puncte:0
drapel in

Practic, puteți fie să adăugați următoarele my.cnffişier

[mysqldump]
utilizator=mysqluser
parola=secret

Ca alternativă, puteți exporta următoarele înainte de a apela mysqldump

MYSQL_PWD=parola ta foarte secretă

Folosind -p parametrul așa cum ați încercat este descurajat din motive de securitate.

Mai multe informații și soluții extinse pe https://stackoverflow.com/questions/9293042/how-to-perform-a-mysqldump-without-a-password-prompt

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.