如何解决MySQL 用户对存储过程的权限
由于错误消息本身表明
mysql> SELECT hello('world');
ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello'
您需要向该用户授予执行权限。为此,您需要
grant execute on db.* to user@localhost;
- 是的 您的用户名可能是一个空字符串,但这样创建用户是不安全的。
- 有关创建和授予权限的简要说明
- 是的,您可以授予 。为此,您可以执行如下命令
以 root 用户身份登录并发出命令
GRANT ALL ON DB_NAME.* TO 'USER'@'HOST' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
解决方法
我创建了一个简单的存储过程:
mysql> CREATE FUNCTION hello (s CHAR(20))
-> RETURNS CHAR(50) DETERMINISTIC
-> RETURN CONCAT('Hello,',s,'!');
Query OK,0 rows affected,1 warning (0.00 sec)
但未能运行它:
mysql> SELECT hello('world');
ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello'
我的用户名有可能是空字符串吗?如何创建用户并授予权限?我可以授予用户对数据库中所有实体的所有权限吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。