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

字母哥部落格發表於2022-06-11

一、建立新的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

推薦閱讀

《clickhouse專欄》

相關文章