当您使用数据库时,您可能会看到错误消息:“Access denied; you need (at least one of) the SUPER privilege(s) for this operation”。当您的数据库用户没有足够的权限来执行某些操作时,就会发生这种情况。
本文中,我们将查看导致此错误的一些常见情况以及如何修复它们。
Case 1: Creating or Changing Database Objects
如果您尝试创建或更改数据库对象,如表、存储过程或视图,如果您的用户帐户没有相应的权限,您可能会得到 Access denied 错误。
解决方案
为您的用户帐户提供必要的权限。
GRANT ALL PRIVILEGES ON your_database_name.* TO ‘your_username’@’localhost’;
FLUSH PRIVILEGES;
Case 2: Importing a SQL Dump
在导入 SQL 转储文件时,如果用户帐户没有在数据库中创建或更改对象的权限,则可能会看到 Access denied 错误。
解决方案
如 Case 1 的解决方案中所述,为用户帐户提供必要的权限。
Case 3: Doing Global Operations
有些操作需要 SUPER 特权,如启动或停止复制、结束其他用户会话或更改全局变量。如果您尝试在没有 SUPER 权限的情况下执行这些操作,您将得到 Access denied 错误。
解决方案
向数据库管理员请求 SUPER 权限或运行此 SQL 命令
GRANT SUPER ON *.* TO 'your_username'@'localhost';
FLUSH PRIVILEGES;
Case 4: MySQL Server Running with Limited Privileges
有时,MySQL 服务器可能会使用 skip-grant-tables 选项运行,该选项关闭身份验证,并为所有用户提供 SUPER 特权。如果后面服务器在没有这个选项的情况下启动,那么拥有 SUPER 权限的用户可能会得到 Access denied 错误。
解决方案
重新启动 MySQL 服务器,不使用 skip-grant-tables 选项,并向用户帐户授予必要的权限,如案例 1 和案例 3 的解决方案所述。
我的开源项目
- course-tencent-cloud(酷瓜云课堂 - gitee仓库)
- course-tencent-cloud(酷瓜云课堂 - github仓库)