Cara alternatif untuk menulis opsi ini.
Anda dapat menulis
mysql -u "$MYSQL_ROOT" -p"$MYSQL_PASS" -e "SHOW DATABASES"
untuk melewatkan string kosong sebagai argumen terpisah. Komentar Anda di bawah ini menunjukkan bahwa klien masih akan meminta kata sandi. Mungkin itu menafsirkan argumen kosong sebagai nama database dan bukan sebagai kata sandi. Jadi, Anda dapat mencoba yang berikut ini sebagai gantinya:
mysql --user="$MYSQL_ROOT" --password="$MYSQL_PASS" -e "SHOW DATABASES"
file .cnf saya
Tetapi bahkan jika ada cara, saya tetap menyarankan Anda menggunakan ~/.my.cnf
file sebagai gantinya. Argumen pada baris perintah kemungkinan disertakan dalam daftar proses yang dihasilkan oleh ps -A -ocmd
, sehingga pengguna lain dapat melihatnya. .my.cnf
file, di sisi lain, dapat (dan seharusnya) dibuat hanya dapat dibaca oleh Anda (menggunakan chmod 0600 ~/.my.cnf
), dan akan digunakan secara otomatis. Minta file itu menyertakan baris berikut:
[client]
user=root
password=
Kemudian mysql -e "SHOW DATABASES"
sudah cukup, karena klien akan mendapatkan kredensialnya dari file itu.
Lihat 6.1.2.1. Pedoman Pengguna Akhir untuk Keamanan Kata Sandi
untuk berbagai cara di mana Anda dapat memberikan kata sandi, dan kelebihan dan kekurangannya masing-masing. Lihat 4.2.3.3. Menggunakan File Opsi
untuk informasi umum tentang .my.cnf
ini berkas