Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySql :Berikan opsi hanya baca?

Itu tergantung pada bagaimana Anda mendefinisikan "semua dibaca".

"Membaca" dari tabel dan tampilan adalah SELECT hak istimewa. Jika itu yang Anda maksud dengan "semua dibaca" maka ya:

GRANT SELECT ON *.* TO 'username'@'host_or_wildcard' IDENTIFIED BY 'password';

Namun, sepertinya yang Anda maksud adalah kemampuan untuk "melihat" segalanya, untuk "melihat tapi tidak menyentuh". Jadi, inilah jenis bacaan lain yang terlintas dalam pikiran:

Definisi "Membaca" dari view adalah SHOW VIEW hak istimewa.

"Membaca" daftar kueri yang sedang dijalankan oleh pengguna lain adalah PROCESS hak istimewa.

"Membaca" status replikasi saat ini adalah REPLICATION CLIENT hak istimewa.

Perhatikan bahwa salah satu atau semua ini mungkin mengungkapkan lebih banyak informasi daripada yang ingin Anda ungkapkan, bergantung pada sifat pengguna yang bersangkutan.

Jika itu bacaan yang ingin Anda lakukan, Anda dapat menggabungkan salah satu dari itu (atau yang lain dari hak istimewa yang tersedia ) dalam satu GRANT pernyataan.

GRANT SELECT, SHOW VIEW, PROCESS, REPLICATION CLIENT ON *.* TO ...

Namun, tidak ada hak istimewa tunggal yang memberikan beberapa subset hak istimewa lainnya, seperti yang Anda minta.

Jika Anda melakukan hal-hal secara manual dan mencari cara yang lebih mudah untuk melakukannya tanpa perlu mengingat hibah persis yang biasanya Anda buat untuk kelas pengguna tertentu, Anda dapat mencari pernyataan untuk membuat kembali hibah pengguna yang sebanding, dan mengubahnya untuk membuat pengguna baru dengan hak istimewa yang serupa:

mysql> SHOW GRANTS FOR 'not_leet'@'localhost';
+------------------------------------------------------------------------------------------------------------------------------------+
| Grants for [email protected]                                                                                                      |
+------------------------------------------------------------------------------------------------------------------------------------+
| GRANT SELECT, REPLICATION CLIENT ON *.* TO 'not_leet'@'localhost' IDENTIFIED BY PASSWORD '*xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' |
+------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

Mengubah 'not_leet' dan 'localhost' agar sesuai dengan pengguna baru yang ingin Anda tambahkan, bersama dengan sandi, akan menghasilkan GRANT yang dapat digunakan kembali pernyataan untuk membuat pengguna baru.

Tentu, jika Anda ingin satu operasi menyiapkan dan memberikan serangkaian hak istimewa terbatas kepada pengguna, dan mungkin menghapus hak istimewa yang tidak pantas, itu dapat dilakukan dengan membuat prosedur tersimpan yang merangkum semua yang ingin Anda lakukan. Di dalam isi prosedur, Anda akan membuat GRANT pernyataan dengan SQL dinamis dan/atau secara langsung memanipulasi tabel hibah itu sendiri.

Dalam pertanyaan terbaru tentang Database Administrators ini , poster menginginkan kemampuan bagi pengguna yang tidak memiliki hak untuk memodifikasi pengguna lain, yang tentu saja bukan sesuatu yang biasanya dapat dilakukan -- pengguna yang dapat memodifikasi pengguna lain, menurut definisi, bukanlah pengguna yang tidak memiliki hak -- namun - - prosedur tersimpan memberikan solusi yang baik dalam kasus itu, karena prosedur tersebut berjalan dengan konteks keamanan DEFINER mereka pengguna, mengizinkan siapa saja dengan EXECUTE hak istimewa pada prosedur untuk sementara mengambil hak istimewa yang ditingkatkan untuk memungkinkan mereka melakukan hal-hal spesifik yang diselesaikan prosedur.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Data database akses aplikasi C # windows tidak bertahan saat ditutup

  2. Array nilai meta serial WooCommerce di tabel wp_postmeta

  3. Penerusan port gelandangan untuk Mysql

  4. Instal beberapa instance MySQL di server Linux - gunakan file konfigurasi MySQL terpisah

  5. Apa string koneksi driver MySQL JDBC?