Fazendo o mysql CLI me pedir uma senha interativamente

1

Eu uso o seguinte código como parte de um script muito maior:

mysql -u root -p << MYSQL
    create user '${DOMAIN}'@'localhost' identified by '${DOMAIN}';
    create database ${DOMAIN};
    GRANT ALL PRIVILEGES ON ${DOMAIN}.* TO ${domain}@localhost;
MYSQL

Como você pode ver, ele cria um usuário de banco de dados autorizado e privilegiado e uma instância de banco de dados com o mesmo valor (a senha também terá o mesmo valor).

DB user ====> ${domain}.
DB user password ====> ${domain}.
DB instance ====> ${domain}.

Isso é problemático porque preciso que a senha seja diferente. Claro, eu poderia mudar a senha manualmente de '$ {domain} depois que todo o script terminasse de ser executado, mas não é isso que eu quero:

O que eu quero é digitar / colar a senha diretamente na execução, interativamente .

Em outras palavras, quero que a solicitação da senha do usuário do DB seja parte integrante da execução do script.

Eu já tentei o seguinte código, que falhou:

mysql -u root -p << MYSQL
    create user '${DOMAIN}'@'localhost' identified by -p;
    create database ${DOMAIN};
    GRANT ALL PRIVILEGES ON ${DOMAIN}.* TO ${domain}@localhost;
MYSQL

Qual é o caminho certo para inserir uma senha interativamente, digitando / colando diretamente na execução do script (em vez disso, alterando-a manualmente após a execução do script)?

    
por Arcticooling 23.11.2017 / 19:38

1 resposta

4

Basta que o usuário armazene a variável antes com read :

echo "Please enter password for user ${domain}: "; read -s psw
mysql -u root -p << MYSQL
  create user '${domain}'@'localhost' identified by '${psw}';
  create database ${domain};
  GRANT ALL PRIVILEGES ON ${domain}.* TO ${domain}@localhost;
MYSQL 

Aqui, o comando read lê a entrada do usuário e a armazena na variável $psw . Observe que, logo após inserir o valor da senha, você será solicitado a fornecer a senha de root do MySQL para se conectar ao banco de dados MySQL ( -p flag = prompt de senha interativo).

    
por 24.11.2017 / 14:52