Pegar senha errada

1

Eu escrevi um script que lida com todas as etapas para configurar um site em nosso servidor. O problema que estou encontrando é que, se alguém digitar a senha errada do MySQL, o script continuará e simplesmente ignorará a criação de um banco de dados. Eu quero que ele pare se a senha estiver incorreta, e peça novamente.

Como posso lidar com isso?

Aqui está o meu código -

read -s -p "Enter the MySQL password: " BASEPASS
mysql -u ${BASEUSER} -p${BASEPASS} <<CREATE_DB_QUERY
CREATE DATABASE IF NOT EXISTS ${NEWDB};
CREATE USER ${NEWUSER} IDENTIFIED BY '${NEWPASS}';
GRANT ALL ON ${NEWDB}.* TO ${NEWUSER};
CREATE_DB_QUERY

mysqldump --opt --user=${BASEUSER} --password=${BASEPASS} ${BASEDB} > ${SQLFILE}
mysql --user=${BASEUSER} --password=${BASEPASS} ${NEWDB} < ${SQLFILE}
rm ${SQLFILE}
    
por Kimberlie Davis 20.03.2018 / 02:30

1 resposta

1

Primeiro, verifique se você tem set -o errexit -o nounset na parte superior do script. Em seguida, percorra uma simples verificação até obter pelo menos uma senha válida:

while true
do
    read -s -p "Enter the MySQL password: " BASEPASS
    mysql -u "$BASEUSER" "-p${BASEPASS}" 'SELECT 1' && break
done

Além disso, Use More Quotes ™ !

    
por 20.03.2018 / 02:49