Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL 저장 프로시저 DEFINER=`root`@`%`가 localhost에서 작동하지 않습니까?

<시간/>

먼저 호스트를 확인해야 합니다. 호스트는 'localhost' 또는 '%'일 수 있습니다. 호스트로 사용자 계정의 존재를 확인하십시오 -

mysql> select user,host from MySQL.user;

이것은 다음과 같은 출력을 생성합니다 -

+------------------+-----------+
| user             | host      |
+------------------+-----------+
| Bob              | %         |
| User2            | %         |
| mysql.infoschema | %         |
| mysql.session    | %         |
| mysql.sys        | %         |
| root             | %         |
| @UserName@       | localhost |
| Adam Smith       | localhost |
| David            | localhost |
| James            | localhost |
| John             | localhost |
| John Doe         | localhost |
| User1            | localhost |
| am               | localhost |
| hbstudent        | localhost |
| mysql.infoschema | localhost |
| mysql.session    | localhost |
+------------------+-----------+
17 rows in set (0.00 sec)

이제 사용자 Bob의 정의자를 변경하고 호스트는 '%'입니다. 다음은 정의자로 저장 프로시저를 생성하는 쿼리입니다 -

mysql> DELIMITER //
   mysql> CREATE DEFINER=`Bob`@`%` PROCEDURE `Message`()
      BEGIN
        select "Hello World";
        END
        //
   Query OK, 0 rows affected (0.14 sec)
mysql> DELIMITER ;

이제 CALL 명령의 도움으로 저장 프로시저를 호출하십시오 -

mysql> call `Message`();

이것은 다음과 같은 출력을 생성합니다 -

+-------------+
| Hello World |
+-------------+
| Hello World |
+-------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.01 sec)