Quantcast
Channel: 无尽思绪 » MySQL
Viewing all articles
Browse latest Browse all 5

MySQL security_type

$
0
0

碰到一个问题,用当前用户创建的sp, 当把数据库迁移到另外一个mysql server后,如果这个用户不存在,执行存储过程的时候,则提示”the specified user as definer ‘xxx@%’ doesn’t exist.”, google后发现,原来是mysql security_type问题。

1. 执行show procedure status,会看到security_type列

2. 通过如下命令修改:
[sql]
ALTER PROCEDURE new_proc1
CONTAINS SQL
SQL SECURITY INVOKER
COMMENT ”;
[/sql]
然后在执行show procedure status:

你会发现,security_type字段已经变成INVOKER了。

那么我们如何在创建的sp的时候直接定义sql security type呢?
[sql]
CREATE DEFINER = ‘root’@’%’ PROCEDURE new_proc1()
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY INVOKER
COMMENT ”
BEGIN

END;
[/sql]

注意上面的:SQL SECURITY INVOKER.

参考:http://dev.mysql.com/doc/refman/5.6/en/create-procedure.html


Viewing all articles
Browse latest Browse all 5

Trending Articles