MySQL remote root
Publicado por Allan Barcelos (última atualização em 08/06/2015)
[ Hits: 2.961 ]
Homepage: https://barcelos.dev
Download 6222.mysql-remot-root.tar.gz
Este script ajuda no incremento da segurança na conexão com usuario root remoto em servidores MySQL.
Sua função:
Limita o acesso root ao servidor MySQL ao IP do administrador mesmo que esse IP seja dinâmico para tal utiliza como apoio o serviço No-IP ou similiar.
São dois arquivos:
- mysql-remote-root - deve ser copiado para o diretório /etc/init.d/
- mysql-remote-root-daemon - deve ser copiado para o diretório /usr/local/bin/
Arquivo 1: mysql-remote-root
#!/bin/bash
#
#
#
########################################################################################################################
#
# Escrito por: Allan R. A. Barcelos (Uberaba - Minas Gerais).
# E-mail: allan@barcelos.tk
# Debian GNU/Linux 6.0.1
#
# NOME
# mysql-remote-root-daemon.sh
#
# DESCRIÇÃO
# Atualiza IP remoto para acesso ao MySQL utilizando usuário ROOT.
#
# VERSÃO
# 0.1
#
# NOTA
# Informações sobre a execução poderão ser encontradas em /var/log/mysql/mysql-remote-ip-root.log.
#
# Criando inicializadores para MySQL remote ROOT
# update-rc.d mysql-remote-root defaults
#
# MODIFICADO_POR (DD/MM/YYYY) Comentário
#
# allan.barcelos 01/06/2014 Primeira versão.
#
########################################################################################################################
typeset -x PID=$(pgrep mysql-remote)
LOCK=/tmp/mysql-remote-root-daemon.lock
do_start() {
if [ -f /tmp/mysql-remote-root-daemon.lock ]
then
/usr/local/bin/mysql-remote-root-daemon &
sleep 0.3
else
/usr/local/bin/mysql-remote-root-daemon &
sleep 0.3
typeset -x PID=$(pgrep mysql-remote
echo "Iniciando o mysql-remote-root-daemon: Processo: $PID"
fi
}
do_stop() {
kill -15 $PID 2>/dev/null &
rm $LOCK 2>/dev/null &
echo "Parando o mysql-remote-root-daemon"
}
do_restart() {
if [ -f /tmp/mysql-remote-root-daemon.lock ]
then
kill -15 $PID 2>/dev/null &
echo "Reiniciando o mysql-remote-root-daemon: Processo: $PID"
sleep 1
/usr/local/bin/mysql-remote-root-daemon &
else
do_start
fi
}
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_restart
;;
status)
if [ -f /tmp/mysql-remote-root-daemon.lock ]
then
echo "o mysql-remote-root-daemon está rodando com sucesso"
else
echo "o mysql-remote-root-daemon está parado"
fi
;;
*)
echo "*Modo de uso: /etc/init.d/mysql-remote-root (start|stop|restart|status)"
;;
esac
Arquivo 2: mysql-remote-root-daemon
#!/bin/bash
#
#
#
########################################################################################################################
#
# Escrito por: Allan R. A. Barcelos (Uberaba - Minas Gerais).
# E-mail: allan@barcelos.tk
# Debian GNU/Linux 6.0.1
#
# NOME
# mysql-remote-root-daemon.sh
#
# DESCRIÇÃO
# Atualiza IP remoto para acesso ao MySQL utilizando usuário ROOT.
#
# VERSÃO
# 0.1
#
# NOTA
# Informações sobre a execução poderão ser encontradas em /var/log/mysql/mysql-remote-ip-root.log.
#
#
# MODIFICADO_POR (DD/MM/YYYY) Comentário
#
# allan.barcelos 01/06/2014 Primeira versão.
#
########################################################################################################################
LOCK=/tmp/mysql-remote-root-daemon.lock
LOG=/var/log/mysql/mysql-remote-ip-root.log
YES=/tmp/on
MYSQL=/usr/bin/mysql
URL_NOIP="INFORME AQUI A URL NO-IP QUE ESTA SETADA NO COMPUTADOR QUE ESTA AUTORIZADO A ACESSAR COMO ROOT O SERVIDOR"
SENHA="SENHA DO USUARIO ROOT MYSQL"
DATETIME=$(/bin/date +"%d-%m-%Y %H:%M:%S")
#control_c () {
# echo -e "\nacabou o daemon"
# rm $YES 2>/dev/null
# rm $LOCK 2>/dev/null
# exit 0
#}
#trap control_c INT HUP TERM
echo "Iniciado o mysql-remote-root-daemon `date`" >> $LOG 2>/dev/null
if [ ! -f $LOCK ]
then
touch $LOCK
while true
do
sleep 30
if [ -f $YES ]
then
#echo "o arquivo $YES foi encontrado: `date`" >> $LOG
rm $YES 2>/dev/null
rm $LOCK 2>/dev/null
echo "Finalizado o mysql-remote-root-daemon `date`" >> $LOG 2>/dev/null
break
fi
/bin/ps -C mysqld > /dev/null #Verifica se o DAEMON MySQL esta ativo, caso contrario pode gerar erros.
if [ $? = 0 ]
then
##
IP=$(ping -w 1 -c 1 $URL_NOIP | grep PING | awk -F: '{print $1}' | awk -F "(" '{ print $2 }' | awk -F ")" '{ print $1}')
IP_COUNT=$($MYSQL -B -u root -p$SENHA --disable-column-names -e "SELECT COUNT(*) FROM mysql.user WHERE User = 'root' AND Host = '$IP'" mysql)
if [ $IP_COUNT == 0 ] ; then
OLD_IP=$($MYSQL -B -u root -p$SENHA --disable-column-names -e "SELECT Host FROM mysql.user WHERE User = 'root'\
AND Host REGEXP '^(((1[0-9]|[1-9]?)[0-9]|2([0-4][0-9]|5[0-5]))\.){3}((1[0-9]|[1-9]?)[0-9]|2([0-4][0-9]|5[0-5]))$' AND Host NOT LIKE '127%'" mysql)
if [ $OLD_IP != "" ] 2> /dev/null ; then
$MYSQL -u root -p$SENHA -e "DROP USER 'root'@'$OLD_IP'";
fi
$MYSQL -u root -p$SENHA -e "CREATE USER 'root'@'$IP' IDENTIFIED BY '$SENHA'";
$MYSQL -u root -p$SENHA -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'$IP' WITH GRANT OPTION";
echo "$DATETIME Novo IP Remoto ROOT MySQL $IP" >> $LOG 2>/dev/null
fi
##
fi
#echo "$DATETIME Sem alteracao" >> $LOG
done
else
echo "O mysql-remote-root-daemon já está em execução"
exit 0
fi
Autenticação automática no Speedy Home
Go Script - Inicia sessões ssh
Raiz Quadrada (Square Root) para Bash
Fazendo backup de uma pasta em arquivos separados
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
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
É normal não gostar de KDE? (9)
Linux é a solução para o fim do Windows10? (2)
Problemas com Driver NVIDIA (4)









