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