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

Kursor di Mysql memiliki hak selain pengguna?

Ya, secara desain, kursor dapat berperilaku berbeda dari SELECT yang sama query mungkin berperilaku jika dijalankan oleh pengguna yang memanggil prosedur.

Jika Anda tidak menentukan DEFINER saat Anda membuat program tersimpan (proc, fungsi, pemicu, atau peristiwa) atau tampilan, maka objek tersebut, saat diakses, berjalan dengan hak istimewa pengguna yang awalnya mendefinisikannya, bukan pengguna yang memanggilnya.

Anda memiliki tiga opsi, di sini:

  • Verifikasi atau mungkin ubah izin DEFINER saat ini pengguna jika sesuai; atau,
  • Tentukan DEFINER yang berbeda pengguna saat mendefinisikan program atau tampilan yang disimpan... Anda dapat melakukan ini selama Anda (orang yang membuat objek) memiliki SUPER hak istimewa, dan pengguna yang memanggil (mengakses) objek untuk sementara akan memiliki hak DEFINER tersebut pengguna sebagai gantinya; atau,
  • Tambahkan SQL SECURITY INVOKER ke definisi prosedur, fungsi, dan tampilan (meskipun bukan pemicu atau peristiwa), menyebabkan objek berjalan dengan hak istimewa pengguna yang memanggilnya, bukan definisi, yang merupakan perilaku default.

Untuk melihat izin yang dimiliki oleh definer yang ada, misalnya jika Anda melihat DEFINER=`someguy`@`localhost`:

mysql> SHOW GRANTS FOR 'someguy'@'localhost';

Anda dapat menemukan definisi saat ini dalam definisi prosedur, dengan SHOW CREATE PROCEDURE procedure_name; .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MYSQL pilih semua catatan di mana nama pengguna dan pasangan tanggal terjadi lebih dari sekali

  2. tampilkan gambar melalui imageurl di tampilan daftar

  3. php daftar data mysql dalam tabel html di kolom dan baris

  4. Rails 3 ActiveRecord:Pesan berdasarkan jumlah asosiasi

  5. Akankah polling dari SQL DB alih-alih file untuk aplikasi obrolan meningkatkan kinerja?