我正在创建一个特殊的用户,我必须在应用程序执行中给予完全权限,但只有当我使用Workbrench或使用MySQL的控制台时才能选择和查看。有可能吗?这是出于安全考虑。我问这个问题是因为程序员可以在C#web.config中看到用户,我们对他们在控制台中直接查询插入和更新不感兴趣。
xdnvmnnf1#
一个给定的用户只能有一组权限。不管他们连接时使用什么程序。您不能根据客户端程序使用户具有不同的权限。但是您可以根据客户端 * 主机 * 授予不同的权限。MySQL中的“用户”是用户名和连接的客户端主机的组合。即使用户名和密码相同,如果客户端从应用服务器主机连接,它可以匹配具有完全权限的user@host条目,然后如果客户端从任何其他主机连接(例如开发人员工作站或跳转主机),只授予您想要的有限权限。您可以创建两个用户,假设您的应用服务器主机都在子网192.168.200.%中:
user@host
192.168.200.%
CREATE USER 'app'@'192.168.200.%' IDENTIFIED BY '...'; CREATE USER 'app'@'%' IDENTIFIED BY '...';
然后相应地授予权限:
CREATE SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'app'@'192.168.200.%'; GRANT SELECT ON appdb.* TO 'app'@'%';
当MySQL身份验证系统识别登录时,它首先将其与最具体的主机模式进行匹配。这里假设开发者没有ssh访问应用服务器主机的权限,但是即使他们有,你也可以设置监控,这样如果他们登录到应用服务器主机并运行mysql命令行客户端,你就会有一个日志。
1条答案
按热度按时间xdnvmnnf1#
一个给定的用户只能有一组权限。不管他们连接时使用什么程序。您不能根据客户端程序使用户具有不同的权限。
但是您可以根据客户端 * 主机 * 授予不同的权限。
MySQL中的“用户”是用户名和连接的客户端主机的组合。即使用户名和密码相同,如果客户端从应用服务器主机连接,它可以匹配具有完全权限的
user@host
条目,然后如果客户端从任何其他主机连接(例如开发人员工作站或跳转主机),只授予您想要的有限权限。您可以创建两个用户,假设您的应用服务器主机都在子网
192.168.200.%
中:然后相应地授予权限:
当MySQL身份验证系统识别登录时,它首先将其与最具体的主机模式进行匹配。
这里假设开发者没有ssh访问应用服务器主机的权限,但是即使他们有,你也可以设置监控,这样如果他们登录到应用服务器主机并运行mysql命令行客户端,你就会有一个日志。