当前位置: 首页 > article >正文

ClickHouse创建账号和连接测试

在之前搭建ClickHouse的时候,把账户相关的去掉了,所以登录和连接的时候是不需要账号密码的,但是实际项目中,肯定是需要根据需要创建账号。

一,创建账号

1,进入到 /etc/clickhouse-server, 编辑users.xml

找到users这个标签对, 这个里面子标签就是用户名。比如clickhouse的默认用户default,默认是没有密码的,如果需要密码,可以在<password></password>标签里输入密码。

修改之后重启服务

systemctl restart clickhouse-server.service

下面这个access_management开启之后,就可以使用default账号进行创建账号和授权给其他账号。

2,连接clickhouse,执行sql添加账号,并授权

clickhouse-client -m --password

再输入上面这个default账号的密码

-- 创建用户clickhouse
CREATE USER clickhouse HOST IP '0.0.0.0' IDENTIFIED WITH sha256_password BY 'clickhouse';

其中IP '0.0.0.0'表示允许使用clickhouse用户从任何一台主机上登录clickhouse。


-- 给用户授权
GRANT ALL ON *.* TO clickhouse WITH GRANT OPTION;
-- 查看用户权限
show create user clickhouse;
-- 查看授权
show grants for clickhouse;

3, 另外一种方式创建用户

直接在上面那个users.xml里添加用户也是可以的。

在<users></users>标签中间添加

<clickhouse>

        <password>clickhouse</password>

<clickhouse>

注: 这里是创建了一个账号clickhouse,密码是clickhouse。 你可以根据你的需要去创建账号。

完成保存,之后重启一下服务

二,连接ClickHouse

1,使用clickhouse账户登录

clickhouse-client -m --user clickhouse --password clickhouse

2,查看数据库

show databases;

3,  创建数据库,并切换数据库

登录之后,默认使用的schema是default

--创建数据库

CREATE DATABASE IF NOT EXISTS account;

--切换数据库

use account;

4,创建表

CREATE TABLE student
(
    `StudentID` UInt32,
    `StudentName` String,
    `Address` String,
    `Grade` Int8,
    `Age` Int8,
    `Gender` UInt8,
    `StartTime` DateTime
)
ENGINE = CollapsingMergeTree(Grade)
PARTITION BY toYYYYMM(StartTime)
ORDER BY (StudentID);
 

5,查询表

show tables

6,删除表

drop table student1;

语法和Mysql相似。

三,代码中连接ClickHouse

1,导入pom依赖

<!-- ClickHouse Start -->
<dependency>
    <groupId>ru.yandex.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
    <version>0.1.40</version>
</dependency>
<!-- ClickHouse End -->

2,加载驱动,插入数据,查询数据

package com.x.bigdata;

import java.sql.*;

public class TestConnectionClickHouse {
    private static Connection connection = null;
    static {
        try {
            Class.forName("ru.yandex.clickhouse.ClickHouseDriver");// 驱动包
            String url = "jdbc:clickhouse://x.x.x.x:8123/account";// url路径
            String user = "clickhouse";// 账号
            String password = "clickhouse";// 密码
            connection = DriverManager.getConnection(url, user, password);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    public static void main(String[] args) throws SQLException {
        insert();
        select();
        if (connection != null){
            connection.close();
        }
    }

    /**
     * 插入数据
     * @throws SQLException
     */
    public static void insert() throws SQLException {
        PreparedStatement prepareStatement = connection.prepareStatement("insert into account.student values (?,?,?,?,?,?,?)");
        prepareStatement.setInt(1,1002);
        prepareStatement.setString(2,"小猫猫");
        prepareStatement.setString(3,"中国-贵州-贵阳");
        prepareStatement.setInt(4,1);// 年级
        prepareStatement.setInt(5,21);
        prepareStatement.setInt(6,1); // 1:男,0:女
        prepareStatement.setDate(7,new Date(2020,12,22));
        prepareStatement.executeUpdate();
        if (prepareStatement != null){
            prepareStatement.close();
        }
    }

    /**
     * 查询数据
     * @throws SQLException
     */
    public static void select() throws SQLException {
        PreparedStatement statement = connection.prepareStatement("select * from account.student");
        ResultSet resultSet = statement.executeQuery();
        while (resultSet.next()){
            int studentID = resultSet.getInt(1);
            String studentName = resultSet.getString(2);
            System.out.println(studentID + "," + studentName);
        }
    }
}

后续就是集成到SpringBoot项目中。。。


http://www.kler.cn/a/382310.html

相关文章:

  • 深入理解网络协议:OSPF、VLAN、NAT与ACL详解
  • QML —— QML调用C++两种方法(附完整测试源码)
  • Spring框架和Spring Boot框架都使用注解来简化配置和提高开发效率,但它们之间存在一些区别
  • Rockchip SoC AI 与视觉处理器路线图:赋能未来的 AI 驱动设备
  • Ansys HFSS:外壳的屏蔽效果演示
  • Dify 中的 @login_required 装饰器
  • 【LeetCode】【算法】338. 比特位计数
  • TS-AWG控制电光调制器:推动科技应用新发展的利器
  • 一个.NET开源、轻量级的运行耗时统计库 - MethodTimer
  • Allegro: 开源的高级视频生成模型
  • 服务器的配置复杂,租用时该如何选择参数?
  • 数据库->索引
  • 入门车载以太网(3) -- 网络层
  • 核心概念解析Caffeine 缓存模型与策略
  • 在函数 \( f(x+1) = x^2 + 1 \) 中,\( x \) 和 \( x+1 \) 代表不同的概念
  • ElasticSearch认识
  • HFSS学习笔记(五)金属过孔、复制模型带激励等问题(持续更新...)
  • 【大数据学习 | kafka】kafka的偏移量管理
  • 黄山谷捷:以创新为翼,领航新能源汽车散热基板行业
  • kotlin android Handler removeCallbacks runnable不生效的一种可能
  • 033_Structure_Static_In_Matlab求解结构静力学问题两套方法
  • Oracle 第24章:云数据库服务
  • 基于Python的智能旅游推荐系统设计与实现
  • C++练习题(2)
  • VSCode 与 HBuilderX 介绍
  • 新一代Webshell管理器