遇到了许多问题 顺序应该不同
首先就是 链接的客户端是 DBeaver 链接的时候要 选择版本 低版本的 用legacy,
驱动也很重要, 下不到驱动的可以用网上找的驱动来安装
有的时候 会有类名的问题 但是报错很离谱 会报
dbeaver clickhouse 链接错误 code:46 Unknown function currentUser
还有些问题 比如测试链接不上 这个链接里面会有答案
https://www.cnblogs.com/illusioned/p/12727738.html#:~:text=SQL%20%E9%94%99%E8%AF%AF%20[16
比如 我macos 远程连接的成功 查询表的时候报错
cannot override setting(result_overflow_mode) in readonly mode
最后 用 下面的图 解决的
配置远程连接 可以参考这个链接
https://blog.csdn.net/jiankang66/article/details/120610105#:~:text=clickhouse
可以简单通过curl http://192.168.110.your ip:8123 测试下 如果返回ok 基本说明能连通
对了 如果是win10 wsl 做主机 还要做端口映射才能 远程访问
你的 ClickHouse 服务器运行在 WSL (Windows Subsystem for Linux) 中,并且你的主机 IP 地址是 192.168.110.105
。WSL 的网络设置与 Windows 主机的网络设置略有不同,因此这可能是导致你无法通过 http://192.168.110.105:8123/
访问 ClickHouse 的原因。
在 WSL 中,网络接口的配置和端口绑定有一些特殊情况。以下是一些可能的解决方案和调试步骤:
1. 检查 WSL 网络配置
WSL 的网络设置可能导致网络流量无法直接从 Windows 主机访问 WSL 内的服务。WSL 中的服务通常绑定在 localhost
上,而不是绑定到外部 IP 地址。
-
确认 ClickHouse 绑定在正确的 IP 地址上
在 WSL 中,通常
localhost
是绑定在127.0.0.1
上。你可以尝试确认 ClickHouse 是否绑定在0.0.0.0
或172.26.32.132
上。在 WSL 中检查服务绑定情况:
bash复制代码sudo netstat -tuln | grep 8123
确保输出中有类似
0.0.0.0:8123
或172.26.32.132:8123
的条目。
2. 访问 WSL 服务的外部 IP
WSL 的网络设置使得 localhost
只能在 WSL 内部访问,但你可以尝试从 Windows 主机访问 WSL 的 IP 地址。
-
使用 WSL 的 IP 地址进行访问
在 WSL 中运行
ip addr show
看到的 IP 地址(例如172.26.32.132
)是 WSL 的内部 IP 地址。你可以尝试使用这个 IP 地址访问 ClickHouse:bash复制代码curl http://172.26.32.132:8123/
如果可以访问,说明 ClickHouse 正在 WSL 内部正常运行。
3. WSL 到 Windows 主机的网络映射
WSL 2 中的网络映射不同于 WSL 1。如果你使用的是 WSL 2,WSL 和 Windows 之间的网络配置可能会有所不同。
-
配置端口转发
WSL 2 使用 Hyper-V 网络虚拟化,因此需要配置端口转发以便从 Windows 主机访问 WSL 中的服务。你可以使用 Windows 的
netsh
命令来设置端口转发。例如:cmd复制代码netsh interface portproxy add v4tov4 listenport=8123 listenaddress=0.0.0.0 connectport=8123 connectaddress=172.26.32.132
这会将 Windows 主机上的端口 8123 转发到 WSL 内的
172.26.32.132:8123
。
4. 检查 WSL 版本和设置
确认你使用的是 WSL 2。WSL 2 提供了更完善的网络支持。
-
检查 WSL 版本
bash复制代码wsl --list --verbose
如果使用的是 WSL 1,可以考虑升级到 WSL 2 以获得更好的网络支持。
5. 重新启动服务和网络
-
重启 ClickHouse 服务
bash复制代码sudo systemctl restart clickhouse-server
-
重启 WSL 实例
cmd复制代码wsl --shutdown
然后重新启动 WSL 实例。
防火墙也要做相应的设置
你的 Windows 主机可以通过 http://192.168.110.105:8123/
访问 ClickHouse,但局域网中的其他设备无法访问,可能有以下几个原因:
1. 检查 Windows 防火墙设置
防火墙可能阻止了局域网中的其他设备访问 ClickHouse 的端口。
-
允许端口 8123 通过防火墙
你可以创建一个新的入站规则,允许端口 8123 的 TCP 流量:
- 打开“控制面板”。
- 选择“系统和安全” > “Windows 防火墙”。
- 选择“高级设置”。
- 在“入站规则”中,选择“新建规则”。
- 选择“端口”,点击“下一步”。
- 选择“TCP”并指定端口 8123,点击“下一步”。
- 选择“允许连接”,点击“下一步”。
- 按照提示完成规则创建。
2. 检查网络设置
确保你的 Windows 主机和局域网中的其他设备在同一网络段上,且没有网络隔离问题。
-
确认 Windows 主机的网络配置
确保 Windows 主机的 IP 地址和子网掩码设置正确:
cmd复制代码ipconfig
确保 IP 地址与局域网中的其他设备在同一网段(例如:
192.168.110.x
)。
3. 确认网络连接
确保局域网中的其他设备能够与 Windows 主机通信。
-
测试网络连接
从局域网中的另一台设备,尝试使用
ping
命令测试 Windows 主机的连通性:bash复制代码ping 192.168.110.105
如果无法 ping 通,可能是网络连接问题。
4. 检查 ClickHouse 配置
确保 ClickHouse 配置允许从外部网络访问。
-
检查 ClickHouse 配置
确认 ClickHouse 的
config.xml
配置文件中<listen_host>
设置为0.0.0.0
,这样 ClickHouse 会监听所有网络接口的流量:xml复制代码<listen_host>0.0.0.0</listen_host>
5. 确保 WSL 和 Windows 网络正常
WSL 的网络配置有时可能会影响外部访问。
-
重启 WSL
确保 WSL 网络设置生效:
cmd复制代码wsl --shutdown
然后重新启动 WSL 实例。
6. 检查 ClickHouse 的日志
查看 ClickHouse 的日志文件,确认没有其他配置错误或问题:
sudo tail -f /var/log/clickhouse-server/clickhouse-server.log
7. 检查是否有网络隔离或路由问题
如果你使用的网络环境有复杂的路由或隔离设置,确保局域网的流量可以到达 Windows 主机上的 ClickHouse 服务。
要远程链接 需要 在 clickhouse config.xml 里面 修改 listen_host 为 <listen_host>::</listen_host>
但是我修改了 一直没用 最后改成了 如下就可以正常连接了
<listen_host>0.0.0.0</listen_host> <!-- 使用IPv4地址 -->
因为在不断的修改 config.xml 所以 也要
sudo tail -f /var/log/clickhouse-server/clickhouse-server.log
及时查看下有没有报错
可以用 xmllint 来检查下 这个文档有没有基础的语法错误
xmllint --noout /etc/clickhouse-server/config.xml
记得要重启 和查看 clickhouse-server 的状态
sudo systemctl restart clickhouse-server
sudo systemctl status clickhouse-server