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 com todos os privilégios 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 terminar de ser executado, mas não é isso que eu quero:
O que eu quero é digitar/colar a senha direto na execução, de forma interativa .
Em outras palavras, quero que a solicitação da senha do usuário do banco de dados 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 é a maneira correta de inserir uma senha interativamente, digitando/colando diretamente na execução do script (em vez de alterá-la manualmente após a execução do script)?
Basta que o usuário armazene a variável de antemão com
read
:Aqui, o comando
read
lê a entrada do usuário e a armazena na$psw
variável. Observe que logo após inserir o valor da senha, você será solicitado a fornecer a senha root do MySQL para se conectar ao banco de dados MySQL (-p
flag = prompt de senha interativo).