MySQL用户权限

MySQL用户权限,mysql,permissions,Mysql,Permissions,表上是否有任何权限或grant命令使用户无法删除其他用户插入的记录行。但允许他们删除或更新自己的记录吗 谢谢, Stephen不,这应该由运行在MySQL之上的应用程序来解决。不完全确定以下内容是否适用于您的情况,但我想我还是建议您这样做吧-也许它会有所帮助。您可以使用sql security definer为每个用户创建一个可更新的视图,该视图只选择这些用户的记录,并授予用户在视图上删除而不是从中选择的表的能力-使用sql security definer,用户应该能够从视图中删除,从而导致从

表上是否有任何权限或grant命令使用户无法删除其他用户插入的记录行。但允许他们删除或更新自己的记录吗

谢谢,
Stephen

不,这应该由运行在MySQL之上的应用程序来解决。

不完全确定以下内容是否适用于您的情况,但我想我还是建议您这样做吧-也许它会有所帮助。您可以使用sql security definer为每个用户创建一个可更新的视图,该视图只选择这些用户的记录,并授予用户在视图上删除而不是从中选择的表的能力-使用sql security definer,用户应该能够从视图中删除,从而导致从表中删除。您还必须在用户每次创建新记录时更新视图,否则视图在创建时将被冻结。请参阅文档了解和。

您应该使用编程语言实现acl。有些库喜欢使用php语言为u做这项工作。

谢谢Chuck,但是如果这些用户可以绕过应用层,在本地或远程访问mysql客户端命令,那该怎么办呢?老实说,您可能需要看看其他解决方案。我不知道有哪个数据库能做到这一点,但如果它们确实存在,我也不会感到惊讶。也许如果你给我更多的细节,我能帮上更多的忙。我的意思是我的用户正在远程使用桌面应用程序。因此,这不仅仅是一个localhost用户,我希望它始终是一个localhost。我给了他们更新和插入,是的,他们也可以更新其他用户的记录。谢谢Alex。这可能是一次尝试,但对我来说太难维持了。是否存在基于客户端接口的某种验证?@Stephen,MySQL有许多客户端接口,我知道没有一个可以执行您想要的细粒度授权检查,但即使您找到了一个,用户也可以使用另一个并绕过检查。只有服务器端强制才能真正起到作用,或者您可以用任何编程语言编写一个专用层,专门与服务器共存,这样就没有用户能够真正连接到MySQL数据库,只有您的专用层才能执行您所需的所有业务逻辑。如果你选择这条路线,我预计会有大量的工作要做。这就是我今天早上的感受。这将是一个仅限web浏览器客户端的解决方案。为了其他所有者的记录,根本没有远程客户端。我读过关于oracle虚拟专用数据库的文章。但这是我正在使用的FreeBSD服务器。在FreeBSD或其他任何地方,您可以将MySql设置为仅接受来自特定节点的连接,其中只有您的web服务器Apache或其他任何正在运行的节点,还可以对未经授权的访问采取其他预防措施。如果您正在实施自己的授权方案,因为SQL方案不适合您,那么您的应用程序的用户不需要与DB中定义的用户相对应。这对我来说是个好日子,至少我发现您使用CREATE VIEW的解决方案非常有用。我试过了,现在用户除了自己的记录外不能查看其他记录。为每个用户创建一个单独的表吗?开玩笑吧,那太可怕了,但我已经看到了哦,她是怎么管理500个用户的?