MySQL bash script
Publicado por Pedro Robson Leão 20/04/2009 (última atualização em 13/04/2015)
[ Hits: 12.987 ]
Download mysql.tar.bz2 (versão 2)
O script a seguir é um exemplo de estudo mostrando a possibilidade do que pode e não ser feito com shell script.
Criei uma biblioteca bash script para ser usada como interface MySQL de forma fácil e intuitiva. Espero que seja útil e estou a disposição para duvidas.
Pedro Robson Leão
Versão 2 - Enviado por Pedro Robson Leão em 09/04/2015
Changelog: Atualização da versão.
Não sei o que ocorreu mais a versão anterior estava errada.
Warning: Using a password on the command line interface can be insecure.
A mensagem acima foi incluída nas versões mais novas do MySQL e quebra o script.
::::::::::::::
include/mysql.sh
::::::::::::::
#!/bin/bash
# MySQL shell library
# Pedro Robson Leao - 2009/04/19
# pedro.leao@gmail.com
_DB_ERROR="";
_DB_ERROR_CODE=0;
_DB_RS_NEXT=1;
_DB_RS_COUNT=0;
function mysql_connect() {
local user=${1:-"root"};
local passwd=${2};
local db=${3:-"mysql"};
local host=${4:-"localhost"};
_DB_USER="${user}";
_DB_PWD="${passwd}";
_DB_HOST="${host}";
_DB="${db}";
}
function mysql_error() {
#ERROR 1046 (3D000) at line 1: No database selected
local error=$( echo ${1} | tr '£' ' ' );
if echo "${error}" | egrep -q "^ERROR [0-9]+ \([A-Za-z0-9]+\)" ; then
_DB_ERROR_CODE=$( echo ${error} | cut -d " " -f 2 );
_DB_ERROR=$( echo ${error} | cut -d : -f 2- );
else
false;
fi
}
function mysql_haserror() {
[ ${_DB_ERROR_CODE} -ne 0 ] && true || false;
}
function mysql_geterror() {
echo "${_DB_ERROR}";
}
function mysql_geterrno() {
echo "${_DB_ERROR_CODE}";
}
function mysql_execute() {
local line;
local ct=0;
while read line ; do
if [ ${ct} -eq 0 ] ; then
if mysql_error "${line}" ; then
#IFS=$OLDFS;
return;
else
_DB_COLUNS_NAME=( ${line} );
fi
else
_DB_RS[${ct}]="${line}";
fi
ct=$((ct+1));
done < <( mysql -u"${_DB_USER}" -p"${_DB_PWD}" -h"${_DB_HOST}" "${_DB}" -e "${1}" 2>&1 | tr ' ' '£' );
#done < <( mysql -u"${_DB_USER}" -p"${_DB_PWD}" -h"${_DB_HOST}" "${_DB}" -e "${1}" 2>&1 | sed s/'\t'/\"'\t'\"/g | sed s/$/\"/g | sed s/^/\"/g );
_DB_RS[${ct}]=;
_DB_RS_COUNT=${ct};
}
function mysql_count() {
echo "${_DB_RS_COUNT}";
}
function mysql_getfirst() {
_DB_RS_NEXT=1;
echo $( mysql_getnext );
}
function mysql_getnext() {
_DB_RS_NEXT=$((_DB_RS_NEXT+1));
}
function mysql_hasnext() {
[ ${_DB_RS_COUNT} -le $((_DB_RS_NEXT+1)) ] && return 1 || return 0;
}
function mysql_line() {
echo ${_DB_RS_NEXT};
}
function mysql_getfield() {
local size=${#_DB_COLUNS_NAME[@]};
local VCT=( ${_DB_RS[${_DB_RS_NEXT}]} );
if echo ${1} | egrep -q "^[0-9]+$" ; then
# pesquisa por numero do campo
[ ${1} -le ${size} ] && {
echo ${VCT[${1}]} | tr '£' ' ';
}
else
# pesquisa por nome do campo
local i;
for ((i=0;i<size;i++)) ; do
if [ "${1}" == "${_DB_COLUNS_NAME[$i]}" ] ; then
break;
fi
done
echo ${VCT[$i]} | tr '£' ' ';
fi
}
::::::::::::::
mysql_sample.sh
::::::::::::::
#!/bin/bash
source include/mysql.sh
#sample
mysql_connect root Germany information_schema;
mysql_execute "SELECT * FROM TABLES";
mysql_haserror && {
echo "$( mysql_geterrno ): $( mysql_geterror )";
exit;
}
mysql_getfirst;
echo "$(mysql_line) : $( mysql_getfield 0 )|$( mysql_getfield 1 )|$( mysql_getfield 2)|$( mysql_getfield 3)|$( mysql_getfield 4)|$( mysql_getfield 5)";
while mysql_hasnext ; do
mysql_getnext;
echo "$(mysql_line) : $( mysql_getfield TABLE_SCHEMA )|$( mysql_getfield ENGINE )|$( mysql_getfield TABLE_NAME )";
done
Gravar DVDs no Linux pelo Cron
Backup do banco de dados Postgresql
zsh: Sattolo's Random Cyclic Permutation
Script de backup para Gravador CD-R ou CD-Rw
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Atualizando o Fedora 42 para 43
Como saber se o seu e-mail já teve a senha vazada?
Como descobrir se a sua senha já foi vazada na internet?
Programa fora de escala na tela do pc (41)
\Boot sem espaço em disco (Fedora KDE Plasma 42) (5)
Preciso recuperar videos *.mp4 corrompidos (0)









