尝试在MariaDB中修改为使用MySQL插件时遇ERROR 1356错误求助
解决MariaDB中UPDATE mysql.user报错1356的问题
错误原因
在MariaDB 10.4及更高版本中,mysql.user不再是物理表,而是一个视图,直接对视图执行UPDATE操作会触发权限或引用无效的错误——因为视图依赖的底层表结构已发生变化,无法直接通过UPDATE视图修改用户认证信息。
正确操作方法
方法1:使用ALTER USER命令(官方推荐)
这是修改用户认证插件的标准方式,无需直接操作系统表,更安全可靠:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码'; FLUSH PRIVILEGES;
如果不需要修改密码,仅更换认证插件,可简化为:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password; FLUSH PRIVILEGES;
方法2:更新底层系统表(仅ALTER USER不可用时使用)
MariaDB的用户认证信息实际存储在mysql.global_priv表中,可通过修改该表实现变更:
UPDATE mysql.global_priv SET priv=JSON_SET(priv, '$.plugin', 'mysql_native_password') WHERE User='root' AND Host='localhost'; FLUSH PRIVILEGES;
注意事项
- 执行操作的账号必须拥有足够权限(如root账号)
- 所有修改完成后必须执行
FLUSH PRIVILEGES;使权限变更立即生效
内容的提问来源于stack exchange,提问作者Muzmmil
相关产品推荐
相关产品推荐

