buat database mysql dengan satu baris di bash

24

Apakah mungkin membuat database kosong dengan satu baris perintah di bash?

Upaya pemula saya gagal:

mysql -uroot $(create database mydatabase;)

Saya akhirnya harus

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

Jawaban:

32

Jawaban @ Nitrodist akan berhasil, tapi ini rekayasa masalah secara berlebihan. Klien baris perintah MySQL mendukung -eswitch yang sangat praktis , seperti:

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

Tentu saja Anda dapat mengganti SQL yang valid ke sana.

Kromey
sumber
maaf saya mengedit jawaban saya setelah beberapa penelitian lebih lanjut.
Nitrodist
5
Kutipan tidak diperlukanmysql -uroot -e "create database foo"
IanVaughan
1
Yap, menggunakan tanda kutip tunggal tambahan memberi saya sebuah 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. Tanpa mereka, itu bekerja dengan baik. Terima kasih @IanVaughan
leymannx
14

Menurut dokumentasi MySQL, mysqldapat mengambil perintah daristdin

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

Anda dapat menggunakan Proses Pergantian untuk mencapai ini:

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

atau Anda bisa hanya pipa ke stdindari mysqlbiasanya:

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

Tidak dapat menguji ini secara pribadi, tetapi saya pikir ini harus berhasil.

Sunting: Opsi lain adalah menggunakan -eopsi, yang ditentukan di sini , seperti:

shell> mysql -uroot -e "create database mydatabase;"
Nitrodist
sumber