4

当连接到我的服务器(从另一台机器)时,我得到

Error Code: 1044 Access denied for user 'username'@'%' to database 'dbname'

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

SHOW GRANTS FOR CURRENT_USER;

我明白了

'GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, REPLICATION CLIENT, CREATE ROUTINE ON *.* TO ''username''@''%'' IDENTIFIED BY PASSWORD ''--stripped--'' WITH GRANT OPTION'

特别是,这包括 CREATE ROUTINE。为什么我不能做一个功能?我怎样才能改变它,所以我可以?

4

1 回答 1

6

我认为有一个CREATE FUNCTIONCREATE ROUTINE. 但无论哪种方式,因为看起来您的用户无论如何都拥有 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'

这里有更长的描述:http: //dev.mysql.com/doc/refman/5.0/en/grant.html

于 2010-10-22T14:55:39.690 回答