2011-09-06 118 views
1

创建用户通过MySQL管理到mysql命令行连接,但无法登录mysql命令行在MySQL中,设置权限

下上线的建议,以root身份发出

grant all on *.* to new_user; 

它的工作,但安全明智的是一个烂摊子,所以发出

revoke all on *.* from new_user; 

现在new_user可以仍然连接,但安全性是健全的,如设置在MySQL管理员

对我来说这是彻底hocus-pocus。到底发生了什么,以及如何真正启用登录?

这似乎是一个MySQL管理员问题(谢谢@marco)。如果在mysql命令行中发出相同的GRANT,用户可以登录;但它的补助,局方颁发,用户无法日志中

为@marco指出,任何访问将授予给用户,例如,SELECT权限的MySQL登录访问 - 他们需要在msql命令行中输入。

+0

尝试在serverfault.com。而且您没有提供关于如何建立连接的基本信息 – ajreal

回答

1

这是因为当你第一次使用GRANT时,用户是自动创建的;当你撤销权限时,用户仍然是...
检查这个link

首先,您应该只给予您的用户他真正需要的权限。
第二:只允许用户访问他应该看到/处理的数据库或表。
例子:

GRANT SELECT,INSERT,UPDATE ON mydb.* TO 'jeffrey'@'localhost'; 

GRANT SELECT ON db2.invoice TO 'jeffrey'@'localhost' 
IDENTIFIED BY PASSWORD 'sdsd'; 

编辑:
只是为了证明我在说什么:
输入mysql的控制台(mysql -u root -p),然后键入

USE mysql; 
SELECT * FROM user; 

呦你会看到MySql里面有用户。
那么,现在使用GRANT就像你对一个还不存在的用户那样;然后重复SELECT * FROM user;:您将看到新的用户创建!

+0

以为用户是在MySQL Administrator中创建的。当然,在那里设置的特权正确无误。 –

+0

也认为'创建用户'被用来创建用户 –

+0

@cc young:是的,你可以使用'CREATE USER'创建用户;无论如何,当你使用'GRANT'如果用户存在特权分配给他,否则用户被创建和权限分配。尝试猜测:) – Marco