【clickhouse專欄】新建庫角色用戶初始化

一、創建新的database

clickhouse創建資料庫的語法幾乎和其他的關係型資料庫是一樣的,區別就是clickhouse存在集群cluster和庫引擎engine的概念,可以根據需要進行指定。如果沒有特殊需求,默認即可。

CREATE  DATABASE  [IF  NOT  EXISTS] db_name [ON CLUSTER cluster]  [ENGINE  =  engine(...)]

在創建資料庫的時候,我們首先要確認保存資料庫文件的目錄,對於clickhouse用戶有讀寫的許可權。如果你在安裝的時候,沒有修改資料庫文件目錄,默認的目錄是/var/lib/clickhouse/。我們可以使用下面的命令,將該目錄及其子目錄的屬主修改為clickhouse用戶。

chown clickhouse /var/lib/clickhouse/ -R

完成上面的操作步驟之後,就可以通過clickhouse-client -m --password <你的密碼>連接clichouse服務實例,創建資料庫的SQL如下:

:) CREATE DATABASE acaidb;

創建資料庫完成之後,使用show databases;命令看一下當前的clickhouse,有哪些database。(acaidb是我們自建的,default和system是clickhouse默認創建的database)

:) show databases;

┌─name────┐
│ acaidb  │
│ default │
│ system  │
└─────────┘

二、為default賬戶增加管理許可權

ClickHouse默認創建一個資料庫default,默認創建了一個用戶default。我們現在針對default用戶增加訪問管理許可權,因為該用戶默認情況下是不具備管理員許可權的,即:默認情況下,無法使用該用戶添加角色、添加用戶、以及其他許可權管理操作。

所以為了讓default用戶的管理許可權更大一些,我們修改 /etc/clickhouse-server/users.xml 文件,在users-> default標籤中,將access_management的注釋去掉。(在有些版本中其默認值是0,修改為1)

修改完成配置文件之後,重啟clickhouse-server,使用如下命令:

clickhouse  restart

三、創建角色及用戶

創建角色

創建一個角色acaidb_rw, 該角色針對資料庫acaidb具備讀寫許可權。

CREATE ROLE acaidb_rw;
GRANT SELECT, INSERT, ALTER UPDATE, ALTER DELETE ON acaidb.* TO acaidb_rw;

如果讓一個角色只允許select,不允許修改數據,下面的語句就可以。

CREATE ROLE acaidb_read;
GRANT SELECT ON acaidb.* TO acaidb_read;

創建普通賬戶並賦權

我們分別創建賬戶reader和writer,然後把只讀角色ro分配給reader,把讀寫角色分配給writer。這樣,reader擁有隻讀許可權,writer擁有讀寫許可權。
新建一個資料庫用戶acai,並設置密碼(將下文的<你的密碼>替換)。並給用戶acai賦予讀寫許可權角色acaidb_rw 。

CREATE USER IF NOT EXISTS acai IDENTIFIED WITH sha256_password BY '<你的密碼>';

GRANT acaidb_rw TO acai;

使用下列命令訪問clickhouse數據,show databases得到acaidb,說明我們成功了。因為acai用戶只能訪問acaidb。

# clickhouse-client -m -u acai --password '<你的密碼>' --query 'show databases;'
acaidb

推薦閱讀

限於博文篇幅,更多精彩內容我就不一一列舉了,推薦閱讀
《原創精品影片及配套文檔:springboot-已錄製97節(免費)》
等等等等

Tags: