Μπορεί κάποιος να με συμβουλεύσει πώς να δημιουργήσω έναν χρήστη στην Oracle 11g και να δώσω σε αυτόν τον χρήστη τη δυνατότητα να εκτελεί μόνο μια συγκεκριμένη αποθηκευμένη διαδικασία και τους πίνακες της διαδικασίας αυτής.
Δεν είμαι πραγματικά σίγουρος πώς να το κάνω αυτό!
Συνδέστε ως SYSTEM.
CREATE USER username IDENTIFIED BY apassword;
GRANT CONNECT TO username;
GRANT EXECUTE on schema.procedure TO username;
Μπορεί επίσης να χρειαστεί να:
GRANT SELECT [, INSERT] [, UPDATE] [, DELETE] on schema.table TO username;
σε όποιους πίνακες χρησιμοποιεί η διαδικασία.
Η τεκμηρίωση της Oracle είναι πλήρης, διαδικτυακή και δωρεάν. Θα πρέπει να μάθετε να τη χρησιμοποιείτε. Μπορείτε να βρείτε τη σύνταξη για CREATE USER εδώ και για GRANT εδώ,
Για να συνδεθούμε στη βάση δεδομένων πρέπει να χορηγήσουμε σε έναν χρήστη το προνόμιο CREATE SESSION.
Για να επιτρέψουμε στον νέο χρήστη δικαιώματα σε μια αποθηκευμένη διαδικασία πρέπει να του παραχωρήσουμε το προνόμιο EXECUTE. Ο παραχωρών πρέπει να είναι ένα από τα παρακάτω:
Σημειώστε ότι κανονικά δεν χρειάζεται να εκχωρήσουμε δικαιώματα σε αντικείμενα που χρησιμοποιούνται από μια αποθηκευμένη διαδικασία προκειμένου να χρησιμοποιήσουμε τη διαδικασία. Το προεπιλεγμένο δικαίωμα είναι ότι εκτελούμε τη διαδικασία με τα ίδια δικαιώματα με τον ιδιοκτήτη της διαδικασίας και, κατά κάποιο τρόπο, κληρονομούμε τα δικαιώματά του κατά την εκτέλεση της διαδικασίας. Αυτό καλύπτεται από τη ρήτρα AUTHID. Η προεπιλογή είναι definer (δηλαδή ιδιοκτήτης της διαδικασίας). Μόνο αν το AUTHID έχει οριστεί ως CURRENT_USER (ο καλών, δηλαδή ο νέος μας χρήστης) χρειάζεται να παραχωρήσουμε δικαιώματα σε αντικείμενα που χρησιμοποιούνται από τη διαδικασία. Μάθετε περισσότερα.
CREATE USER USER_NAME IDENTIFIED BY PASSWORD;
GRANT CONNECT, RESOURCE TO USER_NAME;