Como criar um banco de dados a partir do comando shell?
Estou à procura de algo como createdb no PostgreSQL ou qualquer outra solução que me permita criar banco de dados com a ajuda de um comando shell. Alguma pista?
8 answers
cat filename.sql | mysql -u username -p # type mysql password when asked for it
Onde está o nome do ficheiro.o sql contém todo o sql para criar o seu banco de dados. Ou...
echo "create database `database-name`" | mysql -u username -p
Se realmente só quiser criar uma base de dados.
create database testdb;
Ou directamente da linha de comandos:
mysql -u root -e "create database testdb";
Se criar uma nova base de dados, é bom criar um utilizador com permissões apenas para esta base de dados (se alguma coisa correr mal, não irá comprometer a autenticação e a senha do utilizador do root). Então tudo junto será assim:
mysql -u base_user -pbase_user_pass -e "create database new_db; GRANT ALL PRIVILEGES ON new_db.* TO new_db_user@localhost IDENTIFIED BY 'new_db_user_pass'"
Onde:
base_user é o nome de usuário com todos os privilégios (provavelmente a raiz)
base_user_pass é a senha para base_user (falta de espaço entre -p e base_user_pass é importante)
new_db é o nome para o recém - banco de dados criado
new_db_user é o nome do novo usuário com acesso apenas para new_db
new_db_user_pass é a senha para new_db_user
mysqladmin -u$USER -p$PASSWORD create $DB_NAME
Substitua as variáveis acima e está pronto para usar este oneliner. $USER é o nome do Usuário, $PASSWORD é a senha e $DB_NAME é o nome da base de dados.
Utilizar
$ mysqladmin -u <db_user_name> -p create <db_name>
Ser-lhe-á pedida a senha. Certifique-se também que o usuário mysql que você usa tem privilégios para criar banco de dados.
Pode usar SQL na linha de comandos:
echo 'CREATE DATABASE dbname;' | mysql <...>
Ou pode utilizar mysqladmin
:
mysqladmin create dbname
A IST e a segunda resposta são boas, mas se alguém estiver à procura de um programa ou se quiser um Ie dinâmico (db/utilizador / Senha na variável), então aqui:
#!/bin/bash
DB="mydb"
USER="user1"
PASS="pass_bla"
mysql -uroot -prootpassword -e "CREATE DATABASE $DB CHARACTER SET utf8 COLLATE utf8_general_ci";
mysql -uroot -prootpassword -e "CREATE USER $USER@'127.0.0.1' IDENTIFIED BY '$PASS'";
mysql -uroot -prootpassword -e "GRANT SELECT, INSERT, UPDATE ON $DB.* TO '$USER'@'127.0.0.1'";
Ligar ao DB usando o utilizador de base:
mysql -u base_user -pbase_user_pass
E executar criar banco de dados, criar declarações de privilégios de usuário e GRANT.