MySQL을 사용하여 저장된 함수를 사용하고 있습니다. 문제가 있습니다.MySQL 저장 프로 시저를 실행할 수 없습니다.
기능을 만들고 테스트 한 결과, 다른 사용자가 실행할 수있는 것처럼 보이지 않습니다. 설명서에서 EXECUTE 액세스 권한을 다른 사용자에게 부여해야하지만 충분하지 않은 것으로 보입니다. 내가 함께 내가 문제를 보여 믿는 스크립트의 몇 가지를 넣었습니다
:
# This script creates two databases with a stored function in each.
#
# On one database, tester in granted all privileges.
# On the other, tester only gets a few.
#
# We want to find the minimum privileges required to allow tester to execute the
# stored function.
#
# This script must be run by an administrative user, i.e. root
CREATE DATABASE test1;
DELIMITER $$
CREATE FUNCTION test1.foo() RETURNS VARCHAR(255) DETERMINISTIC
BEGIN
RETURN ('garp');
END$$
DELIMITER ;
GRANT ALL PRIVILEGES ON test1.* TO 'tester'@'localhost';
#
CREATE DATABASE test2;
DELIMITER $$
CREATE FUNCTION test2.foo() RETURNS VARCHAR(255) DETERMINISTIC
BEGIN
RETURN ('garp');
END$$
DELIMITER ;
GRANT EXECUTE ON PROCEDURE test2.foo TO 'tester'@'localhost';
및
# This script tests whether tester can access the stored functions
#
# It should be executed by tester
SELECT 'test1.foo(): ', test1.foo();
SELECT 'test2.foo(): ', test2.foo();
내가 두 번째 스크립트를 실행 실행
, 오류가 발생합니다 :$ mysql --user=tester --password=tester --skip-column-names < testScript2.sql
test1.foo(): garp
ERROR 1370 (42000) at line 6: execute command denied to user 'tester'@'localhost' for routine 'test2.foo'
나는 명백한 것을 놓치고 있다는 것에 의심의 여지가 없지만, 나는 그것이 무엇인지 알 수 없다. 첫 번째 스크립트에서 GRANT EXECUTE...
문에 잘못된 내용이 있고 작은 따옴표 사용에 대해 깊은 의심을 품고있는 것으로 상상합니다.하지만 배치와 배율 결합의 대부분을 성공없이 시도한 것을 상기합니다.
나는 내 실수를 지적 할 수있는 사람이라면 정말 고맙겠습니다.
참고로 나는 우분투에서 Server version: 5.1.67-0ubuntu0.10.04.1 (Ubuntu)
을 실행 중입니다.
감사합니다.
감사 숀. 나는 눈이 깜박 거리는 뭔가를 놓친다는 것을 알았다. – nurdglaw