Alasan usaha Anda tidak berhasil adalah karena <
mengharapkan nama file dan Anda memberinya string. Anda harus melakukan sesuatu seperti
echo "YOURQUERYSTRINGHERE">tmpfile
mysql --host=localhost --user=user --password=password dbname <tmpfile
saran ken tentang
mysql --host=localhost --user=user --password=password -e "QUERY" dbname
dapat berfungsi, tetapi jika Anda mencoba menggunakan variabel bash dalam kueri Anda, Anda dapat gagal dalam ekspansi parameter. misalnya
QUERY="select * from $MYTABLE WHERE name=\"[email protected]\";"
mysql --host=localhost --user=user --password=password -e "$QUERY" mydbname
mungkin tidak melakukan apa yang Anda harapkan. Satu opsi adalah gunakan
echo "$QUERY"|mysql --host=localhost --user=user --password=password mydbname
yang berfungsi jika string kueri berisi kutipan yang sesuai. Opsi lainnya adalah dokumen "di sini" seperti yang disarankan oleh dogbane.
Coba gunakan dokumen di sini seperti ini:
mysql --host=localhost --user=user --password=password << END
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'jakdJxct8W';
CREATE DATABASE IF NOT EXISTS 'testuser_dev' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON 'testuser_dev' . * TO 'testuser'@'localhost';
CREATE DATABASE IF NOT EXISTS 'testuser_qa' DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL PRIVILEGES ON 'testuser_qa' . * TO 'testuser'@'localhost';
END
Atau tempatkan semua perintah Anda dalam file teks dan jalankan:
mysql --host=localhost --user=user --password=password < commands.sql
Coba seperti ini:
echo "select 1" | mysql
mysql --batch --silent -e 'SHOW TABLES';
Batch dan silent berguna jika Anda berencana menyalurkan output