一、安装 ClickHouse
1. 添加官方仓库
sudo yum install -y yum-utils
sudo rpm --import https://repo.clickhouse.com/CLICKHOUSE-KEY.GPG
sudo yum-config-manager --add-repo https://repo.clickhouse.com/rpm/stable/x86_64
2. 安装 ClickHouse 服务端和客户端
sudo yum install -y clickhouse-server clickhouse-client
3. 启动服务并设置开机自启
sudo systemctl start clickhouse-server
sudo systemctl enable clickhouse-server
sudo systemctl status clickhouse-server
二、配置密码认证
1. 生成密码 SHA256 哈希
# 方法1:使用 openssl(推荐)
echo -n "your_password" | openssl dgst -sha256
# 输出示例:9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08
# 方法2:使用 clickhouse-client 生成
echo "SELECT hex(SHA256('your_password'))" | clickhouse-client
2. 修改配置文件
编辑配置文件 /etc/clickhouse-server/users.xml:
sudo vim /etc/clickhouse-server/users.xml
3. 配置密码(示例配置)
<?xml version="1.0"?>
<clickhouse>
<!-- 用户配置 -->
<users>
<!-- default 用户配置 -->
<default>
<!-- 使用密码 -->
<password_sha256_hex>9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08</password_sha256_hex>
<!-- 网络访问限制 -->
<networks>
<ip>::/0</ip> <!-- 允许所有IP,生产环境应限制 -->
</networks>
<!-- 用户配置 -->
<profile>default</profile>
<quota>default</quota>
</default>
<!-- 可以添加其他用户 -->
<readonly_user>
<password_sha256_hex>其他密码的SHA256哈希</password_sha256_hex>
<networks>
<ip>::1</ip>
<ip>127.0.0.1</ip>
</networks>
<profile>readonly</profile>
<quota>default</quota>
</readonly_user>
</users>
<!-- 配置profile -->
<profiles>
<default>
<max_memory_usage>10000000000</max_memory_usage>
<use_uncompressed_cache>0</use_uncompressed_cache>
<load_balancing>random</load_balancing>
</default>
<readonly>
<readonly>1</readonly>
</readonly>
</profiles>
<!-- 配额配置 -->
<quotas>
<default>
<interval>
<duration>3600</duration>
<queries>0</queries>
<errors>0</errors>
<result_rows>0</result_rows>
<read_rows>0</read_rows>
<execution_time>0</execution_time>
</interval>
</default>
</quotas>
</clickhouse>
4. 多用户配置示例
<users>
<!-- 管理员用户 -->
<admin>
<password_sha256_hex>管理员密码哈希</password_sha256_hex>
<networks>
<ip>192.168.1.0/24</ip>
<ip>10.0.0.0/8</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
<access_management>1</access_management>
</admin>
<!-- 只读用户 -->
<report_user>
<password_sha256_hex>只读用户密码哈希</password_sha256_hex>
<networks>
<ip>192.168.1.100</ip>
</networks>
<profile>readonly</profile>
<quota>default</quota>
</report_user>
</users>
三、高级认证配置
1. 使用配置文件夹方式(推荐)
创建用户配置文件:
sudo mkdir -p /etc/clickhouse-server/users.d
创建独立用户配置文件:
sudo vim /etc/clickhouse-server/users.d/myuser.xml
内容示例:
<?xml version="1.0"?>
<clickhouse>
<users>
<myuser>
<password>plaintext_password_here</password> <!-- 或使用 password_sha256_hex -->
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</myuser>
</users>
</clickhouse>
2. 通过 SQL 管理用户(推荐方式)
使用默认用户登录后创建新用户:
# 首次使用默认空密码登录
clickhouse-client --host 127.0.0.1
# 在 ClickHouse 中执行SQL
-- 1. 创建带密码的用户
CREATE USER web_user IDENTIFIED WITH sha256_password BY 'your_password';
-- 2. 或者创建带复杂密码的用户
CREATE USER admin_user IDENTIFIED WITH sha256_hash
BY '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08';
-- 3. 授予权限
GRANT ALL ON *.* TO web_user WITH GRANT OPTION;
-- 4. 创建只读用户
CREATE USER readonly_user IDENTIFIED WITH sha256_password BY 'readonly_pass';
GRANT SELECT ON default.* TO readonly_user;
-- 5. 查看用户
SHOW USERS;
SELECT * FROM system.users;
四、连接测试
1. 使用密码连接
# 使用密码连接
clickhouse-client --host 127.0.0.1 --user default --password your_password
# 或使用环境变量
export CLICKHOUSE_PASSWORD=your_password
clickhouse-client --user default
2. 使用配置文件连接
创建 ~/.clickhouse-client/config.xml:
<config>
<user>default</user>
<password>your_password</password>
<host>127.0.0.1</host>
<port>9000</port>
<secure>false</secure>
</config>
五、安全加固建议
1. 修改默认端口
<!-- /etc/clickhouse-server/config.xml -->
<tcp_port>9000</tcp_port>
<http_port>8123</http_port>
2. 启用 SSL(可选)
<openSSL>
<server>
<certificateFile>/path/to/server.crt</certificateFile>
<privateKeyFile>/path/to/server.key</privateKeyFile>
</server>
</openSSL>
3. 限制网络访问
<listen_host>0.0.0.0</listen_host> <!-- 或指定IP -->
六、常见问题解决
1. 忘记密码处理
# 临时关闭密码验证
sudo systemctl stop clickhouse-server
sudo clickhouse-server --config-file=/etc/clickhouse-server/config.xml -- --path=/var/lib/clickhouse/ --user=clickhouse
# 或修改配置文件为无密码
# 然后通过SQL修改密码
ALTER USER default IDENTIFIED WITH sha256_password BY 'new_password';
2. 查看用户权限
SHOW GRANTS FOR username;
3. 密码策略配置
<password_complexity>
<rule>length:8</rule>
<rule>mixed_case:1</rule>
<rule>numbers:1</rule>
</password_complexity>
七、验证安装
# 验证服务状态
sudo systemctl status clickhouse-server
# 测试连接
clickhouse-client --user default --password your_password --query "SELECT version()"
# 查看用户列表
clickhouse-client --user default --password your_password --query "SHOW USERS"
注意事项:
生产环境建议使用强密码
限制网络访问范围
定期更新密码
为不同应用创建不同用户
遵循最小权限原则授予权限
此配置提供了 ClickHouse 的基本安全认证设置,可根据实际需求调整。