¿Cómo crear una base de datos desde el comando shell?


Estoy buscando algo como createdb en PostgreSQL o cualquier otra solución que me permita crear una base de datos con la ayuda de un comando de shell. ¿Alguna pista?

Author: Roman Pokrovskij, 2010-03-11

8 answers

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

Donde el nombre del archivo.sql contiene todo el sql para crear su base de datos. O...

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

Si realmente solo desea crear una base de datos.

 146
Author: Kris,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-29 16:44:01

¿Te refieres al entorno mysql?

create database testdb;

O directamente desde la línea de comandos:

mysql -u root -e "create database testdb"; 
 180
Author: Felix Kling,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-11 20:27:50

Si crea una nueva base de datos, es bueno crear un usuario con permisos solo para esta base de datos (si algo sale mal, no comprometerá el nombre de usuario root ni la contraseña). Así que todo juntos se verá así:

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

Donde:
base_user es el nombre del usuario con todos los privilegios (probablemente el root)
base_user_pass es la contraseña para base_user (la falta de espacio entre-p y base_user_pass es importante)
new_db es el nombre de la nueva creación base de datos
new_db_user es el nombre del nuevo usuario con acceso solo para new_db
new_db_user_pass es la contraseña para new_db_user

 63
Author: jmarceli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-07-16 12:12:43
mysqladmin -u$USER -p$PASSWORD create $DB_NAME

Reemplace las variables anteriores y estará listo para usar este oneliner. USER USER es el nombre de usuario, PASSWORD PASSWORD es la contraseña y DB DB_NAME es el nombre de la base de datos.

 33
Author: karlingen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-02 07:52:22

Use

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

Se le pedirá la contraseña. También asegúrese de que el usuario de mysql que utiliza tiene privilegios para crear la base de datos.

 18
Author: Willa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-27 12:04:52

Puede usar SQL en la línea de comandos:

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

O puede utilizar mysqladmin:

mysqladmin create dbname
 7
Author: Lukáš Lalinský,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-11 20:26:41

La ist y la 2da respuesta son buenas, pero si alguien está buscando tener un script o si desea dinámico, es decir (db/nombre de usuario/contraseña en variable), entonces aquí:

#!/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'";
 7
Author: Salah-1,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-08 21:05:30

Conectarse a la base de datos usando el usuario base: mysql -u base_user -pbase_user_pass Y ejecute las sentencias CREATE DATABASE, CREATE USER y GRANT PRIVILEGES.

Aquí hay un práctico asistente web para ayudarlo con las declaraciones www.bugaco.com/helpers/create_database.html

 2
Author: CaptZ-,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-03 02:36:47