web-dev-qa-db-fra.com

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

Je cherche 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 allusions?

161
koszikot
cat filename.sql | mysql -u username -p # type mysql password when asked for it

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

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

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

164
Kris

Vous voulez dire quand l'environnement mysql?

create database testdb;

Ou directement depuis la ligne de commande:

mysql -u root -e "create database testdb"; 
201
Felix Kling

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 (en cas de problème, vous ne compromettez pas le nom d'utilisateur et le mot de passe de l'utilisateur root). Donc, tout 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ù:
base_user est le nom d'un utilisateur disposant de tous les privilèges (probablement la racine).
base_user_pass c'est le mot de passe de base_user (le manque d'espace entre -p et base_user_pass est important)
new_db est le nom de la base de données nouvellement créée.
new_db_user est le nom du nouvel utilisateur ayant accès uniquement à new_db.
new_db_user_pass c'est le mot de passe pour new_db_user

69
jmarceli
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.

36
karlingen

Utilisation

$ mysqladmin -u <db_user_name> -p create <db_name>

Vous serez invité à entrer votre mot de passe. Assurez-vous également que l'utilisateur mysql que vous utilisez dispose des privilèges pour créer une base de données.

18
Willa

La première et la deuxième réponse sont bonnes, mais si quelqu'un cherche à avoir un script ou si vous voulez un i.e dynamique (db/nom d'utilisateur/mot de passe dans variable), cliquez ici:

#!/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'";
11
Salah-1

Vous pouvez utiliser SQL sur la ligne de commande:

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

Ou vous pouvez utiliser mysqladmin :

mysqladmin create dbname
10
Lukáš Lalinský

Connectez-vous à la base de données à l'aide de l'utilisateur de base: mysql -u base_user -pbase_user_pass Et exécutez les instructions CREATE DATABASE, CREATE USER et GRANT PRIVILEGES.

Voici un assistant Web pratique pour vous aider avec vos déclarations www.bugaco.com/helpers/create_database.html

2
CaptZ-