집 >데이터 베이스 >MySQL 튜토리얼 >SQL 함수를 phpMyAdmin으로 가져올 때 \'액세스가 거부되었습니다. 이 작업에 대한 SUPER 권한이 필요합니다\' 오류가 발생하는 이유는 무엇입니까?
오류: 액세스가 거부되었습니다. 이 작업에는 SUPER 권한이 필요합니다
SQL 함수를 phpMyAdmin으로 가져오려고 하면 "#1227 - 액세스가 거부되었습니다. 이 작업에 대해 SUPER 권한이 필요합니다."라는 오류 메시지가 나타날 수 있습니다. 이 오류는 실망스러울 수 있지만 해결 방법은 비교적 간단합니다.
SUPER 권한 이해
MySQL에서 SUPER 권한은 사용자에게 다음과 같은 권한을 부여하는 특별한 권한 수준입니다. 저장된 루틴 생성 및 수정을 포함한 고급 작업을 수행하는 능력. 기본적으로 일반 사용자는 SUPER 권한이 없습니다.
DEFINER 문 제거
귀하의 경우 DEFINER 문을 포함하면 문제가 발생합니다. SQL 쿼리. DEFINER 문은 생성된 함수를 소유할 사용자를 지정합니다. 지정된 사용자에게 SUPER 권한이 없으면 쿼리가 실패합니다.
이 문제를 해결하려면 phpMyAdmin으로 가져오기 전에 SQL 쿼리에서 DEFINER 문을 제거하세요. 이렇게 하면 SUPER 권한이 없어도 함수를 생성할 수 있습니다.
구분자 설정
또한 SQL 텍스트 아래에 구분자 필드를 설정하는 것이 중요합니다. phpMyAdmin의 상자. 이 필드는 SQL 문을 구분하는 데 사용되는 문자를 지정합니다. 기본적으로 세미콜론(;)이 구분 기호로 사용되지만 쿼리에 함수 정의 내에 세미콜론이 포함되어 있는 경우 다른 구분 기호를 선택해야 합니다.
DEFINER 문이 없는 쿼리 예시
다음은 DEFINER 문이 없는 SQL 쿼리의 예입니다.
/*!50003 DROP FUNCTION IF EXISTS `f_calc_gst` */;; /*!50003 SET SESSION SQL_MODE=""*/;; /*!50003 CREATE*/ /*!50003 FUNCTION `f_calc_gst`(p_ht decimal(15,3), p_province varchar(2)) RETURNS varchar(255) CHARSET utf8 begin declare res varchar(255); declare v_gst decimal(15,3); declare v_gst_formula varchar(255); select GST, GST_formula into v_gst, v_gst_formula from taxes_periods where NOW() between dt_debut and dt_fin and id_province = p_province; set v_gst_formula = replace(v_gst_formula, 'HT$', p_ht); set v_gst_formula = replace(v_gst_formula, 'GST%', v_gst); set res = concat('select round(', v_gst_formula, ',2) "gst"'); return res; end */;;
DEFINER 문을 제거하고 올바른 구분 기호를 설정하고 나면 SQL 쿼리를 가져올 수 있습니다. 액세스 거부 오류 없이 phpMyAdmin에 성공적으로 로그인했습니다.
위 내용은 SQL 함수를 phpMyAdmin으로 가져올 때 \'액세스가 거부되었습니다. 이 작업에 대한 SUPER 권한이 필요합니다\' 오류가 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!