tạo cơ sở dữ liệu mysql với một dòng trong bash


24

Có thể tạo một cơ sở dữ liệu trống với một dòng lệnh trong bash không?

Những nỗ lực của người mới của tôi đã thất bại:

mysql -uroot $(create database mydatabase;)

Tôi cuối cùng phải

  • mysql -uroot
  • create database mydatabase;
  • exit;

Câu trả lời:


32

Câu trả lời của @ Nitrodist sẽ hoạt động, nhưng đó là vấn đề quá kỹ thuật. Máy khách dòng lệnh của MySQL hỗ trợ -echuyển đổi rất tiện dụng , như vậy:

mysql -uroot -e "create database 'foo'"

Tất nhiên bạn có thể thay thế bất kỳ SQL hợp lệ vào đó.


xin lỗi tôi đã chỉnh sửa câu trả lời của tôi sau một số nghiên cứu thêm.
Nitrodist

5
Các trích dẫn là không bắt buộcmysql -uroot -e "create database foo"
IanVaughan

1
Đúng, sử dụng dấu ngoặc đơn bổ sung đã cho tôi một ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''foo'' at line 1. Không có chúng nó hoạt động tốt. Cảm ơn @IanVaughan
leymannx

14

Theo tài liệu của MySQL, mysqlcó thể nhận lệnh từstdin

shell> mysql -uroot < script.sql > output.tab

Bạn có thể sử dụng Thay thế quy trình để thực hiện việc này:

shell> mysql -uroot <(echo "create database mydatabase;") 

hoặc bạn có thể chỉ đường ống nó vào stdintrong mysqlbình thường:

shell> echo "create database mydatabase;" | mysql -uroot

Không thể kiểm tra cá nhân này, nhưng tôi nghĩ rằng nó sẽ hoạt động.

Chỉnh sửa: Một tùy chọn khác là sử dụng -etùy chọn, được chỉ định ở đây , như vậy:

shell> mysql -uroot -e "create database mydatabase;"
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.