But isn't that insecure,
Non esiste una scala assoluta di "sicurezza", anzi non è nemmeno una proprietà vettoriale o scalare. (IT) La sicurezza consiste nel garantire che la tua tecnologia non faccia cose che non è destinata a fare - pur continuando a fare le cose che dovrebbe. Questo è un modo molto lungo di dire che avresti dovuto dirci qual è il modello di minaccia.
Tralasciando le molte domande su come la tua applicazione resiste alla pasword e se ha bisogno di una password e il fatto che il tuo metodo dipende dall'utente root non che ha una password ....
Il tuo metodo attuale esporrà la password (brevemente) ad altri utenti tramite 'ps' su Unix / Linux (e probabilmente qualcosa di simile su MSWindows - non ci hai detto su quale sistema operativo si trova, ma il tag 'bash' tipo di implica Unix / Linux). E se è stato eseguito direttamente dalla riga di comando, sarà presente nei registri di controllo e nella cronologia della shell, anche se hai detto che era in uno script. Esistono potenziali percorsi e pseudonimi che una terza parte potrebbe utilizzare (se ha accesso) per sovvertire il comportamento, anche se sta iniziando a diventare un po 'esoterico.
Quindi considerando solo il problema descritto isolatamente e vincolato dagli unici strumenti disponibili bash, quindi:
echo "grant all on database.* to 'user'@'localhost' identified by '$PW';" | mysql
è leggermente migliore (per impostazione predefinita, echo
è un built-in bash e quindi non avvia un nuovo processo con una riga di comando).