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 // mysql> DELIMITER ;
现在借助CALL命令调用存储过程-
mysql> call `Message`();
这将产生以下输出-
+-------------+ | Hello World | +-------------+ | Hello World | +-------------+ 1 row in set (0.00 sec)