Passando as credenciais do mysql para o pt-stalk sem tê-las visíveis na linha de comando

1

Estou tentando implementar o pt-stalk com um script de inicialização, mas estou tendo dificuldades em obter as credenciais do mysql no script sem colocá-las na seção MYSQL_OPTS para o lançamento do pt-stalk. [ Documentação ]

Normalmente, nos servidores, temos /root/.my.cnf contendo as credenciais de administrador para essa máquina, mas não importa se eu defino o HOME var no script explicitamente como /root no script de inicialização pt-stalk falha ao iniciar porque o utilitário CLI do mysql não consegue localizar as credenciais.

Eu examinei a página man, mas não consigo encontrar nada que me permita especificar um arquivo de credenciais para usar em vez de colocar tudo como argumentos de linha de comando.

O script de inicialização em questão:

#!/usr/bin/env bash
# chkconfig: 2345 20 80
# description: pt-stalk
### BEGIN INIT INFO
# Provides: pt-stalk
# Required-Start: $network $named $remote_fs $syslog
# Required-Stop: $network $named $remote_fs $syslog
# Should-Start: pt-stalk
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
### END INIT INFO

export HOME=/root
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON="/usr/bin/pt-stalk"
DAEMON_OPTS="--config /etc/pt-stalk.conf"
NAME="pt-stalk"
DESC="pt-stalk"
PIDFILE="/var/run/${NAME}.pid"
STALKHOME="/var/lib/pt-stalk"

test -x $DAEMON || exit 1

[ -r /etc/default/pt-stalk ] && . /etc/default/pt-stalk

#. /lib/lsb/init-functions

sig () {
    test -s "$PIDFILE" && kill -$1 'cat $PIDFILE'
}

start() {
  if [[ -z $MYSQL_OPTS ]]; then
HOME=$STALKHOME $DAEMON $DAEMON_OPTS
  else
HOME=$STALKHOME $DAEMON $DAEMON_OPTS -- $MYSQL_OPTS
  fi
return $?
}

stop() {
  if sig TERM; then
    while sig 0 ; do
      echo -n "."
      sleep 1
    done
    return 0
  else
    echo "$DESC is not running."
    return 1
  fi
}

status() {
  if sig 0 ; then
    echo "$DESC ('cat $PIDFILE') is running."
    return 0
  else
    echo "$DESC is stopped."
    return 1
  fi
}

log_begin_msg() {
        echo $1
}

log_end_msg() {
        if [ $1 -eq 0 ]; then
           echo "Success"
        else
           echo "Failure"
        fi
}

case "$1" in
  start)
   log_begin_msg "Starting $DESC"
   start
   log_end_msg $?
   ;;

  stop)
   log_begin_msg "Stopping $DESC"
   stop
   log_end_msg $?
   ;;
  status)
    status ;;

  restart)
    log_begin_msg "Restarting $DESC"
    stop
    sleep 1
    start
    log_end_msg $?
    ;;

  *)
    echo "Usage: $0 {start|stop|status|}" >&2
    exit 1
    ;;
esac

Originalmente de GitHub com um par menor mudanças.

    
por Sammitch 20.08.2013 / 19:21

1 resposta

2

O exemplo nesta página parece sugerir para passar o --defaults-file=./my.default.cnf como uma opção para o pt-stalk.

Portanto, atualize sua variável $MYSQL_OPTS para ter isso como um valor, provavelmente dando o caminho absoluto para você um arquivo de configuração mysql (.my.cnf) armazenado em algum lugar que o comando pt-stalk possa ler.

    
por 20.08.2013 / 22:39