原始网页:https://www.cockroachlabs.com/docs/stable/create-and-manage-users.html


使用cockroach user命令新增、管理、删除用户,以下内容围绕该命令展开。

TIPS: 用户也可以使用SQL语句CREATE USER或是DROP USER来管理用户。

注意事项

概要

# base
cockroach user <subcommand> <flags>

# Create a user:
cockroach user set <username> <flags>

# List all users:
cockroach user ls <flags>

# Display a specific user:
cockroach user get <username> <flags>

# View help:
cockroach user --help
cockroach user get --help
cockroach user ls --help
cockroach user rm --help
cockroach user set --help

Subcommands

subcommand 用法
get 检索系统内置用户表,包含用户名和哈希处理后的密码
ls 列出所有用户
rm 删除某一用户
set 创建或是更新某一用户

Flags

通用

Flag 简介
--password 使用密码验证
(changed in v2.0)在安全模式下只有非root用户才能使用密码验证,而root用户只能用客户端证书和密钥验证
--echo-sql (new in v1.1)显示命令行隐式发送的sql语句
--pretty 以ASCII art的形式格式化输出的表格行,禁用特殊的字符的转义。
--pretty=false的时候,表格行将以制表符分隔,并允许特殊字符转义。
若内容输出到终端,则默认为true,其余情况为false

客户端连接

Flag 简介
--host 指定服务器ip地址,可以是集群的任意节点。

环境变量COCKROACH_HOST
默认localhost
--port
-p
指定服务器端口

环境变量COCKROACH_PORT
默认26257
--user
-u
指定SQL用户

环境变量COCKROACH_USER
默认root
--insecure 使用非安全模式的连接

环境变量COCKROACH_INSECURE
默认false
--certs-dir 指定存放着CA证书和客户端证书密钥的目录

环境变量COCKROACH_CERTS_DIR
默认${HOME}/.cockroach-certs/
--url 指定connection url

环境变量COCKROACH_URL
默认:空

更多细节可以查看:客户端连接参数

目前,只有root账户能够创建用户。

NODE: (changed in v2.0)在安全模式下只有非root用户才能使用密码验证,而root用户只能用客户端证书和密钥验证。

日志

cockroach user命令默认输出错误日志到stderr,详见日志行为

用户验证

在安全模式下,需要用户在访问数据库或表格的时候进行安全验证,目前有两种验证方式。

客户端证书和密钥验证

适用于所有用户,为了确保集群访问的安全性,推荐用户只使用客户端证书与密钥的验证形式。

密码验证

在安全模式下非root用户可以使用密码进行安全验证,可以使用指令cockroach user set <username> --password <password>来设置密码。

(changed in v2.0)密码验证的功能只在安全模式下提供。

示例

创建用户

安全模式

cockroach user set jpointsman --certs-dir=certs

命名规则:

TIPS: 如需设置用户密码,可使用--passwordFlag,输入密码并确认密码。

创建用户之后,需要:

非安全模式

cockroach user set jpointsman --insecure

创建用户之后,需要为用户授权

用户验证

安全模式

cockroach sql --certs-dir=certs --user=jpointsman

若用户未设置证书,则退回密码验证形式。

非安全模式

cockroach sql --insecure --user=jpointsman

更新用户密码

cockroach user set jpointsman --certs-dir=certs --password

检索所有用户

cockroach user ls --insecure

+------------+
|  username  |
+------------+
| jpointsman |
+------------+

检索特定用户

cockroach user get jpointsman --insecure

+------------+--------------------------------------------------------------+
|  username  |                        hashedPassword                        |
+------------+--------------------------------------------------------------+
| jpointsman | $2a$108tm5lYjES9RSXSKtQFLhNO.e/ysTXCBIRe7XeTgBrR6ubXfp6dDczS |
+------------+--------------------------------------------------------------+

删除用户

WARNING: 删除用户不会将该用户的权限一并删除,若以后出现同一用户名的用户,将继承先前设置的所有权限。

cockroach user rm jpointsman --insecure

TIPS: 也可以使用SQL语句DROP USER来删除用户

查看隐式发送的SQL语句

使用--echo-sqlFlag,查看cockroach user命令运行执行后,隐式发送的相关SQL语句:

cockroach user rm jpointsman --insecure --echo-sql

>DELETE FROM system.users WHERE username=$1
DELETE 1