欢迎光临易鼎网
详情描述

一、安装 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 的基本安全认证设置,可根据实际需求调整。