Como instalar um despejo de banco de dados via Shell Script?

2

Eu tenho um dump de banco de dados Mysql. Eu quero instalá-lo com o Hudson através de um Shell Script em uma máquina Linux externa.

Como você pode pegar um script Mysql e executá-lo dentro de um banco de dados em outra máquina? Eu sei que posso transferir arquivos com o sftp e usar o ssh ao acessar outras máquinas manualmente, mas como automatizar tudo isso em um simples shell script?

    
por mico 12.07.2011 / 11:41

1 resposta

3
$ mysql -p$pass -u$user -h$otherhost $db < dumpfile

Isso pressupõe que dumpfile é texto de mysqldump , contendo instruções SQL brutas.

É importante que não haja espaço entre -p e a senha. (Eu suponho que você deseja login automático.) Se a senha não seguir imediatamente o -p , mysql interpreta a opção como significando que deve pedir interativamente a senha e trata o argumento de senha separado como o nome do banco de dados. p>

Para que isso funcione, $user deve ter permissão para efetuar login, descartar uma tabela, criar uma tabela e inserir linhas nessa tabela, tudo como um usuário remoto. O MySQL mantém permissões remotas e locais separadas para os usuários, então essa é uma armadilha fácil de cair. Como permitir um usuário remoto com tanta energia é um risco de segurança, convém usar o SSL ( --ssl* options) com mysql . Caso contrário, não sei se permitiria que um usuário remoto fizesse essas coisas.

    
por 12.07.2011 / 12:15