(最初问StackOverflow,但有人build议,我问这里) – MySQL 5.1.41社区(Windows Server 2003) – .net /连接器6.1.3.0
我刚刚创build了一个新用户,而不是授予我仅授予特定表权限的模式特权。 换句话说,没有全局或模式级别的权限设置,只有权限设置为几个特定的表。 这似乎是一个完全可以接受的策略,并且从我准备好的MySQL将search:
获得适当的权限。 但是,当我尝试使用这个新的用户帐户打开到服务器的连接时,我收到权限被拒绝的错误。
访问拒绝用户'xxxxxx'@'%'到数据库'xxxxxxx'
我已经尝试了几个不同的客户端,结果是一样的。 我也检查了服务器日志,没有额外的细节,只是这个:
110816 10:23:15 543在xxxxxxxx上连接[email protected] 543初始数据库访问被拒绝,用户'xxxxx'@'%'到数据库'xxxxxxx'“
如果我授予SELECT的架构问题,我可以连接就好了。 我误解了权限系统的工作方式,还是应该像我想的那样工作?
如果将手动插入的用户添加到mysql.user中,则需要先运行flush privileges然后才能使用该用户login。 如果您使用GRANT创build用户,则会自动为您完成刷新。
这是一个插入示例:
INSERT INTO mysql.user (user, host, password) VALUES ('user', 'localhost', password('yourpassword'));
错误消息告诉你你需要知道什么:没有访问数据库。 如果不访问封闭的数据库,就不能访问表,所以给后者赋予适当的权限。 这就像被授予访问服务器上的文件,但拒绝访问服务器本身。