【问题标题】:MySQL security rights to view/select from stored procedure only仅从存储过程中查看/选择的 MySQL 安全权限
【发布时间】:2015-04-05 15:26:27
【问题描述】:

希望授予用户访问权限以仅在数据库中显示一个存储过程并阻止用户查看任何其他表、视图和/或过程。

我已阅读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->Remote MySQL 和“添加访问主机”及其 IP,然后在 MySQL 中执行此命令(假设有足够的权限)

GRANT EXECUTE ON PROCEDURE YourDatabase.YourStoredProcedure TO 'TestUser'@'THIER IP ADDRESS';

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您已将 TestUser 绑定到本地主机,这就是他无法远程访问(从另一个 IP )的原因。如果您希望 Testuser 远程访问,您需要指定该 IP 或只使用通配符 (%) 以便他可以从任何地方(本地主机或非本地主机)访问它。

    【讨论】:

    • 感谢您的回复。需要明确的是,我们不是在谈论远程 MySQL,而是在谈论这个特定的用户,对吗?此用户已被“列入”远程访问 MySQL 的“白名单”,但仍无法看到远程访问。如果我理解正确,除了将他们的远程访问列入白名单之外,我还需要 GRANT EXECUTE....TO 'TestUser'@'IP Address'?
    • 你能发布他的“白名单”用户权限吗?为 TestUser 执行命令 show grants
    • 绝对。我所说的“白名单”是通过 cPanel->RemoteMySQL。很快就会更新帖子。
    • 用我的IP试了一下,效果很好。上面的编辑答案
    猜你喜欢
    • 2012-04-22
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    相关资源
    最近更新 更多