Mysql
 sql >> Database >  >> RDS >> Mysql

Esecuzione del comando della shell da MySQL

Questa non è tanto una risposta alla domanda quanto una giustificazione per questo tipo di funzionalità, negando quindi coloro che direbbero "dovresti fare qualcos'altro" o "perché vorresti".

Ho un database su cui sto cercando di mantenere regole rigide:non voglio orfani da nessuna parte. I controlli di integrità referenziale mi aiutano con questo a livello di tabella, ma devo conservare alcuni dati come file all'interno del filesystem (questo è il risultato di un ordine diretto del mio capo di non archiviare dati binari nel database stesso).

La soluzione ovvia qui è avere un trigger che si attiva all'eliminazione di un record, che quindi elimina automaticamente il file esterno associato.

Ora, mi rendo conto che le UDF possono fornire una soluzione, ma sembra che molto lavoro C/C++ per eliminare semplicemente un file. Sicuramente le stesse autorizzazioni del database fornirebbero almeno alcuni sicurezza da potenziali assalitori.

Ora, mi rendo conto che potrei scrivere uno script di shell o qualcosa del genere che potrebbe eliminare il record della tabella e quindi eliminare il file correlato, ma ancora una volta è al di fuori del dominio del database stesso . Come mi disse una volta un vecchio istruttore "le regole del business dovrebbero riflettersi nelle regole del database". Come si può vedere chiaramente, non posso applicarlo usando MySQL.