185 votes

Comment créer une base de données à partir d'une commande shell ?

Je suis à la recherche de quelque chose comme createdb dans PostgreSQL ou toute autre solution qui me permettrait de créer une base de données à l'aide d'une commande shell. Des pistes ?

231voto

Felix Kling Points 247451

Vous voulez dire dans l'environnement mysql ?

create database testdb;

Ou directement à partir de la ligne de commande :

mysql -u root -e "create database testdb";

12 votes

Mysql -u Root -e "create database testdb" ; C'est ce que je recherchais :) merci

3 votes

Si vous avez un mot de passe, ajoutez simplement -p. Après avoir appuyé sur entrée, votre mot de passe vous sera demandé. L'exemple suivant est un exemple utilisant mon utilisateur qui est Root (changez-le si vous avez un autre nom d'utilisateur) et il utilise également le nom "oc_local" pour la base de données (changez-le si vous voulez que votre base de données soit appelée d'une manière différente)------> mysql -u Root -p -e "create database oc_local" ;

1 votes

Salut @koszikot -- si c'est ce que vous cherchiez, vous devriez l'accepter comme la bonne réponse :-)

178voto

Kris Points 11892
cat filename.sql | mysql -u username -p # type mysql password when asked for it

Où filename.sql contient tout le sql pour créer votre base de données. Ou bien...

echo "create database `database-name`" | mysql -u username -p

Si vous ne voulez vraiment que créer une base de données.

2 votes

J'obtiens cette erreur ERROR 1046 (3D000) à la ligne 27 : Aucune base de données sélectionnée lorsque j'exécute la commande echo "create database databasename" | mysql -u -u username -p

0 votes

@keerthi : peut-être que votre utilisateur n'a pas de privilèges sur un schéma existant ?

2 votes

C'est parce qu'il y a deux -u drapeaux

74voto

user2041318 Points 1129

Si vous créez une nouvelle base de données, il est bon de créer un utilisateur avec des autorisations uniquement pour cette base de données (si quelque chose se passe mal, vous ne compromettrez pas le login et le mot de passe de l'utilisateur racine). Ainsi, l'ensemble ressemblera à ceci :

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'"

Où :
utilisateur de base est le nom de l'utilisateur ayant tous les privilèges (probablement le Root)
base_user_pass c'est le mot de passe pour base_user (le manque d'espace entre -p et base_user_pass est important)
nouvelle_db est le nom de la base de données nouvellement créée
nouvel_utilisateur_db est le nom du nouvel utilisateur avec accès uniquement à new_db
nouveau_pass_utilisateur_db c'est le mot de passe pour new_db_user

0 votes

Massive. Je viens juste d'ajouter cette superbe phrase dans les snippets de Dashdocs. Au cas où quelqu'un aurait un mot de passe Root avec des espaces : -p"root password here" fonctionne bien

41voto

karlingen Points 975
mysqladmin -u$USER -p$PASSWORD create $DB_NAME

Remplacez les variables ci-dessus et vous êtes prêt à utiliser cet oneliner. $USER est le nom d'utilisateur, $PASSWORD est le mot de passe et $DB_NAME est le nom de la base de données.

1 votes

Je suis revenu sur cette question des années plus tard et j'ai remarqué que je l'avais votée en haut :D

11voto

Lukáš Lalinský Points 22537

Vous pouvez utiliser SQL sur la ligne de commande :

echo 'CREATE DATABASE dbname;' | mysql <...>

Ou vous pouvez utiliser mysqladmin :

mysqladmin create dbname

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X