shell script - cria um banco de dados mysql

4

Estou tentando criar um script de shell que:

  • conecte-se a um servidor remoto que tenha o MYSQL em execução
  • Em sucesso, execute "CREATE DATABASE foo;"

Até agora eu tentei:

#!/bin/bash
mysql -h 111.11.11.11 -u root -p'XXXXXXX'
mysql> CREATE DATABASE foo;

ou

echo "CREATE DATABASE foo;";

Mas sem sucesso.

Estou usando a linha de comando para executar o script de shell.

# sh create_mysql_database.sh

mas tudo o que faz é forçar o mysql a se conectar e esperar pela entrada e é isso.

Alguém sabe como realmente conseguir isso?

Server:
Centos 6.2
MySQL client version: 5.1.61

Obrigado, Alex

    
por Alex 12.07.2012 / 15:40

4 respostas

3

Em primeiro lugar, não deve haver um espaço entre -p e a senha real.

Em segundo lugar, até onde eu pude ver na documentação, você pode adicionar os comandos logo após a primeira parte, com a opção -e ativada.

O resultado final será assim:

#!/bin/bash
mysql -h 111.11.11.11 -uroot -pPASSWORD -e "CREATE DATABASE foo;"
    
por 12.07.2012 / 15:45
5

Id usa o comando mysqladmin para esse tipo de tarefa:

mysqladmin -u root -pPASSWORD create foo
    
por 12.07.2012 / 15:55
2

Você deve usar a opção -e, assim:

#!/bin/bash
mysql -h 111.11.11.11 -uroot -pPASSWORD -e "CREATE DATABASE foo;"

ou:

#!/bin/bash
SQL="CREATE DATABASE foo;"
mysql -h 111.11.11.11 -uroot -pPASSWORD <<<$SQL
    
por 12.07.2012 / 15:54
1

Acredite ou não, você pode criar um banco de dados sem fazer login no mysql.

Por exemplo, para criar um banco de dados chamado foo , tente o seguinte:

cd /var/lib/mysql
mkdir foo
chown mysql:mysql foo

e você está feito!

    
por 12.07.2012 / 18:10