在PhpMyAdmin中创建MySQL角色时报SQL语法错误如何解决
错误原因
CREATE ROLE 是 MySQL 8.0 版本才正式引入的语法,低于该版本的MySQL(包括5.7及更早版本)原生不支持角色功能,执行该语句就会触发语法报错。另外如果你的MySQL版本符合要求,但当前登录用户没有创建角色的权限,也可能触发异常。
排查及解决步骤
第一步:确认当前MySQL版本
执行以下SQL查询版本:SELECT VERSION();第二步:根据版本选择对应处理方案
方案1:MySQL版本低于8.0
该版本没有角色功能,你可以用直接创建用户并授权的方式替代角色的使用,示例如下:
-- 创建等效于角色的权限用户 CREATE USER 'kaitech_admin'@'localhost' IDENTIFIED BY '自定义安全密码'; -- 给该用户分配对应权限,示例为分配kaitech_db库的所有权限 GRANT ALL ON kaitech_db.* TO 'kaitech_admin'@'localhost'; -- 刷新权限生效 FLUSH PRIVILEGES;后续需要给其他用户赋予相同权限时,直接复制该用户的权限配置即可。
方案2:MySQL版本为8.0及以上
此时报错是因为当前登录用户没有创建角色的权限,使用root账号登录后执行以下语句授权即可:
-- 给你的登录用户授予创建角色权限,注意替换为你实际的用户名和访问主机 GRANT CREATE ROLE ON *.* TO '你的登录用户名'@'localhost'; FLUSH PRIVILEGES;授权完成后重新执行创建角色的语句即可,建议创建角色时补全主机标识并加引号避免语法异常:
CREATE ROLE 'kaitech_admin'@'%', 'product_manager'@'%', 'sales_manager'@'%', 'customer_service_representative'@'%';
内容的提问来源于stack exchange,提问作者Danielle Shine Abacial
相关产品推荐
相关产品推荐

