Як створити базу даних з команди оболонки?


175

Я шукаю щось на зразок createdb в PostgreSQL або будь-яке інше рішення, яке дозволило б мені створити базу даних за допомогою команди shell. Якісь підказки?

Відповіді:


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

Де filename.sql містить всі sql для створення вашої бази даних. Або ...

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

Якщо ви дійсно хочете створити лише базу даних.


2
Я отримую цю помилку ПОМИЛКА 1046 (3D000) у рядку 27: База даних не обрана, коли я запускаю ехо "створити ім'я бази даних бази даних" | mysql -u -u username -p command
keerthi

@keerthi: можливо, ваш користувач не має привілеїв на жодній існуючій схемі?
Кріс

2
Це тому, що є два -uпрапори
Стівен

@Kris Чи можу я прочитати ім'я бази даних з терміналу і використовувати змінне значення як ім'я бази даних у створенні бази даних.
CLIFFORD PY

@Clifford: ви можете використовувати простий (ba) sh сценарій, використовуючи звичайні аргументи оболонки. ( stackoverflow.com/questions/23563043/shell-script-arguments ) Мабуть, це власне питання.
Кріс

214

Ви маєте на увазі, поки середовище mysql?

create database testdb;

Або безпосередньо з командного рядка:

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

11
mysql -u root -e "створити базу даних testdb"; Ось, що я шукав :) дякую
koszikot

3
Якщо у вас є пароль, просто додайте -p. Після натискання клавіші enter, вам буде запропоновано пароль. Нижче наведено приклад використання мого користувача, який є root (змінити його, якщо у вас є інше ім’я користувача), а також він використовує ім'я "oc_local" для бази даних (змініть його, якщо ви бажаєте, щоб ваша база даних по-іншому називалася) - ----> mysql -u root -p -e "створити базу даних oc_local";
pablofiumara

1
привіт @koszikot - якщо це те, що ви шукали,
сприйміть

1
Мені подобається знати, що роблять параметри командного рядка, для інших -e це коротка форма для --execute = оператор. Знайдіть параметри командного рядка тут dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html
Ентоні

70

Якщо ви створюєте нову базу даних, добре створити користувача з дозволами лише для цієї бази даних (якщо щось піде не так, ви не будете компрометувати логін та пароль root користувача). Тож все разом буде виглядати так:

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

Де:
base_user - це ім'я користувача з усіма привілеями (можливо, кореневим)
base_user_pass - це пароль для base_user (важливо відсутність місця між -p та base_user_pass)
new_db - це ім'я для новоствореної бази даних
new_db_user - це ім'я нового користувача з доступом тільки для new_db
new_db_user_pass - це пароль для new_db_user


Масивні. Щойно додав цей чудовий вкладиш до фрагментів dashdocs. У випадку, якщо хтось має корінний пароль із пробілами: -p"root password here"працює нормально
hmedia1

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

Замініть вище змінні, і вам добре пройти цей oneliner. $ USER - це ім'я користувача, $ PASSWORD - це пароль, а $ DB_NAME - ім’я бази даних.


1
повернувся до цього питання через багато років і помітив, що я його підтримав: D
Ісаак

20

Використовуйте

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

Вам буде запропоновано ввести пароль. Також переконайтеся, що користувач mysql, яким ви користуєтесь, має привілеї для створення бази даних.


12

Історія та друга відповідь хороші, але якщо хтось шукає сценарій або Якщо ви хочете динамічний, тобто (db / ім'я користувача / пароль у змінній), то тут:

#!/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

Підключення до БД за допомогою базового користувача: mysql -u base_user -pbase_user_pass І виконайте заяви CREATE DATABASE, CREATE USER та GRANT PRIVILEGES.

Ось зручний веб-майстер, який допоможе вам у заявах www.bugaco.com/helpers/create_database.html

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.