希望授予用户访问权限仅限于在数据库中显示一个存储过程并防止用户查看任何其他表,视图和/或过程。
我已阅读this post和:
GRANT EXECUTE ON PROCEDURE myDB.spName TO 'TestUser'@'localhost';
当用户通过PhpMyAdmin在测试服务器上访问而不是远程(奇数)访问时,有效。远程时,他们只能看到"信息架构。我是否需要完全限定服务器名称而不是' localhost'?
另请阅读MySQL security docs无济于事。
最后,两年前发布的this question似乎描述了类似的需求,但从未回答。
[编辑以显示拨款]
Grants for TestUser@localhost
GRANT USAGE ON *.* TO 'TestUser'@'localhost' IDENTIFIED BY PASSWORD '*FC6....'
GRANT EXECUTE ON PROCEDURE `database`.`sp_name` TO 'TestUser'@'localhost'
[来自@ BK435的解决方案] 要让远程用户MySQL访问一个(或多个)存储过程,没有其他任何东西你将需要他们的IP地址然后:
1。)如果正在使用MySQL远程安全,请使用cPanel->远程MySQL和"添加访问主机"使用他们的IP,然后在MySQL中执行此命令(假设有足够的权利)
GRANT EXECUTE ON PROCEDURE YourDatabase.YourStoredProcedure TO 'TestUser'@'THIER IP ADDRESS';
答案 0 :(得分:0)
您已将TestUser绑定到localhost,这就是他无法远程访问(来自其他IP)的原因。如果您希望Testuser远程访问,您需要指定该IP或只使用通配符(%),以便他可以从任何地方访问它(localhost与否)。