Executarea unei comenzi shell din cadrul unui client MySQL? (Programare, Mysql, Shell)

Programator Progress a intrebat.

În baza de date Oracle, comanda „host” poate fi utilizată pentru a rula comanda bash din fereastra de comandă a bazei de date. Există o comandă echivalentă cu „host” în mySql?

5 răspunsuri
Ayman Hourieh

Puteți utiliza comanda system comanda.

comanda de sistem, comanda !

Execută comanda dată folosind interpretorul de comenzi implicit.

Comanda system funcționează numai în Unix.

Exemplu:

system ls -l

Comentarii

  • Desigur, aceasta funcționează numai în clientul de linie de comandă MySQL. Nu și din serverul de baze de date în sine. –  > Por Peter Stuifzand.
  • Acest lucru funcționează din clientul CLI și, de asemenea, rulează pe instanța clientului și nu pe serverul MySQL. Rularea unui script shell pe serverul MySQL din interiorul MySQL este imposibilă și din motive întemeiate. –  > Por Rakmo.
Rory Larson

Rulez versiunea 5.0.95-log pe Linux. Prefațarea comenzii fie prin „system”, fie prin „!” funcționează pentru comenzile „pwd” și „ls -l”. Dacă încerc să schimb directorul folosind, de ex.

mysql> system cd /home/mydir

comanda pare să fie acceptată. Dar se pare că acest lucru nu face nimic, deoarece următoarele comenzi „pwd” și „ls -l” indică faptul că mă aflu în continuare în același director. Deci, se pare că există un stub de funcționalitate limitată construit pentru acest lucru, dar că nu avem de fapt acces complet la shell-ul sistemului.

Comentarii

  • Cred că nu este neapărat un stub, ci există un shell separat pe fiecare instanță de system comandă. așa că dacă le-ai putea lega cumva în lanț… –  > Por Ciprian Tomoiagă.
ʞɔɔıu

De fapt, este posibil să executați comenzi shell pe serverul pe care rulează mysqld prin intermediul unei conexiuni client (mai degrabă decât să executați comenzi pe mașina client local) folosind MySQL Proxy (derulați în jos până la secțiunea „Comenzi shell de la clientul MySQL” ).

chege

Într-o mașină linux ar trebui să puteți utiliza următorul exemplu

  1. ! clear – pentru a șterge ecranul
  2. ! ls – pentru a lista fișierele din directorul de lucru curent
  3. Practic, ar trebui să puteți rula orice comandă sau script folosind această sintaxă

NB: Adăugați o bară oblică inversă înainte de !

Comentarii

  • Acest lucru nu răspunde la întrebare, care se referă la modul de invocare a unui script SQL din promptul MySQL, nu din linia de comandă Linux. –  > Por codeforester.
  • @codeforester Vă rog să citiți din nou întrebarea și, dacă tot ați ajuns la ea, verificați și răspunsul „acceptat” 🙂 –  > Por Faisal.
Kevin_Kinsey

Ca o ajustare suplimentară, pe majoritatea sistemelor „‘nix” puteți face de fapt ceva de genul acesta:

mysql> system bash

Și să aveți la dispoziție întregul terminal. Acest lucru este deosebit de eficient dacă lucrați la cod în terminalul care face interfața cu MySQL; din shell, tastând „exit” vă va duce înapoi în monitorul/clientul MySQL, astfel încât puteți merge înainte și înapoi destul de ușor.

Evident, și alte shell-uri („mysql> system tcsh”) ar funcționa la fel de bine.

Tags:,