Pernah anda mengalami error ketika melakukan perintah GRANT .. LANGUAGE C … di PostgreSQL ? kemungkinan pasti ada, saya pernah mengalami hal ini beberapa hari yang lalu. Awalnya membuat database yang hak aksesnya untuk user tertentu, dimana user tersebut harus bisa membuat fungsi yang LANGUAGE nya adalah C.
Saya ilustrasikan seperti ini.
Login sebagi superuser postgres ( = postgres )untuk membuat user baru:
>psql -Upostgres template1
template1=# create user milis with createdb nocreateuser encrypted password ‘milispwd’;
CREATE ROLE
template1=#
Buat database baru( yang membuat adalah user yang baru ditambahkan = milis):
>createdb –encoding=UTF8 -Umilis -W milis2
Sebagai superuser berikan perintah grant agar user milis memiliki akses ke LANGUAGE C:
template1=# grant all privileges on language c to milis with grant option;
jika anda beruntung maka tidka akan muncul pesan error apapun, tapi jika menjumpai error seperti ini
ERROR: language “c” is not trusted
HINT: Only superusers may use untrusted languages.
maka anda harus mengatur tabel pg_language,
template1=# update pg_language set lanpltrusted=true where lanname=’c';
kemudian berikan perintah GRANT seperti diatas
template1=# grant all privileges on language c to milis with grant option;
Sekarang user “milis” siap untuk membuat FUNCTION dengan LANGUAGE C.
Login sebagai user “milis” ke database “milis2″ yang sudah dibuat diatas,kemudian coba buat FUNCTION dengan LANGUAGE C.
>psql -Umilis milis2
milis2=> create function my_func_encrypt (bytea, bytea, text) returns bytea as
milis2-> ‘$libdir/pgcrypto’, ‘pg_encrypt’
milis2-> language ‘c’;
CREATE FUNCTION
milis2=> select my_func_encrypt(‘rahasia’, ‘hashRahasia’, ‘bf’);
my_func_encrypt
—————————-
\031\267\301\242\254\307-+
(1 row)milis2=>
Semoga bermanfaat.
Recent Comment