Izin pengguna MySQL tentang prosedur tersimpan

8

Saya telah membuat prosedur tersimpan sederhana:

mysql> CREATE FUNCTION hello (s CHAR(20))
    -> RETURNS CHAR(50) DETERMINISTIC
    -> RETURN CONCAT('Hello, ',s,'!');
Query OK, 0 rows affected, 1 warning (0.00 sec)

Tetapi gagal menjalankannya:

mysql> SELECT hello('world');
ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello'

Apakah mungkin nama pengguna saya adalah string kosong? Bagaimana cara membuat pengguna dan memberikan hak istimewa? Bisakah saya memberi pengguna semua hak istimewa pada semua entitas dalam database?

Adam Matan
sumber

Jawaban:

3

Seperti pesan kesalahan itu sendiri mengatakan bahwa pengguna tidak memiliki izin eksekusi.

mysql> SELECT hello('world');
ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello'

Anda harus memberikan Izin Eksekusi kepada pengguna tersebut. Untuk itu Anda harus masuk sebagai pengguna root dan memberikan izin sebagai

 grant execute on db.* to user@localhost;

Untuk pertanyaan Anda yang lain:

  1. Ya Ada kemungkinan bahwa nama pengguna Anda adalah string kosong tetapi tidak aman untuk membuat pengguna seperti ini.

  2. Untuk membuat dan memberikan hak istimewa secara singkat, lihat Tautan Ini.

  3. Ya, Anda dapat memberikan semua hak istimewa pada semua entitas dalam database . untuk ini, Anda dapat menjalankan perintah seperti

Login sebagai pengguna root dan berikan perintah

GRANT ALL ON DB_NAME.* TO 'USER'@'HOST' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Abdul Manaf
sumber