MySQL 8.0及以上版本支持动态权限,需确认版本并查询mysql.dynamic_privileges表;通过GRANT语句授予权限如CONNECTION_ADMIN,并用SHOW GRANTS验证。

MySQL从8.0版本开始引入了动态权限(Dynamic Privileges)机制,允许在不重启服务的情况下为用户授予或撤销某些高级权限,比如对特定角色或安全操作的控制。启用和使用动态权限不需要额外的配置开关,但需要确保你的MySQL环境满足相关条件并正确操作。
动态权限是MySQL 8.0及以上版本的功能,首先确认你使用的MySQL版本:
SELECT VERSION();
如果你的版本低于8.0,则无法使用动态权限功能,需升级到8.0或更高版本。
动态权限依赖于角色(Roles)和增强的权限管理架构。确保以下设置已启用:
mysql_native_password_proxy_users通常不影响,但要确保使用的是原生密码插件或caching_sha2_password。你可以通过以下命令查看当前支持的动态权限:
SELECT * FROM mysql.procs_priv WHERE proc_name = 'set_role';
更直接的方式是查询数据字典表(MySQL 8.0+):
SELECT * FROM mysql.dynamic_privileges;
这条语句会列出所有可用的动态权限名称及其描述,如mysql_native_password_proxy_users、APPLICATION_PASSWORD_ADMIN等。
一旦确认环境支持,就可以像普通权限一样通过GRANT语句为用户或角色分配动态权限。
示例:授予用户CONNECTION_ADMIN权限(允许杀掉连接)
GRANT CONNECTION_ADMIN ON *.* TO 'admin_user'@'localhost';
示例:授予APPLICATION_PASSWORD_ADMIN(用于管理应用密码)
GRANT APPLICATION_PASSWORD_ADMIN ON *.* TO 'app_admin'@'%';
执行后刷新权限:
FLUSH PRIVILEGES;
这些权限立即生效,无需重启MySQL服务,这就是“动态”的体现。
可以登录对应用户,尝试执行受保护的操作,或查询该用户的有效权限:
SHOW GRANTS FOR 'admin_user'@'localhost';
也可以使用如下方式查看当前会话拥有的动态权限:
SELECT * FROM INFORMATION_SCHEMA.USER_PRIVILEGES WHERE GRANTEE LIKE '%admin_user%';
基本上就这些。只要MySQL版本达标,动态权限自动可用,关键是理解哪些操作对应哪些动态权限,并用标准GRANT语法授权即可。不复杂但容易忽略细节,比如主机名匹配或权限名称拼写。
以上就是如何在mysql中启用动态权限调整的详细内容,更多请关注php中文网其它相关文章!
 
                        
                        每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
 
                Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号