Come creare un database dal comando shell?


175

Sto cercando qualcosa di simile al creato in PostgreSQL o qualsiasi altra soluzione che mi consenta di creare database con l'aiuto di un comando shell. Qualche suggerimento?

Risposte:


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

Dove nomefile.sql contiene tutto il sql per creare il database. O...

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

Se davvero vuoi solo creare un database.


2
Ottengo questo errore ERRORE 1046 (3D000) alla riga 27: Nessun database selezionato quando eseguo echo "crea database nome database" | mysql -u -u nome utente -p comando
keerthi

@keerthi: forse il tuo utente non ha privilegi su nessuno schema esistente?
Kris

2
È perché ci sono due -ubandiere
Stephen

@Kris Posso leggere il nome del database dal terminale e usare il valore della variabile come nome del database nella creazione del database.
CLIFFORD PY,

@Clifford: potresti usare uno script sh (ba) semplice usando normali argomenti di shell. ( stackoverflow.com/questions/23563043/shell-script-arguments ) Probabilmente merita una sua domanda.
Kris

214

Intendi mentre l'ambiente mysql?

create database testdb;

O direttamente dalla riga di comando:

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

11
mysql -u root -e "crea database testdb"; Questo è quello che stavo cercando :) grazie
koszikot

3
Se hai una password, aggiungi -p. Dopo aver premuto Invio, ti verrà chiesta la password. Quello che segue è un esempio che usa il mio utente che è root (cambiarlo se si dispone di un nome utente anoter) e utilizza anche il nome "oc_local" per il database (cambiarlo se si desidera che il proprio database venga chiamato in modo diverso) - ----> mysql -u root -p -e "crea il database oc_local";
Pablofiumara,

1
ciao @koszikot - se questo è quello che stavi cercando, dovresti accettarlo come risposta corretta :-)
thejohnbackes

1
Mi piace sapere cosa fanno le opzioni della riga di comando, per gli altri -e è la forma abbreviata di --execute = statement. Trova le opzioni della riga di comando qui dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html
Anthony,

70

Se si crea un nuovo database, è consigliabile creare un utente con autorizzazioni solo per questo database (se qualcosa va storto non si compromettono l'accesso e la password dell'utente root). Quindi tutto insieme apparirà così:

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

Dove:
base_user è il nome per l'utente con tutti i privilegi (probabilmente il root)
base_user_pass è la password per base_user (la mancanza di spazio tra -p e base_user_pass è importante)
new_db è il nome per il database appena creato
new_db_user è il nome per il nuovo utente con accesso solo per new_db
new_db_user_pass è la password per new_db_user


Massiccio. Ho appena aggiunto questa fantastica fodera agli snippet di dashdocs. Nel caso in cui qualcuno abbia una password di root con spazi: -p"root password here"funziona bene
hmedia1

37
mysqladmin -u$USER -p$PASSWORD create $DB_NAME

Sostituisci le variabili sopra e sei a posto con questo oneliner. $ USER è il nome utente, $ PASSWORD è la password e $ DB_NAME è il nome del database.


1
sono tornato a questa domanda molti anni dopo e ho notato che l'avevo votato: D
Isaac

20

Uso

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

Ti verrà richiesta la password. Assicurati anche che l'utente mysql che usi abbia i privilegi per creare il database.


12

La prima e la seconda risposta sono buone, ma se qualcuno è alla ricerca di uno script o Se si desidera una dinamica, ovvero (db / nome utente / password in variabile), qui:

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


2

Connettiti al DB utilizzando l'utente di base: mysql -u base_user -pbase_user_pass ed esegui le istruzioni CREATE DATABASE, CREATE USER e GRANT PRIVILEGES.

Ecco la pratica procedura guidata Web per aiutarti con le dichiarazioni www.bugaco.com/helpers/create_database.html

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.