É assim que crio um MySQL autorizado, todos os usuários de banco de dados privilegiados e uma instância de banco de dados correspondente com o mesmo nome, diretamente do Bash:
echo "CREATE USER "${domain}"@"localhost" IDENTIFIED BY \"${dbup}\";" | mysql -u root -p"${dbrp}"
echo "CREATE DATABASE ${domain};" | mysql -u root -p"${dbrp}"
echo "GRANT ALL PRIVILEGES ON ${domain}.* TO ${domain}@localhost;" | mysql -u root -p"${dbrp}"
Os dois primeiros comandos poderiam ser mesclados em um comando de alguma forma?
Use um "Documento Here" também conhecido como heredoc . por exemplo:
Infelizmente,
mysql
ainda não suporta a reversão de CREATE USER ou CREATE DATABASE ou GRANT etc (faz um commit implícito para operações DDL), caso contrário, eu diria que você deve agrupar todos esses comandos dentro de uma transação (para que, se um falhar, eles todos falham e tudo volta ao que era).Por que não ainda mais simples? Uma fila não muito longa é suficiente para todas as três tarefas.
Quase nunca uso
create user
, é inútil do meu ponto de vista, a menos que você precise adicionar o mesmo usuário a muitos bancos de dados. Além disso, a concatenação com,;
como você pode ver, funciona muito bem.Remova
-v
para desativar a saída detalhada.