Ada*_*tan 8 mysql stored-procedures permissions users
我创建了一个简单的存储过程:
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)
Run Code Online (Sandbox Code Playgroud)
但未能运行它:
mysql> SELECT hello('world');
ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello'
Run Code Online (Sandbox Code Playgroud)
我的用户名可能是空字符串吗?如何创建用户并授予权限?我可以授予用户对数据库中所有实体的所有权限吗?
由于错误消息本身表明 用户没有执行权限。
mysql> SELECT hello('world');
ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello'
Run Code Online (Sandbox Code Playgroud)
您需要向该用户授予执行权限。为此,您需要以 root 用户身份登录并授予权限
grant execute on db.* to user@localhost;
Run Code Online (Sandbox Code Playgroud)
对于您的其他疑问:
是的,您的用户名可能是空字符串,但这样创建用户并不安全。
要简要创建和授予权限,请查看此链接。
是的,您可以授予 数据库中所有实体的所有权限。为此,您可以执行类似的命令
以 root 用户身份登录并发出命令
GRANT ALL ON DB_NAME.* TO 'USER'@'HOST' IDENTIFIED BY 'PASSWORD' WITH GRANT OPTION;
Run Code Online (Sandbox Code Playgroud)