在 ClickHouse 中允许远程 IP 连接,需要同时修改 服务端配置 和 网络防火墙,步骤如下:
1. 修改 ClickHouse 服务端配置
ClickHouse 的网络监听与访问控制主要在 config.xml 和 users.xml(或 user.xml)中设置。
① 启用监听所有网卡
config.xml(默认 /etc/clickhouse-server/config.xml)
<!-- 将 127.0.0.1 改为 0.0.0.0 以监听所有 IP -->
<listen_host>0.0.0.0</listen_host>
<!-- 也可以加多条指定多个监听 IP -->
<!-- <listen_host>192.168.1.10</listen_host> -->
修改后 ClickHouse 会监听 9000(TCP 客户端)和 8123(HTTP 客户端)在所有网卡上。
② 设置允许的 IP 地址
users.xml(有的版本是 /etc/clickhouse-server/users.d/default.xml):
<users>
<default>
<networks>
<!-- 允许所有IP访问 -->
<ip>::/0</ip>
<!-- 或只允许某个网段 -->
<!-- <ip>192.168.1.0/24</ip> -->
</networks>
</default>
</users>
如果你是 ClickHouse Cloud,需要在 Web 控制台里配置 Allow List。
③ 重启服务
sudo systemctl restart clickhouse-server
2. 开放服务器防火墙端口
CentOS / RHEL / RockyLinux
sudo firewall-cmd --add-port=9000/tcp --permanent
sudo firewall-cmd --add-port=8123/tcp --permanent
sudo firewall-cmd --reload
Ubuntu / Debian
sudo ufw allow 9000/tcp
sudo ufw allow 8123/tcp
sudo ufw reload
如果有云服务器(阿里云、AWS、GCP)
需要在云控制台的安全组中放行 9000(TCP)和 8123(HTTP)端口
3. 客户端连接测试
TCP 模式(clickhouse-client)
clickhouse-client -h 服务器IP --port 9000 --user default --password
HTTP 模式
curl "<http://服务器IP:8123>" --data-binary "SELECT now()"