Como alimentar automaticamente dois argumentos para programar após a inicialização? [duplicado]

0

Eu tenho este seguinte script que funciona bem no Ubuntu para iniciar e criar uma nova tabela para banco de dados MySQL:

echo "CREATE DATABASE database_name" | mysql -u root -p

Após este comando ser executado, o MySQL pede senha.

O único problema é que eu quero fazer isso no script bash do provisionamento vagrant, então eu tenho que automatizar o processo de inserir a senha. Eu basicamente tenho que dar uma única linha de entrada para o programa MySQL assim:

Enter password: password_goes_here

Como eu combino o processo de inserir o comando de criação do banco de dados e a senha como texto no programa?

    
por The amateur programmer 25.02.2016 / 08:03

2 respostas

3

A solução mais simples para essa pergunta específica é fornecer a senha nos parâmetros de comandos mysql da seguinte forma:

echo "CREATE DATABASE database_name" | mysql -u root --password=your_password

Isso fornece o mysql com a senha antes mesmo de perguntar por ele.

    
por 25.02.2016 / 08:43
2

@ A resposta do The-amateur-programmer é ótima, mas eu só queria adicionar uma coisa a ela. Se você está preocupado com a sua senha sendo visível quando alguém executa ps auxwww , você também pode alimentar a senha para o MySQL usando uma variável de ambiente chamada MYSQL_PWD :

mysql> set password for 'will@localhost' = PASSWORD('test');
Query OK, 0 rows affected, 1 warning (0.01 sec)

$ export MYSQL_PWD=test
$ mysql -uwill@localhost
Welcome to the MySQL monitor.

Esta, e outras opções, são explicadas aqui na documentação do MySQL .

    
por 25.02.2016 / 09:25