MySQL权限——可以';即使使用';创建例程';授予

MySQL权限——可以';即使使用';创建例程';授予,mysql,mysql-error-1044,Mysql,Mysql Error 1044,当连接到我的服务器(从不同的机器)时,我得到 当我尝试创建一个函数时。但是当我查看我的权限时 SHOW GRANTS FOR CURRENT_USER; 我明白了 特别是,这包括创建例程。为什么我不能做一个函数?我怎样才能更改它呢?我认为有一个创建函数与创建例程是分开的。但无论哪种方式,由于您的用户似乎拥有100%的完全访问权限,您可以执行以下操作: GRANT ALL PRIVILEGES ON *.* TO user@'%' INDENTIFIED BY 'password' WITH G

当连接到我的服务器(从不同的机器)时,我得到

当我尝试创建一个函数时。但是当我查看我的权限时

SHOW GRANTS FOR CURRENT_USER;
我明白了


特别是,这包括创建例程。为什么我不能做一个函数?我怎样才能更改它呢?

我认为有一个
创建函数
创建例程
是分开的。但无论哪种方式,由于您的用户似乎拥有100%的完全访问权限,您可以执行以下操作:

GRANT ALL PRIVILEGES ON *.* TO user@'%' INDENTIFIED BY 'password' WITH GRANT OPTION
不过,我要指出的是,最好将“%”设置为“localhost”,并仅从本地计算机(或至少是受信任的IP)以这种方式访问数据库。缺乏安全性可能会给你带来麻烦

绝对不要使用此用户/密码从web脚本连接到数据库

编辑 我忘了:例程和函数必须全局授予。添加。尝试将补助金添加到表本身,这就是它不起作用的原因。尝试:

GRANT ALTER ROUTINE,CREATE ROUTINE, EXECUTE ON * TO user@'%' IDENTIFIED BY 'password'

这里有一个较长的描述:

MySQL在尝试授予CREATE函数时出错。我授予了所有权限,现在当前用户授予的权限(根据当前_用户的显示授予)是
使用授予选项将**上的所有权限授予“用户名”@“%”由密码标识--“已删除”->,但我仍然无法创建函数(相同错误)。至于安全性:我没有使用本地主机上的脚本(请参阅我的第一行),但你关于限制这一点的建议似乎很好;也许我会把它限制在我的IP地址和本地主机上。我当然不是从网络脚本中使用它!好的,现在显示GRANTS已
使用GRANT选项
GRANT EXECUTE,CREATE ROUTE,ALTER ROUTION ON“dbname.”将*.x上的所有权限授予“用户名”@“%”由密码标识--“已删除”--,并将“用户名”@“%”更改为“用户名”
,但如果我尝试创建函数,仍然会遇到相同的错误。它不应该是“dbname”。*它应该是“*”。现在是2017年。如果有人最终在
mariadb
中遇到这个问题,请尝试
GRANT INSERT,CREATE ROUTINE ON mysql.*TO'user'@'localhost
。插入和创建例程似乎都是必需的。
GRANT ALL PRIVILEGES ON *.* TO user@'%' INDENTIFIED BY 'password' WITH GRANT OPTION
GRANT ALTER ROUTINE,CREATE ROUTINE, EXECUTE ON * TO user@'%' IDENTIFIED BY 'password'