Cha*_*les 4 mysql mysql-error-1044
当我连接到我的服务器(来自不同的机器)时
Error Code: 1044 Access denied for user 'username'@'%' to database 'dbname'
Run Code Online (Sandbox Code Playgroud)
当我尝试创建一个函数.但是当我看到我的权限时
SHOW GRANTS FOR CURRENT_USER;
Run Code Online (Sandbox Code Playgroud)
我明白了
'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'
Run Code Online (Sandbox Code Playgroud)
特别是,这包括CREATE ROUTINE.为什么我不能发挥作用?我怎么能改变它呢?
我认为有一个CREATE FUNCTION是独立的CREATE ROUTINE.但无论如何,既然看起来您的用户仍然可以100%完全访问,那么您可以这样做:
GRANT ALL PRIVILEGES ON *.* TO user@'%' INDENTIFIED BY 'password' WITH GRANT OPTION
Run Code Online (Sandbox Code Playgroud)
但是我会注意到将'%'设置为'localhost'并且只能以这种方式从本地计算机(或至少是可信IP)访问数据库会好得多.缺乏安全性可能会给您带来麻烦.
绝对不要使用此用户/密码从Web脚本连接到数据库!
编辑 我忘了:必须在全球范围内授予例程和函数.添加.尝试将授权添加到表本身,这就是为什么它不起作用.尝试:
GRANT ALTER ROUTINE,CREATE ROUTINE, EXECUTE ON * TO user@'%' IDENTIFIED BY 'password'
Run Code Online (Sandbox Code Playgroud)
这里有更长的描述:http://dev.mysql.com/doc/refman/5.0/en/grant.html