delete - show databases mysql ubuntu
Shell-una consulta de lĂnea (6)
Has probado
mysql -u root -pmy_password -D DATABASENAME -e "UPDATE `database` SET `field1` = ''1'' WHERE `id` = 1111;" > output.txt
(La parte > output.txt
se puede ignorar, pero será útil para ver lo que fue devuelto por la sentencia ejecutada al mirar el archivo).
Necesito ejecutar una consulta mysql en una línea usando bash.
Debería ser algo como esto:
mysql database --user=''root'' --password=''my-password'' < query.file
Pero en lugar de < query.file
, le gustaría usar una consulta en bruto como esta:
mysql database --user=''root'' --password=''my-password'' < UPDATE `database` SET `field1` = ''1'' WHERE `id` = 1111;
¿Es eso posible?
Normalmente prefiero Triple menos que su sintaxis y enfoque es similar a la redirección de archivos. Fácil de volver en el historial y modificar la consulta
mysql database --user=''root'' --password=''my-password'' <<< "UPDATE `database` SET `field1` = ''1'' WHERE `id` = 1111"
Se llama Here Strings in bash. Puede encontrar más información sobre ellos aquí http://linux.die.net/abs-guide/x15683.html
Es útil cuando desea canalizar una cadena a comandos.
Por lo general, escribir su contraseña en un comando es una mala idea (la gente puede leerla por encima del hombro, probablemente se almacena en su historial de shell, etc.), pero puede colocar sus credenciales en un archivo. Dándole al archivo un nombre que comienza con .
Lo hace oculto, lo que también es más seguro.
# .db.conf
[client]
database=myDatabase
user=myUserName
password=myPassWord
Asegúrese de que solo usted pueda leer el archivo:
chmod 600 .db.conf
Entonces llama a MySQL de esta manera:
mysql --defaults-extra-file=.db.conf -e "UPDATE database SET field1 = ''1'' WHERE id = 1111;"
o:
echo "UPDATE database SET field1 = ''1'' WHERE id = 1111;" | mysql --defaults-extra-file=.db.conf
Tenga en cuenta que --defaults-extra-file
debe ser la primera opción que se le proporcione a mysql
contrario se --defaults-extra-file
.
Si está ejecutando esto en un entorno de producción, sería mejor iniciar sesión en el shell mysql primero para no exponer sus detalles de db.
Una vez iniciada la sesión en el shell, ¿por qué no usar un archivo prepare.sql?
mysql -u usuario -p
A continuación, introduzca su contraseña de usuario
Ahora que ha iniciado sesión en el shell y puede ejecutar comandos de forma segura desde aquí:
mysql> usar DBNAME mysql> SOURCE file.sql
Así es como opero la línea de comandos con mis bases de datos para que mis contraseñas no aparezcan en los registros.
Usa echo
y una pipa:
echo "UPDATE `database` SET `field1` = ''1'' WHERE `id` = 1111;" | mysql database --user=''root'' --password=''my-password''
Usa la opción -e
:
$ mysql -e "UPDATE ..."