【发布时间】:2017-01-02 10:18:17
【问题描述】:
我有一个问题,当我尝试通过我的 Web 应用程序执行存储过程时,我看到以下错误
SQLSTATE[42000]: Syntax error or access violation: 1142 INSERT command denied to user 'elitecareers_admin'@'%' for table 'user'
为了清楚起见,这是我的存储过程
DELIMITER $$
CREATE PROCEDURE `sp_create_account`( username_param VARCHAR(40), email_param VARCHAR(60), pass_w VARCHAR(30), category_id TINYINT )
BEGIN
DECLARE salt VARCHAR(60);
DECLARE password_var VARCHAR(128);
SET salt = 'ELiCrs@4$^7EC%?';
SET salt = CONCAT( username_param, salt );
SET password_var = SHA2( CONCAT( pass_w, salt ), 0 );
INSERT INTO elite.user
( user_id, username, email, pass, active, date_joined, user_category_id )
VALUES
( DEFAULT, username_param, email_param, password_var, DEFAULT, DEFAULT, category_id );
END $$
DELIMITER ;
以下是用户 'elitecareers_admin'@'%' 的权限,在该权限下执行 Web 应用程序
我不明白如果用户对数据库拥有所有权限,那么为什么 mysql/maria 服务器会保留这些错误?
【问题讨论】:
-
也许你只需要
FLUSH PRIVILEGES; -
@Hackerman 不要把mysql的用户表和普通的用户表混在一起!
-
@Shadow 我不明白...你能详细说明一下吗?
-
在存储过程中您插入到elite.user,而授权适用于
elitecareers\_elite数据库。 2 个数据库名称不匹配。 -
执行
SHOW CREATE PROCEDURE sp_create_account \G查找创建过程的人以及“安全”是“调用者”还是“所有者”。
标签: mysql permissions mariadb