Bagaimana cara mengubah hak istimewa untuk pengguna MySQL yang sudah dibuat?

69

Saya mengerti cara membuat pengguna baru dengan hak istimewa, tetapi apa cara yang benar untuk mengubah hak istimewa bagi pengguna yang sudah dibuat?

Kami menjalankan audit DB dan beberapa pengguna memiliki cara lebih banyak akses yang diperlukan. Ditambah lagi, saya tidak tahu kata sandi untuk sebagian besar pengguna MySQL ini, jadi saya tidak ingin menghapusnya dan membuat yang baru.

Kopling
sumber

Jawaban:

107

Untuk membuat daftar pengguna:

select user,host from mysql.user;

Untuk menunjukkan hak istimewa:

show grants for 'user'@'host';

Untuk mengubah hak istimewa, cabut terlebih dahulu. Seperti:

revoke all privileges on *.* from 'user'@'host';

Kemudian berikan hak istimewa yang diinginkan:

grant SELECT,INSERT,UPDATE,DELETE ON `db`.* TO 'user'@'host';

Akhirnya, siram:

flush privileges;

Dokumentasi MySQL sangat bagus:

https://dev.mysql.com/doc/refman/8.0/id/access-control.html

Warner
sumber
3
Nah tanpa dicabut, itu akan menjadi hak dublicate;
Sergey
7
dokumentasi mysql hampir tidak dapat dibaca, jawaban ini jauh lebih baik
Timo Huovinen
Saya pikir (mencabut semua hak istimewa pada . Dari 'user' @ 'host';) harus (mencabut semua . Dari 'user' @ 'host';) Terima kasih,
Nicholas
1
jawaban ini jelas salah "flush privilege" tidak berlaku untuk privilege yang ditetapkan dengan hibah. proses di atas menghasilkan pengguna yang tidak memiliki hak istimewa sama sekali antara saat pencabutan dan permintaan hibah dijalankan, dan selain itu membilas cache hibah tanpa alasan __ ini akan berfungsi jika Anda melakukan kueri reguler terhadap tabel mysql.user daripada menggunakan hibah dan jika server tidak crash atau berhenti di antara permintaan.
skullnobrains