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

MySQL同步ClickHouse遇clickhouse_user权限拒绝错误,求排查方向

MySQL同步ClickHouse时Access Denied错误的排查方向

问题背景

按照官方流程将MySQL 8.0.36数据库同步至ClickHouse 23.12.2.59,所有配置操作无报错,但执行select * from table_1时触发如下错误:

Code: 100. DB::Exception: Access denied for user clickhouse_user. (UNKNOWN_PACKET_FROM_SERVER)

ClickHouse错误栈显示错误源于DB::MySQLClient::connect()环节,MySQL侧仅在创建物化表时出现mysql_native_password弃用警告,无其他异常日志。

排查内容

  • 验证MySQL侧clickhouse_user的权限与连接有效性
    1. 检查用户权限:执行SHOW GRANTS FOR 'clickhouse_user'@'clickhouse_host_ip';,确认该用户拥有SELECT、REPLICATION SLAVE、REPLICATION CLIENT权限,且主机范围匹配ClickHouse服务器的IP/主机名。
    2. 直接测试连接:在ClickHouse服务器上执行mysql -u clickhouse_user -p -h mysql_host,确认能正常登录并访问目标数据库及表,排除账号密码错误或网络连通性问题。
  • 解决MySQL 8.0认证插件兼容问题
    MySQL 8.0默认采用caching_sha2_password,结合警告信息,可尝试以下操作:
    1. 切换用户认证方式:执行ALTER USER 'clickhouse_user'@'clickhouse_host_ip' IDENTIFIED WITH mysql_native_password BY 'your_password';,随后执行FLUSH PRIVILEGES;刷新权限。
    2. 若使用caching_sha2_password:确认ClickHouse版本支持该插件,同时检查MySQL是否开启TLS连接(caching_sha2_password需TLS传输密码,除非临时关闭require_secure_transport=OFF,不推荐生产环境使用)。
  • 检查ClickHouse MaterializedMySQL引擎配置
    1. 确认物化库连接参数:重新创建物化数据库,验证主机、端口、用户名、密码、目标库名是否正确,注意密码含特殊字符时需正确转义:
      CREATE DATABASE mysql_sync_db ENGINE = MaterializedMySQL('mysql_host:3306', 'target_db', 'clickhouse_user', 'your_password');
      
    2. 网络连通性验证:若为容器部署,确认ClickHouse容器能解析MySQL容器的主机名或IP,可尝试用IP替代主机名测试。
  • 获取更详细的ClickHouse日志
    临时调高ClickHouse日志级别至trace:修改config.xml中的<log_level>trace</log_level>,重启服务后重新执行查询,查看MySQL连接阶段的详细日志,定位具体拒绝原因。
  • 检查MySQL防火墙/安全组规则
    确认MySQL服务器的3306端口对ClickHouse服务器IP开放,无防火墙或安全组拦截连接请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:50:21