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)

更新於: 30-Jul-2019

1K+ 瀏覽

開啟你的職業

完成課程後獲得認證

開始
廣告