mysql -h host -u user -p<whatever> -e"quit"
Ini memungkinkan Anda untuk menggunakan string koneksi yang sama yang Anda gunakan untuk mengirimkan kueri ke server secara terprogram. Anda dapat menambahkan || exit 1
sampai akhir untuk keluar otomatis pada argumen yang tidak valid. Anda mungkin juga ingin mengalihkan stderr ke /dev/null
jika Anda tidak menyukai pesan kesalahan MySQL yang dibuat secara otomatis.
Anda dapat menggunakan perintah berikut (dengan asumsi bahwa Anda telah menyiapkan mysql di PATH Anda):
mysql -h host -u pengguna -p
Ganti saja host dan pengguna dengan nilai yang benar dan kemudian Anda akan dimintai kata sandi.
Jawaban @Phil dan Jawaban @Mr.Brownstone sudah cukup untuk pertanyaan Anda, jadi beri +1 untuk keduanya.
Untuk yang berikut ini, anggaplah Anda masuk dengan nama pengguna myuser
Setelah terhubung ke mysql, Anda harus menjalankan kueri berikut:
SELECT USER(),CURRENT_USER();
- USER() melaporkan bagaimana Anda mencoba mengautentikasi di MySQL
- CURRENT_USER() melaporkan bagaimana Anda diizinkan mengautentikasi di MySQL
Terkadang, mereka berbeda. Ini mungkin memberi Anda wawasan tentang mengapa Anda diizinkan masuk ke mysql.
Ini kueri lain yang perlu Anda jalankan:
SELECT CONCAT('''',user,'''@''',host,'''') dbuser,password
FROM mysql.user WHERE user='myuser';
Ini akan menunjukkan kepada Anda cara-cara di mana Anda diizinkan masuk sebagai myuser
.
Jika Anda melihat 'myuser'@'localhost'
, lalu Anda dapat mengautentikasi dari dalam Server DB.
Jika Anda melihat 'myuser'@'127.0.0.1'
dan tidak melihat 'myuser'@'localhost'
, maka Anda dapat mengautentikasi dari dalam Server DB lagi tetapi Anda harus menentukan --protocol=tcp
dari baris perintah.
Jika Anda melihat 'myuser'@'%'
, lalu Anda dapat melakukan login jarak jauh dari server mana pun.
Jika Anda melihat 'myuse'[email protected]'10.20.30,%'
, maka Anda dapat melakukan login jarak jauh hanya dari 10.20.30.% netblock.
Setelah Anda melihat apa yang dimiliki 'mysql.user' untuk pengguna Anda, Anda mungkin ingin mengizinkan atau membatasi myuser dari logggin dengan satu cara dan bukan yang lain.
Jika Anda hanya ingin memeriksa apakah kata sandi untuk myuser
adalah whateverpassword
, Anda dapat melakukan hal berikut:
SELECT COUNT(1) Password_is_OK FROM mysql.user
WHERE user='myuser'
AND password=PASSWORD('whateverpassword');
Anda dapat memeriksa dari baris perintah sebagai berikut:
PASSWORDISOK=`mysql -uroot -p... -ANe"SELECT COUNT(1) Password_is_OK FROM mysql.user WHERE user='myuser' AND password=PASSWORD('whateverpassword')"`
Jika Anda bukan root
dan ingin menguji pengguna saya saja, Anda dapat melakukan ini:
PASSWORDISOK=`mysqladmin -umyuser -pwhateverpassword ping | grep -c "mysqld is alive"`
Jika Anda mendapatkan 1, kata sandi untuk pengguna saya diverifikasi sebagai baik.