You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL C++ Connector及MySQL Workbench无法连接本地MariaDB问题

解决方案:MariaDB 10.6 连接错误1698及用户插件修改失败问题

问题根源

  1. 错误1698(Access denied):Debian/Ubuntu系(包括PopOS)的MariaDB默认root用户采用unix_socket插件认证,仅允许通过sudo关联的系统用户登录,不支持密码认证方式,因此直接用密码连接(C++代码、Workbench)会被拒绝。
  2. UPDATE语句报错:MariaDB 10.4及以上版本中,mysql.user是视图而非物理表,无法直接通过UPDATE语句修改用户属性,必须使用官方标准的用户管理语句。

解决步骤

方案一:创建新的密码认证用户(推荐)

  1. 通过unix_socket免密登录MariaDB:
sudo mariadb
  1. 创建采用mysql_native_password插件的新用户(适配MySQL C++ Connector):
CREATE USER 'me'@'localhost' IDENTIFIED BY 'your_secure_password';
  1. 为新用户授权(根据业务需求调整权限范围,示例为全权限):
GRANT ALL PRIVILEGES ON *.* TO 'me'@'localhost' WITH GRANT OPTION;
  1. 刷新权限使设置生效:
FLUSH PRIVILEGES;
  1. 修改C++代码及Workbench的连接参数,使用新用户名me和对应密码即可正常连接。

方案二:修改root用户的认证方式(不推荐,仅用于测试或特殊场景)

  1. 同样通过sudo登录MariaDB:
sudo mariadb
  1. 切换root用户为密码认证:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'your_root_password';
  1. 刷新权限:
FLUSH PRIVILEGES;
  1. 之后即可用root账号+密码连接MariaDB。

注意事项

  • 连接字符串中host需设为localhost,若使用127.0.0.1,需单独创建对应主机的用户条目(如'me'@'127.0.0.1')。
  • 确保MySQL C++ Connector版本与MariaDB版本兼容(你安装的libmysqlcppconn8-dev适配8.x协议,与MariaDB 10.6兼容)。

内容的提问来源于stack exchange,提问作者Dov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 12:03:19