clickhouse安装
clickhouse的安装很简单,从官网下载几个包,然后rpm 或者yum 就可以安装。
我这里遇到的问题是安装完后,运行client的时候,显示server连接到的是0.125.124,并非是client的20.8.3.18这个版本,不一致。
运行sql也会报错:
Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Exception: Too large string size. (version 20.8.3.18
原因:
9000端口被占用:
[root@t3-tkias-0025-app02 clickhouse_rpm]# netstat -tunlp|grep 9000
tcp6 0 0 :::9000 :::* LISTEN 1021/docker-proxy
解决:
修改/etc/clickhouse-server/config.xml,将tcp的端口从9000改为其他值,比如6000。
然后启动客户端的时候指定端口6000
clickhouse-client --port 6000
运行成功:
配置远程访问端口
在/etc/clickhouse-servcer/config.xml中有一些已经注释掉的配置。
<!-- Listen specified host. use :: (wildcard IPv6 address), if you want to accept connections both with IPv4 and IPv6 from everywhere. -->
<!--<listen_host>::</listen_host> -->
<!-- Same for hosts with disabled ipv6: -->
<!-- <listen_host>0.0.0.0</listen_host> --><!-- Default values - try listen localhost on ipv4 and ipv6: -->
<!--
-->
<!-- Don't exit if ipv6 or ipv4 unavailable, but listen_host with this protocol specified -->
<!-- <listen_try>0</listen_try> -->
1) 如果想限制为本地访问,则去掉下面两行的注释
<listen_host>::1</listen_host>
<listen_host>127.0.0.1</listen_host>
验证:lsof -i :8123
看到确实是只监听localhost的8123端口。
2) 如果想监听远程的连接,则去掉下面这一行的注释:
<listen_host>::</listen_host>
这个表示监听远程的ipv4和ipv6的访问。
验证:lsof -i :8123
注意,两者不能都注释掉,否则clickhouse-server无法启动。
修改完后:
service clickhouse-server restart
重启启动应用。
ps: 我是在docker中运行了python,来访问clickhouse,之前一直无法连接上,就是因为我开启的是localhost。切换成远程后,容器内的python就可以顺利访问clickhouse数据库了。
另外,用python程序访问时需要用tcp的端口,默认是9000,如果修改过,就用修改过的,而不能用8123,程序如下:
from clickhouse_driver import Client, connect
host = '10.154.76.25'
database = 'default'
user = 'xzh'
password = '123'
port = '6000'
client = Client(host = host, database = database, user = user, password = password, port = port, send_receive_timeout=20)
sql = 'select 1'
try:
print(client.execute(sql))
except Exception as e:
print(str(e))
离线安装DBeaver
公司电脑用的是内网,无法连接外网自动下载驱动。
所以用的方法是先找了一台能连外网的电脑,然后把下载的驱动放到了“离线电脑”的如下目录:
注意,这个文件夹是窗口->首选项->驱动->本地文件夹里指定的位置,也就是说驱动会从这里去找。
然后就一切顺利了: