Làm thế nào để tạo một cơ sở dữ liệu từ lệnh shell?


175

Tôi đang tìm kiếm một cái gì đó như createdb trong PostgreSQL hoặc bất kỳ giải pháp nào khác cho phép tôi tạo cơ sở dữ liệu với sự trợ giúp của lệnh shell. Có gợi ý nào không?

Câu trả lời:


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

Trong đó filename.sql chứa tất cả sql để tạo cơ sở dữ liệu của bạn. Hoặc là...

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

Nếu bạn thực sự chỉ muốn tạo một cơ sở dữ liệu.


2
Tôi gặp lỗi này LRI 1046 (3D000) ở dòng 27: Không có cơ sở dữ liệu nào được chọn khi tôi chạy echo "tạo cơ sở dữ liệu tên tệp" | mysql -u -u tên người dùng -p lệnh
keerthi

@keerthi: có lẽ người dùng của bạn không có đặc quyền trên bất kỳ lược đồ hiện có nào?
Kris

2
Đó là bởi vì có hai -ulá cờ
Stephen

@Kris Tôi có thể đọc tên cơ sở dữ liệu từ thiết bị đầu cuối và sử dụng giá trị biến làm tên cơ sở dữ liệu trong cơ sở dữ liệu tạo.
CLIFFORD PY

@Clifford: bạn có thể sử dụng tập lệnh sh (ba) đơn giản bằng cách sử dụng các đối số shell thông thường. ( stackoverflow.com/questions/23563043/shell-script-argument ) Có lẽ xứng đáng với câu hỏi của riêng mình.
Kris

213

Bạn có nghĩa là trong khi môi trường mysql?

create database testdb;

Hoặc trực tiếp từ dòng lệnh:

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

11
mysql -u root -e "tạo cơ sở dữ liệu testdb"; Đó là những gì tôi đang tìm kiếm :) cảm ơn bạn
koszikot

3
Trong trường hợp bạn có mật khẩu, chỉ cần thêm -p. Sau khi nhấn enter, bạn sẽ được hỏi mật khẩu của mình. Sau đây là một ví dụ sử dụng người dùng của tôi là root (thay đổi nếu bạn có tên người dùng anoter) và nó cũng sử dụng tên "oc_local" cho cơ sở dữ liệu (thay đổi nếu bạn muốn cơ sở dữ liệu của mình được gọi theo cách khác) - ----> mysql -u root -p -e "tạo cơ sở dữ liệu oc_local";
pottaofiumara

1
hi @koszikot - nếu đây là những gì bạn đang tìm kiếm, bạn nên chấp nhận nó là câu trả lời đúng :-)
thejohnbackes

1
Tôi muốn biết các tùy chọn dòng lệnh làm gì, đối với người khác -e là dạng rút gọn cho câu lệnh --execute =. Tìm các tùy chọn dòng lệnh tại đây dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html
Anthony

70

Nếu bạn tạo một cơ sở dữ liệu mới, tốt nhất là tạo người dùng chỉ có quyền cho cơ sở dữ liệu này (nếu có gì sai, bạn sẽ không thỏa hiệp đăng nhập và mật khẩu của người dùng root). Vì vậy, mọi thứ cùng nhau sẽ trông như thế này:

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

Trong đó:
base_user là tên của người dùng với tất cả các đặc quyền (có thể là root)
base_user_pass đó là mật khẩu cho base_user (thiếu khoảng trống giữa -p và base_user_pass là quan trọng)
new_db là tên cho cơ sở dữ liệu mới được tạo
new_db_user là tên cho người dùng mới có quyền truy cập chỉ dành cho new_db
new_db_user_pass đó là mật khẩu cho new_db_user


To lớn. Chỉ cần thêm một lớp lót tuyệt vời này vào đoạn trích dashdocs. Trong trường hợp bất cứ ai có một mật khẩu gốc với không gian: -p"root password here"hoạt động tốt
hmedia1

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

Thay thế các biến ở trên và bạn tốt để đi với oneliner này. $ USER là tên người dùng, $ PASSWORD là mật khẩu và $ DB_NAME là tên của cơ sở dữ liệu.


1
đã trở lại câu hỏi này nhiều năm sau đó và nhận thấy tôi đã nâng cấp nó: D
Isaac

20

Sử dụng

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

Bạn sẽ được nhắc nhập mật khẩu. Cũng đảm bảo rằng người dùng mysql bạn sử dụng có đặc quyền để tạo cơ sở dữ liệu.


12

Câu trả lời thứ i và thứ 2 là tốt nhưng nếu bất cứ ai đang tìm kiếm một tập lệnh hoặc Nếu bạn muốn động tức là (db / tên người dùng / mật khẩu trong biến) thì ở đây:

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

10

Bạn có thể sử dụng SQL trên dòng lệnh:

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

Hoặc bạn có thể sử dụng mysqladmin:

mysqladmin create dbname

2

Kết nối với DB bằng cách sử dụng người dùng cơ sở: mysql -u base_user -pbase_user_pass Và thực hiện CREATE DATABASE, CREATE USER và GRANT PRIVILEGES.

Đây là trình hướng dẫn web tiện dụng để giúp bạn với các câu lệnh www.ormsaco.com/helpers/create_database.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.