MySQL 5.1执行ALTER USER创建用户报SQL语法错误如何解决
报错原因
- 核心原因是使用的语法和当前MySQL版本不兼容:
ALTER USER语句是MySQL 5.7 版本才正式加入的语法,MySQL 5.1版本完全不支持该用法,执行时直接触发语法错误。 - 其次语句中
IDENTIFIED WITH mysql_native_password指定认证插件的语法是MySQL 5.5版本才新增的功能,同样不适用于MySQL 5.1版本。
解决方案
MySQL 5.1版本操作用户密码仅支持GRANT、SET PASSWORD或者直接修改mysql.user系统表三种方式,根据使用场景选择对应操作即可:
场景1:创建新用户同时分配权限
执行以下SQL即可:
-- 可根据实际需求调整权限、可访问库表范围 GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' IDENTIFIED BY '你的密码'; -- 刷新权限使配置立即生效 FLUSH PRIVILEGES;
场景2:仅修改已有用户的密码
两种可选操作:
方式1:使用SET PASSWORD语法
SET PASSWORD FOR 'user'@'localhost' = PASSWORD('你的新密码');
方式2:直接更新系统表
UPDATE mysql.user SET Password = PASSWORD('你的新密码') WHERE User = 'user' AND Host = 'localhost'; FLUSH PRIVILEGES;
注意:MySQL 5.1仅支持PASSWORD()函数对密码做哈希加密,必须使用该函数处理密码字符串,不能直接明文存储到系统表。
内容的提问来源于stack exchange,提问作者hdew
相关产品推荐
相关产品推荐

