tables delete databases create cli mysql shell command-line freebsd

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 ..."