MySQL Stored Procedure Permissions cPanel & WHM

Tác giả admin+, T.Ba 13, 2011, 08:33:06 CHIỀU

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

MySQL Stored Procedure Permissions cPanel & WHM


1. Một điều thú vị mà mỗi ngày lại được khám phá ra đó là

Khi bạn chạy một đoạn kịch bản (scritp, code) để tạo bảng (tables), thủ tục lưu trữ nội (procedure)... trong phpMyAdmin trên cPanel, lúc đó bạn sẽ gặp một lỗi tương tự thế này :

Mã nguồn [Chọn]
execute command denied to user 'my_user'@'localhost' for routine 'my_database.MyProc'
Description: HTTP 500. Error processing request.

Stack Trace:

MySql.Data.MySqlClient.MySqlException: execute command denied to user 'my_user'@'localhost' for routine 'my_database.MyProc'
at MySql.Data.MySqlClient.MySqlStream.OpenPacket () [0x00000]
at MySql.Data.MySqlClient.NativeDriver.ReadResult (System.UInt64& affectedRows, System.Int64& lastInsertId) [0x00000]
at MySql.Data.MySqlClient.MySqlDataReader.GetResultSet () [0x00000]
at MySql.Data.MySqlClient.MySqlDataReader.NextResult () [0x00000]

Nhìn sơ sơ cũng có thể thấy liên quan đến permission

Thế này nhé:

Như hình trên thì phần thiết lập quyền cPanel 11 không thêm được quyền EXECUTE

Thực ra CREATE ROUTINE, ALTER ROUTINE, và EXECUTE được gán vào MySQL phiên bản 5.0.3 và có từ tháng 3/2005. Nhưng thực tế Cpanel 11 vẫn không thể làm cho người dùng thực hiện được việc này, mặc dù MySQL server phiên bản 5.0.77 đã có rồi.

Nếu bạn không là quản trị server thì liên hệ với quản trị cho việc này.
Bây giờ chỉ còn cách gán EXECUTE bằng tay với quyền root
Kết nối vào MySQL server với ROOT và gán EXECUTE cho user nào và database nào yêu cầu với lệnh sau:

Mã nguồn [Chọn]
GRANT EXECUTE ON my_database.* TO my_user@localhost;
Thể là xử lý được lỗi liền.

2. Liên quan đến việc này còn một điều thú vị nữa

Mã nguồn [Chọn]
1303 – can't create a PROCEDURE from within another stored routine
Lỗi trên cũng đơn gian nếu ai đó sử dụng phần mềm này rồi. Không cần thiết phải sử dụng phát biểu CREATE PROCEDURE khi sử dung Navicat. Navicat đã làm công việc này cho bạn rồi.