Merge pull request #29088 from taosdata/fix/contrib
enh: add password character rules
This commit is contained in:
commit
9fa3157b39
|
@ -162,3 +162,12 @@ geos_c.h
|
|||
source/libs/parser/src/sql.c
|
||||
include/common/ttokenauto.h
|
||||
!packaging/smokeTest/pytest_require.txt
|
||||
tdengine-test-dir/
|
||||
localtime.c
|
||||
private.h
|
||||
strftime.c
|
||||
tzdir.h
|
||||
tzfile.h
|
||||
coverage.info
|
||||
taos
|
||||
taosd
|
|
@ -18,7 +18,7 @@ create user user_name pass'password' [sysinfo {1|0}]
|
|||
The parameters are explained as follows.
|
||||
|
||||
- user_name: Up to 23 B long.
|
||||
- password: Up to 128 B long, valid characters include letters and numbers as well as special characters other than single and double quotes, apostrophes, backslashes, and spaces, and it cannot be empty.
|
||||
- password: The password must be between 8 and 16 characters long and include at least three types of characters from the following: uppercase letters, lowercase letters, numbers, and special characters. Special characters include `! @ # $ % ^ & * ( ) - _ + = [ ] { } : ; > < ? | ~ , .`.
|
||||
- sysinfo: Whether the user can view system information. 1 means they can view it, 0 means they cannot. System information includes server configuration information, various node information such as dnode, query node (qnode), etc., as well as storage-related information, etc. The default is to view system information.
|
||||
|
||||
The following SQL can create a user named test with the password 123456 who can view system information.
|
||||
|
|
|
@ -13,14 +13,14 @@ CREATE USER user_name PASS 'password' [SYSINFO {1|0}];
|
|||
|
||||
The username can be up to 23 bytes long.
|
||||
|
||||
The password can be up to 31 bytes long. The password can include letters, numbers, and special characters except for single quotes, double quotes, backticks, backslashes, and spaces, and it cannot be an empty string.
|
||||
The password must be between 8 and 16 characters long and include at least three types of characters from the following: uppercase letters, lowercase letters, numbers, and special characters. Special characters include `! @ # $ % ^ & * ( ) - _ + = [ ] { } : ; > < ? | ~ , .`.
|
||||
|
||||
`SYSINFO` indicates whether the user can view system information. `1` means they can view, `0` means they have no permission to view. System information includes service configuration, dnode, vnode, storage, etc. The default value is `1`.
|
||||
|
||||
In the example below, we create a user with the password `123456` who can view system information.
|
||||
In the example below, we create a user with the password `abc123!@#` who can view system information.
|
||||
|
||||
```sql
|
||||
taos> create user test pass '123456' sysinfo 1;
|
||||
taos> create user test pass 'abc123!@#' sysinfo 1;
|
||||
Query OK, 0 of 0 rows affected (0.001254s)
|
||||
```
|
||||
|
||||
|
|
|
@ -119,7 +119,7 @@ This document details the server error codes that may be encountered when using
|
|||
| 0x80000350 | User already exists | Create user, duplicate creation | Confirm if the operation is correct |
|
||||
| 0x80000351 | Invalid user | User does not exist | Confirm if the operation is correct |
|
||||
| 0x80000352 | Invalid user format | Incorrect format | Confirm if the operation is correct |
|
||||
| 0x80000353 | Invalid password format | Incorrect format | Confirm if the operation is correct |
|
||||
| 0x80000353 | Invalid password format | The password must be between 8 and 16 characters long and include at least three types of characters from the following: uppercase letters, lowercase letters, numbers, and special characters. | Confirm if the operation is correct |
|
||||
| 0x80000354 | Can not get user from conn | Internal error | Report issue |
|
||||
| 0x80000355 | Too many users | (Enterprise only) Exceeding user limit | Adjust configuration |
|
||||
| 0x80000357 | Authentication failure | Incorrect password | Confirm if the operation is correct |
|
||||
|
|
|
@ -16,14 +16,14 @@ create user user_name pass'password' [sysinfo {1|0}]
|
|||
```
|
||||
|
||||
相关参数说明如下。
|
||||
- user_name:最长为 23 B。
|
||||
- password:最长为 128 B,合法字符包括字母和数字以及单双引号、撇号、反斜杠和空格以外的特殊字符,且不可以为空。
|
||||
- user_name:用户名最长不超过 23 个字节。
|
||||
- password:密码长度必须为 8 到 16 位,并且至少包含大写字母、小写字母、数字、特殊字符中的三类。特殊字符包括 `! @ # $ % ^ & * ( ) - _ + = [ ] { } : ; > < ? | ~ , .`。
|
||||
- sysinfo :用户是否可以查看系统信息。1 表示可以查看,0 表示不可以查看。系统信息包括服务端配置信息、服务端各种节点信息,如 dnode、查询节点(qnode)等,以及与存储相关的信息等。默认为可以查看系统信息。
|
||||
|
||||
如下 SQL 可以创建密码为 123456 且可以查看系统信息的用户 test。
|
||||
如下 SQL 可以创建密码为 abc123!@# 且可以查看系统信息的用户 test。
|
||||
|
||||
```sql
|
||||
create user test pass '123456' sysinfo 1
|
||||
create user test pass 'abc123!@#' sysinfo 1
|
||||
```
|
||||
|
||||
### 查看用户
|
||||
|
|
|
@ -54,7 +54,7 @@ taos> SET MAX_BINARY_DISPLAY_WIDTH <nn>;
|
|||
- -h HOST: 要连接的 TDengine 服务端所在服务器的 FQDN, 默认为连接本地服务
|
||||
- -P PORT: 指定服务端所用端口号
|
||||
- -u USER: 连接时使用的用户名
|
||||
- -p PASSWORD: 连接服务端时使用的密码
|
||||
- -p PASSWORD: 连接服务端时使用的密码,特殊字符如 `! & ( ) < > ; |` 需使用字符 `\` 进行转义处理
|
||||
- -?, --help: 打印出所有命令行参数
|
||||
|
||||
还有更多其他参数:
|
||||
|
|
|
@ -14,14 +14,14 @@ CREATE USER user_name PASS 'password' [SYSINFO {1|0}];
|
|||
|
||||
用户名最长不超过 23 个字节。
|
||||
|
||||
密码最长不超过 31 个字节。密码可以包含字母、数字以及除单引号、双引号、反引号、反斜杠和空格以外的特殊字符,密码不能为空字符串。
|
||||
密码长度必须为 8 到 16 位,并且至少包含大写字母、小写字母、数字、特殊字符中的三类。特殊字符包括 `! @ # $ % ^ & * ( ) - _ + = [ ] { } : ; > < ? | ~ , .`。
|
||||
|
||||
`SYSINFO` 表示该用户是否能够查看系统信息。`1` 表示可以查看,`0` 表示无权查看。系统信息包括服务配置、dnode、vnode、存储等信息。缺省值为 `1`。
|
||||
|
||||
在下面的示例中,我们创建一个密码为 `123456` 且可以查看系统信息的用户。
|
||||
在下面的示例中,我们创建一个密码为 `abc123!@#` 且可以查看系统信息的用户。
|
||||
|
||||
```sql
|
||||
taos> create user test pass '123456' sysinfo 1;
|
||||
taos> create user test pass 'abc123!@#' sysinfo 1;
|
||||
Query OK, 0 of 0 rows affected (0.001254s)
|
||||
```
|
||||
|
||||
|
|
|
@ -127,7 +127,7 @@ description: TDengine 服务端的错误码列表和详细说明
|
|||
| 0x80000350 | User already exists | Create user, 重复创建 | 确认操作是否正确 |
|
||||
| 0x80000351 | Invalid user | 用户不存在 | 确认操作是否正确 |
|
||||
| 0x80000352 | Invalid user format | 格式不正确 | 确认操作是否正确 |
|
||||
| 0x80000353 | Invalid password format | 格式不正确 | 确认操作是否正确 |
|
||||
| 0x80000353 | Invalid password format | 密码长度必须为 8 到 16 位,并且至少包含大写字母、小写字母、数字、特殊字符中的三类 | 确认密码字符串的格式 |
|
||||
| 0x80000354 | Can not get user from conn | 内部错误 | 上报issue |
|
||||
| 0x80000355 | Too many users | (仅企业版)用户数量超限 | 调整配置 |
|
||||
| 0x80000357 | Authentication failure | 密码不正确 | 确认操作是否正确 |
|
||||
|
|
|
@ -318,6 +318,8 @@ typedef enum ELogicConditionType {
|
|||
#define TSDB_MAX_JSON_KEY_LEN 256
|
||||
|
||||
#define TSDB_AUTH_LEN 16
|
||||
#define TSDB_PASSWORD_MIN_LEN 8
|
||||
#define TSDB_PASSWORD_MAX_LEN 16
|
||||
#define TSDB_PASSWORD_LEN 32
|
||||
#define TSDB_USET_PASSWORD_LEN 129
|
||||
#define TSDB_VERSION_LEN 32
|
||||
|
|
|
@ -230,6 +230,11 @@ static FORCE_INLINE int32_t taosGetTbHashVal(const char *tbname, int32_t tblen,
|
|||
|
||||
#define TAOS_UNUSED(expr) (void)(expr)
|
||||
|
||||
bool taosIsBigChar(char c);
|
||||
bool taosIsSmallChar(char c);
|
||||
bool taosIsNumberChar(char c);
|
||||
bool taosIsSpecialChar(char c);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1803,6 +1803,43 @@ _OVER:
|
|||
TAOS_RETURN(code);
|
||||
}
|
||||
|
||||
static int32_t mndCheckPasswordFmt(const char *pwd) {
|
||||
int32_t len = strlen(pwd);
|
||||
if (len < TSDB_PASSWORD_MIN_LEN || len > TSDB_PASSWORD_MAX_LEN) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (strcmp(pwd, "taosdata") == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool charTypes[4] = {0};
|
||||
for (int32_t i = 0; i < len; ++i) {
|
||||
if (taosIsBigChar(pwd[i])) {
|
||||
charTypes[0] = true;
|
||||
} else if (taosIsSmallChar(pwd[i])) {
|
||||
charTypes[1] = true;
|
||||
} else if (taosIsNumberChar(pwd[i])) {
|
||||
charTypes[2] = true;
|
||||
} else if (taosIsSpecialChar(pwd[i])) {
|
||||
charTypes[3] = true;
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
int32_t numOfTypes = 0;
|
||||
for (int32_t i = 0; i < 4; ++i) {
|
||||
numOfTypes += charTypes[i];
|
||||
}
|
||||
|
||||
if (numOfTypes < 3) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int32_t mndProcessCreateUserReq(SRpcMsg *pReq) {
|
||||
SMnode *pMnode = pReq->info.node;
|
||||
int32_t code = 0;
|
||||
|
@ -1836,7 +1873,7 @@ static int32_t mndProcessCreateUserReq(SRpcMsg *pReq) {
|
|||
TAOS_CHECK_GOTO(TSDB_CODE_MND_INVALID_USER_FORMAT, &lino, _OVER);
|
||||
}
|
||||
|
||||
if (createReq.pass[0] == 0) {
|
||||
if (mndCheckPasswordFmt(createReq.pass) != 0) {
|
||||
TAOS_CHECK_GOTO(TSDB_CODE_MND_INVALID_PASS_FORMAT, &lino, _OVER);
|
||||
}
|
||||
|
||||
|
@ -2325,8 +2362,7 @@ static int32_t mndProcessAlterUserReq(SRpcMsg *pReq) {
|
|||
TAOS_CHECK_GOTO(TSDB_CODE_MND_INVALID_USER_FORMAT, &lino, _OVER);
|
||||
}
|
||||
|
||||
if (TSDB_ALTER_USER_PASSWD == alterReq.alterType &&
|
||||
(alterReq.pass[0] == 0 || strlen(alterReq.pass) >= TSDB_PASSWORD_LEN)) {
|
||||
if (TSDB_ALTER_USER_PASSWD == alterReq.alterType && mndCheckPasswordFmt(alterReq.pass) != 0) {
|
||||
TAOS_CHECK_GOTO(TSDB_CODE_MND_INVALID_PASS_FORMAT, &lino, _OVER);
|
||||
}
|
||||
|
||||
|
|
|
@ -520,3 +520,63 @@ int32_t parseCfgReal(const char *str, float *out) {
|
|||
*out = val;
|
||||
return TSDB_CODE_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
bool taosIsBigChar(char c) {
|
||||
if (c >= 'A' && c <= 'Z') {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool taosIsSmallChar(char c) {
|
||||
if (c >= 'a' && c <= 'z') {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool taosIsNumberChar(char c) {
|
||||
if (c >= '0' && c <= '9') {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool taosIsSpecialChar(char c) {
|
||||
switch (c) {
|
||||
case '!':
|
||||
case '@':
|
||||
case '#':
|
||||
case '$':
|
||||
case '%':
|
||||
case '^':
|
||||
case '&':
|
||||
case '*':
|
||||
case '(':
|
||||
case ')':
|
||||
case '-':
|
||||
case '_':
|
||||
case '+':
|
||||
case '=':
|
||||
case '[':
|
||||
case ']':
|
||||
case '{':
|
||||
case '}':
|
||||
case ':':
|
||||
case ';':
|
||||
case '>':
|
||||
case '<':
|
||||
case '?':
|
||||
case '|':
|
||||
case '~':
|
||||
case ',':
|
||||
case '.':
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
|
@ -40,9 +40,9 @@ class TDTestCase(TBase):
|
|||
def test_common_user_privileges(self):
|
||||
self.prepare_data()
|
||||
# create user
|
||||
self.create_user("test", "test")
|
||||
self.create_user("test", "test12@#*")
|
||||
# check user 'test' privileges
|
||||
testconn = taos.connect(user='test', password='test')
|
||||
testconn = taos.connect(user='test', password='test12@#*')
|
||||
cursor = testconn.cursor()
|
||||
testSql = TDSql()
|
||||
testSql.init(cursor)
|
||||
|
@ -87,9 +87,9 @@ class TDTestCase(TBase):
|
|||
def test_common_user_with_createdb_privileges(self):
|
||||
self.prepare_data()
|
||||
# create user
|
||||
self.create_user("test", "test")
|
||||
self.create_user("test", "test12@#*")
|
||||
# check user 'test' privileges
|
||||
testconn = taos.connect(user='test', password='test')
|
||||
testconn = taos.connect(user='test', password='test12@#*')
|
||||
cursor = testconn.cursor()
|
||||
testSql = TDSql()
|
||||
testSql.init(cursor)
|
||||
|
@ -133,8 +133,8 @@ class TDTestCase(TBase):
|
|||
testSql.checkRows(2)
|
||||
|
||||
# create another user 'test1'
|
||||
self.create_user("test1", "test1")
|
||||
test1conn = taos.connect(user='test1', password='test1')
|
||||
self.create_user("test1", "test12@#*^%")
|
||||
test1conn = taos.connect(user='test1', password='test12@#*^%')
|
||||
cursor1 = test1conn.cursor()
|
||||
test1Sql = TDSql()
|
||||
test1Sql.init(cursor1)
|
||||
|
|
|
@ -305,9 +305,9 @@ class TDTestCase(TBase):
|
|||
"""
|
||||
try:
|
||||
# create new user and grant create database priviledge
|
||||
tdSql.execute("create user test pass 'test';")
|
||||
tdSql.execute("create user test pass 'ab45*&TC';")
|
||||
tdSql.execute("alter user test createdb 1;")
|
||||
conn = taos.connect(user="test", password="test")
|
||||
conn = taos.connect(user="test", password="ab45*&TC")
|
||||
cursor = conn.cursor()
|
||||
# create database and tables with new user
|
||||
tdLog.info("Prepare data for test case test_abnormal_drop_table_with_non_root_user")
|
||||
|
|
|
@ -26,10 +26,10 @@ class TDTestCase:
|
|||
def run(self):
|
||||
print("==============step1")
|
||||
try:
|
||||
tdSql.execute("create user abc pass '123456'")
|
||||
tdSql.execute("create user abc pass '123456rf@#'")
|
||||
except Exception as e:
|
||||
tdLog.exit(e)
|
||||
print("create user abc pass '123456'")
|
||||
print("create user abc pass '123456rf@#'")
|
||||
|
||||
print("==============step2")
|
||||
try:
|
||||
|
|
|
@ -67,7 +67,7 @@ if $data(2)[2] != follower then
|
|||
endi
|
||||
|
||||
print =============== create user
|
||||
sql create user user1 PASS 'user1'
|
||||
sql create user user1 PASS 'user1@#xy'
|
||||
sql select * from information_schema.ins_users
|
||||
if $rows != 2 then
|
||||
return -1
|
||||
|
|
|
@ -68,7 +68,7 @@ if $leaderExist != 1 then
|
|||
endi
|
||||
|
||||
print =============== step3: create user
|
||||
sql create user user1 PASS 'user1'
|
||||
sql create user user1 PASS 'user121$*'
|
||||
sql select * from information_schema.ins_users
|
||||
if $rows != 2 then
|
||||
return -1
|
||||
|
|
|
@ -8,7 +8,7 @@ system sh/deploy.sh -n dnode1 -i 1
|
|||
system sh/cfg.sh -n dnode1 -c udf -v 1
|
||||
system sh/exec.sh -n dnode1 -s start
|
||||
sql connect
|
||||
sql alter user root pass 'taosdata2'
|
||||
sql alter user root pass '12s34(*&xx'
|
||||
system sh/exec.sh -n dnode1 -s stop
|
||||
system sh/exec.sh -n dnode1 -s start
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ sql create mnode on dnode 3
|
|||
sleep 3000
|
||||
|
||||
print =============== create user
|
||||
sql create user user1 PASS 'user1'
|
||||
sql create user user1 PASS 'usersdf1$*'
|
||||
sql select * from information_schema.ins_users
|
||||
if $rows != 2 then
|
||||
return -1
|
||||
|
|
|
@ -11,8 +11,8 @@ system sh/exec.sh -n dnode1 -s start
|
|||
sql connect
|
||||
|
||||
print =============== create user1
|
||||
sql create user user1 PASS 'user1'
|
||||
sql create user user2 PASS 'user2'
|
||||
sql create user user1 PASS 'use@##r1$*'
|
||||
sql create user user2 PASS 'use&*r2$*'
|
||||
sql select * from information_schema.ins_users
|
||||
if $rows != 3 then
|
||||
return -1
|
||||
|
|
|
@ -4,8 +4,8 @@ system sh/exec.sh -n dnode1 -s start
|
|||
sql connect
|
||||
|
||||
print ============= step1
|
||||
sql create user u_read pass 'taosdata1'
|
||||
sql create user u_write pass 'taosdata1'
|
||||
sql create user u_read pass 'tbx12F132!'
|
||||
sql create user u_write pass 'tbx12145&*'
|
||||
|
||||
sql alter user u_read pass 'taosdata'
|
||||
sql alter user u_write pass 'taosdata'
|
||||
|
@ -15,6 +15,164 @@ if $rows != 3 then
|
|||
return -1
|
||||
endi
|
||||
|
||||
# invalid password format
|
||||
|
||||
sql_error create user user_p1 pass 'taosdata1'
|
||||
sql_error create user user_p1 pass 'taosdata2'
|
||||
sql_error create user user_p1 pass '!@#$%^&3'
|
||||
sql_error create user user_p1 pass '1234564'
|
||||
sql_error create user user_p1 pass 'taosdataa'
|
||||
sql_error create user user_p1 pass 'taosdatab'
|
||||
sql_error create user user_p1 pass '!@#$%^&c'
|
||||
sql_error create user user_p1 pass '123456d'
|
||||
sql_error create user user_p1 pass 'taosdataE'
|
||||
sql_error create user user_p1 pass 'taosdataF'
|
||||
sql_error create user user_p1 pass '!@#$%^&G'
|
||||
sql_error create user user_p1 pass '12333315H'
|
||||
sql_error create user user_p1 pass 'aaaaaaaat1'
|
||||
sql_error create user user_p1 pass 'TTTTTTTTT2'
|
||||
sql_error create user user_p1 pass '!@#$%^&!3'
|
||||
sql_error create user user_p1 pass '12345654'
|
||||
sql_error create user user_p1 pass 'taosdatata'
|
||||
sql_error create user user_p1 pass 'TAOSDATATb'
|
||||
sql_error create user user_p1 pass '!@#$%^&!c'
|
||||
sql_error create user user_p1 pass '1234565d'
|
||||
sql_error create user user_p1 pass 'taosdatatE'
|
||||
sql_error create user user_p1 pass 'TAOSDATATF'
|
||||
sql_error create user user_p1 pass '!@#$$*!G'
|
||||
sql_error create user user_p1 pass '1234565H'
|
||||
sql_error create user user_p1 pass 'taosdataaosdata!'
|
||||
sql_error create user user_p1 pass 'taosdataaosdata@'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#'
|
||||
sql_error create user user_p1 pass '!@#$%^&'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#@'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*##'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#$'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#%'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#^'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#&'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#*'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#('
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#)'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#-'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#_'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#+'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#='
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#['
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#]'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#{'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#}'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#:'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#;'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#>'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#<'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#?'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#|'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#~'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#,'
|
||||
sql_error create user user_p1 pass '!@#$%^&@*#.'
|
||||
sql_error create user user_p1 pass 'tbd1234TTT\'
|
||||
sql_error create user user_p1 pass 'tbd1234TTT/'
|
||||
sql_error create user user_p1 pass 'tbd1234TTT`'
|
||||
sql_error create user user_p1 pass 'taosdatax'
|
||||
sql_error create user user_p1 pass 'taosdatay'
|
||||
|
||||
sql_error create user user_p1 pass 'abcd!@1'
|
||||
sql create user user_p2 pass 'abcd!@12'
|
||||
sql create user user_p3 pass 'abcd!@123'
|
||||
sql create user user_p4 pass 'abcd!@1234'
|
||||
sql create user user_p5 pass 'abcd!@12345'
|
||||
sql create user user_p6 pass 'abcd!@123456'
|
||||
sql create user user_p7 pass 'abcd!@1234567'
|
||||
sql create user user_p8 pass 'abcd!@123456789'
|
||||
sql create user user_p9 pass 'abcd!@1234567890'
|
||||
sql_error create user user_p10 pass 'abcd!@1234567890T'
|
||||
sql drop user user_p2
|
||||
sql drop user user_p3
|
||||
sql drop user user_p4
|
||||
sql drop user user_p5
|
||||
sql drop user user_p6
|
||||
sql drop user user_p7
|
||||
sql drop user user_p8
|
||||
sql drop user user_p9
|
||||
|
||||
sql create user user_p1 pass 'xt12!@cd'
|
||||
|
||||
sql_error alter user user_p1 pass 'abcd!@1'
|
||||
sql alter user user_p1 pass 'abcd!@12'
|
||||
sql alter user user_p1 pass 'abcd!@123'
|
||||
sql alter user user_p1 pass 'abcd!@1234'
|
||||
sql alter user user_p1 pass 'abcd!@12345'
|
||||
sql alter user user_p1 pass 'abcd!@123456'
|
||||
sql alter user user_p1 pass 'abcd!@1234567'
|
||||
sql alter user user_p1 pass 'abcd!@123456789'
|
||||
sql alter user user_p1 pass 'abcd!@1234567890'
|
||||
sql_error user user_p1 pass 'abcd!@1234567890T'
|
||||
sql_error alter user user_p1 pass 'taosdata1'
|
||||
sql_error alter user user_p1 pass 'taosdata2'
|
||||
sql_error alter user user_p1 pass '!@#$%^&3'
|
||||
sql_error alter user user_p1 pass '1234564'
|
||||
sql_error alter user user_p1 pass 'taosdataa'
|
||||
sql_error alter user user_p1 pass 'taosdatab'
|
||||
sql_error alter user user_p1 pass '!@#$%^&c'
|
||||
sql_error alter user user_p1 pass '123456d'
|
||||
sql_error alter user user_p1 pass 'taosdataE'
|
||||
sql_error alter user user_p1 pass 'taosdataF'
|
||||
sql_error alter user user_p1 pass '!@#$%^&G'
|
||||
sql_error alter user user_p1 pass '12334515H'
|
||||
sql_error alter user user_p1 pass 'aasfdsft1'
|
||||
sql_error alter user user_p1 pass 'TAOSDATAT2'
|
||||
sql_error alter user user_p1 pass '!@#$%^&!3'
|
||||
sql_error alter user user_p1 pass '12345654'
|
||||
sql_error alter user user_p1 pass 'taosdatata'
|
||||
sql_error alter user user_p1 pass 'TAOSDATATb'
|
||||
sql_error alter user user_p1 pass '!@#$%^&!c'
|
||||
sql_error alter user user_p1 pass '1234565d'
|
||||
sql_error alter user user_p1 pass 'taosdatatE'
|
||||
sql_error alter user user_p1 pass 'TAOSDATATF'
|
||||
sql_error alter user user_p1 pass '*%^^%###!G'
|
||||
sql_error alter user user_p1 pass '1234565H'
|
||||
sql_error alter user user_p1 pass 'taosdataaosdata!'
|
||||
sql_error alter user user_p1 pass 'taosdataaosdata@'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#'
|
||||
sql_error alter user user_p1 pass '!@#$%^&'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#@'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*##'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#$'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#%'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#^'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#&'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#*'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#('
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#)'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#-'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#_'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#+'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#='
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#['
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#]'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#{'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#}'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#:'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#;'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#>'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#<'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#?'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#|'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#~'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#,'
|
||||
sql_error alter user user_p1 pass '!@#$%^&@*#.'
|
||||
sql_error alter user user_p1 pass 'tbd1234TTT\'
|
||||
sql_error alter user user_p1 pass 'tbd1234TTT/'
|
||||
sql_error alter user user_p1 pass 'tbd1234TTT`'
|
||||
sql_error alter user user_p1 pass 'taosdatax'
|
||||
sql_error alter user user_p1 pass 'taosdatay'
|
||||
|
||||
sql drop user user_p1
|
||||
|
||||
sql create user user_px pass 'taosdata'
|
||||
sql drop user user_px
|
||||
|
||||
print ============= step2
|
||||
print user u_read login
|
||||
sql close
|
||||
|
@ -54,7 +212,7 @@ sql create user oroot pass 'taosdata'
|
|||
sql_error create user $user PASS 'abcd012345678901234567891234567890abcd012345678901234567891234567890abcd012345678901234567891234567890abcd012345678901234567891234567890123'
|
||||
sql_error create userabcd012345678901234567891234567890abcd01234567890123456789123456789 PASS 'taosdata'
|
||||
sql_error create user abcd0123456789012345678901234567890111 PASS '123'
|
||||
sql create user abc01234567890123456789 PASS '123'
|
||||
sql create user abc01234567890123456789 PASS '123xyzYDE'
|
||||
|
||||
sql show users
|
||||
if $rows != 5 then
|
||||
|
@ -84,4 +242,34 @@ sql_error REVOKE all ON *.* from o_root;
|
|||
sql_error GRANT read,write ON *.* to o_root;
|
||||
sql_error REVOKE read,write ON *.* from o_root;
|
||||
|
||||
|
||||
sql create user u01 pass 'taosdata1!'
|
||||
sql create user u02 pass 'taosdata1@'
|
||||
sql create user u03 pass 'taosdata1#'
|
||||
# sql create user u04 pass 'taosdata1$'
|
||||
sql create user u05 pass 'taosdata1%'
|
||||
sql create user u06 pass 'taosdata1^'
|
||||
sql create user u07 pass 'taosdata1&'
|
||||
sql create user u08 pass 'taosdata1*'
|
||||
sql create user u09 pass 'taosdata1('
|
||||
sql create user u10 pass 'taosdata1)'
|
||||
sql create user u11 pass 'taosdata1-'
|
||||
sql create user u12 pass 'taosdata1_'
|
||||
sql create user u13 pass 'taosdata1+'
|
||||
sql create user u14 pass 'taosdata1='
|
||||
sql create user u15 pass 'taosdata1['
|
||||
sql create user u16 pass 'taosdata1]'
|
||||
sql create user u17 pass 'taosdata1{'
|
||||
sql create user u18 pass 'taosdata1}'
|
||||
sql create user u19 pass 'taosdata1:'
|
||||
sql create user u20 pass 'taosdata1;'
|
||||
sql create user u21 pass 'taosdata1>'
|
||||
sql create user u22 pass 'taosdata1<'
|
||||
sql create user u23 pass 'taosdata1?'
|
||||
sql create user u24 pass 'taosdata1|'
|
||||
sql create user u25 pass 'taosdata1~'
|
||||
sql create user u26 pass 'taosdata1,'
|
||||
sql create user u27 pass 'taosdata1.'
|
||||
|
||||
return
|
||||
system sh/exec.sh -n dnode1 -s stop -x SIGINT
|
|
@ -17,8 +17,8 @@ if $rows != 5 then
|
|||
endi
|
||||
|
||||
print =============== create users
|
||||
sql create user user1 PASS 'user1'
|
||||
sql create user user2 PASS 'user2'
|
||||
sql create user user1 PASS '123124(*&xx)'
|
||||
sql create user user2 PASS '1234(*&xx'
|
||||
sql select * from information_schema.ins_users
|
||||
if $rows != 3 then
|
||||
return -1
|
||||
|
|
|
@ -4,8 +4,8 @@ system sh/exec.sh -n dnode1 -s start
|
|||
sql connect
|
||||
|
||||
print ============= step1
|
||||
sql create user u_read pass 'taosdata1' host '127.0.0.1/24','192.168.1.0/24'
|
||||
sql create user u_write pass 'taosdata1' host '127.0.0.1','192.168.1.0'
|
||||
sql create user u_read pass 'taosdata1xad@#' host '127.0.0.1/24','192.168.1.0/24'
|
||||
sql create user u_write pass 'taosdata1TadBD' host '127.0.0.1','192.168.1.0'
|
||||
|
||||
sql alter user u_read add host '3.3.3.4/24'
|
||||
sql_error alter user u_write drop host '4.4.4.5/25'
|
||||
|
@ -16,8 +16,8 @@ if $rows != 3 then
|
|||
endi
|
||||
|
||||
print ============= step2
|
||||
sql_error create user read1 pass 'taosdata1' host '127.0.0/24'
|
||||
sql_error create user write1 pass 'taosdata1' host '4.4.4.4/33'
|
||||
sql_error create user read1 pass 'taosdata1XR' host '127.0.0/24'
|
||||
sql_error create user write1 pass 'TZtaosdata1' host '4.4.4.4/33'
|
||||
|
||||
sql show users
|
||||
if $rows != 3 then
|
||||
|
|
|
@ -114,7 +114,7 @@ class TDTestCase:
|
|||
consumer_dict = {
|
||||
"group.id": "g1",
|
||||
"td.connect.user": self.user_name,
|
||||
"td.connect.pass": "test",
|
||||
"td.connect.pass": "123456rf@#",
|
||||
"auto.offset.reset": "earliest"
|
||||
}
|
||||
consumer = Consumer(consumer_dict)
|
||||
|
@ -167,7 +167,7 @@ class TDTestCase:
|
|||
|
||||
def create_user(self):
|
||||
tdSql.execute(f'create topic {self.topic_name} as database {self.dbnames[0]}')
|
||||
tdSql.execute(f'create user {self.user_name} pass "test"')
|
||||
tdSql.execute(f'create user {self.user_name} pass "123456rf@#"')
|
||||
|
||||
def run(self):
|
||||
self.prepare_data()
|
||||
|
|
|
@ -158,7 +158,7 @@ class TDTestCase:
|
|||
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
||||
tdSql.prepare()
|
||||
# time.sleep(2)
|
||||
tdSql.query("create user testpy pass 'testpy'")
|
||||
tdSql.query("create user testpy pass 'testpy243#@'")
|
||||
tdSql.query("alter user testpy createdb 1")
|
||||
|
||||
#hostname = socket.gethostname()
|
||||
|
@ -175,7 +175,7 @@ class TDTestCase:
|
|||
checkNetworkStatus = ['0: unavailable', '1: network ok', '2: service ok', '3: service degraded', '4: exiting']
|
||||
netrole = ['client', 'server']
|
||||
|
||||
keyDict = {'h':'', 'P':'6030', 'p':'testpy', 'u':'testpy', 'a':'', 'A':'', 'c':'', 'C':'', 's':'', 'r':'', 'f':'', \
|
||||
keyDict = {'h':'', 'P':'6030', 'p':'testpy243#@', 'u':'testpy', 'a':'', 'A':'', 'c':'', 'C':'', 's':'', 'r':'', 'f':'', \
|
||||
'k':'', 't':'', 'n':'', 'l':'1024', 'N':'100', 'V':'', 'd':'db', 'w':'30', '-help':'', '-usage':'', '?':''}
|
||||
|
||||
keyDict['h'] = self.hostname
|
||||
|
|
|
@ -134,7 +134,7 @@ class TDTestCase:
|
|||
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
||||
tdSql.prepare()
|
||||
# time.sleep(2)
|
||||
tdSql.query("create user testpy pass 'testpy'")
|
||||
tdSql.query("create user testpy pass 'testpy243#@'")
|
||||
|
||||
#hostname = socket.gethostname()
|
||||
#tdLog.info ("hostname: %s" % hostname)
|
||||
|
@ -150,7 +150,7 @@ class TDTestCase:
|
|||
checkNetworkStatus = ['0: unavailable', '1: network ok', '2: service ok', '3: service degraded', '4: exiting']
|
||||
netrole = ['client', 'server']
|
||||
|
||||
keyDict = {'h':'', 'P':'6030', 'p':'testpy', 'u':'testpy', 'a':'', 'A':'', 'c':'', 'C':'', 's':'', 'r':'', 'f':'', \
|
||||
keyDict = {'h':'', 'P':'6030', 'p':'testpy243#@', 'u':'testpy', 'a':'', 'A':'', 'c':'', 'C':'', 's':'', 'r':'', 'f':'', \
|
||||
'k':'', 't':'', 'n':'', 'l':'1024', 'N':'100', 'V':'', 'd':'db', 'w':'30', '-help':'', '-usage':'', '?':''}
|
||||
|
||||
keyDict['h'] = self.hostname
|
||||
|
|
|
@ -133,7 +133,7 @@ class TDTestCase:
|
|||
|
||||
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
||||
tdSql.prepare()
|
||||
tdSql.query("create user testpy pass 'testpy'")
|
||||
tdSql.query("create user testpy pass 'testpy243#@'")
|
||||
|
||||
buildPath = self.getBuildPath()
|
||||
if (buildPath == ""):
|
||||
|
@ -146,7 +146,7 @@ class TDTestCase:
|
|||
checkNetworkStatus = ['0: unavailable', '1: network ok', '2: service ok', '3: service degraded', '4: exiting']
|
||||
netrole = ['client', 'server']
|
||||
|
||||
keyDict = {'h':'', 'P':'6030', 'p':'testpy', 'u':'testpy', 'a':'', 'A':'', 'c':'', 'C':'', 's':'', 'r':'', 'f':'', \
|
||||
keyDict = {'h':'', 'P':'6030', 'p':'testpy243#@', 'u':'testpy', 'a':'', 'A':'', 'c':'', 'C':'', 's':'', 'r':'', 'f':'', \
|
||||
'k':'', 't':'', 'n':'', 'l':'1024', 'N':'100', 'V':'', 'd':'db', 'w':'30', '-help':'', '-usage':'', '?':''}
|
||||
|
||||
keyDict['h'] = self.hostname
|
||||
|
|
|
@ -132,7 +132,7 @@ class TDTestCase:
|
|||
|
||||
def preData(self):
|
||||
# database\stb\tb\chiild-tb\rows\topics
|
||||
tdSql.execute("create user testpy pass 'testpy'")
|
||||
tdSql.execute("create user testpy pass 'testpy243#@'")
|
||||
tdSql.execute("drop database if exists db0;")
|
||||
tdSql.execute("create database db0 wal_retention_period 3600;")
|
||||
tdSql.execute("use db0;")
|
||||
|
|
|
@ -34,7 +34,7 @@ class TDTestCase:
|
|||
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
||||
tdSql.prepare()
|
||||
# time.sleep(2)
|
||||
tdSql.query("create user testpy pass 'testpy'")
|
||||
tdSql.query("create user testpy pass 't123#$estpy'")
|
||||
|
||||
buildPath = self.getBuildPath()
|
||||
if (buildPath == ""):
|
||||
|
|
|
@ -182,14 +182,14 @@ class TDTestCase:
|
|||
for i in range(self.users_count):
|
||||
user = User()
|
||||
user.name = f"user_test{i}"
|
||||
user.passwd = f"taosdata{i}"
|
||||
user.passwd = f"taosdata@1{i}"
|
||||
user.db_set = set()
|
||||
self.users.append(user)
|
||||
return self.users
|
||||
|
||||
@property
|
||||
def __passwd_list(self):
|
||||
return [f"taosdata{i}" for i in range(self.users_count) ]
|
||||
return [f"taosdata@1{i}" for i in range(self.users_count) ]
|
||||
|
||||
@property
|
||||
def __privilege(self):
|
||||
|
@ -210,34 +210,34 @@ class TDTestCase:
|
|||
|
||||
def create_user_err(self):
|
||||
sqls = [
|
||||
"create users u1 pass 'u1passwd' ",
|
||||
"create user '' pass 'u1passwd' ",
|
||||
"create user pass 'u1passwd' ",
|
||||
"create user u1 pass u1passwd ",
|
||||
"create user u1 password 'u1passwd' ",
|
||||
"create user u1 pass u1passwd ",
|
||||
"create users u1 pass 'u1Passwd' ",
|
||||
"create user '' pass 'u1Passwd' ",
|
||||
"create user pass 'u1Passwd' ",
|
||||
"create user u1 pass u1Passwd ",
|
||||
"create user u1 password 'u1Passwd' ",
|
||||
"create user u1 pass u1Passwd ",
|
||||
"create user u1 pass '' ",
|
||||
"create user u1 pass ' ' ",
|
||||
"create user u1 pass ",
|
||||
"create user u1 u2 pass 'u1passwd' 'u2passwd' ",
|
||||
"create user u1 u2 pass 'u1passwd', 'u2passwd' ",
|
||||
"create user u1, u2 pass 'u1passwd', 'u2passwd' ",
|
||||
"create user u1, u2 pass 'u1passwd' 'u2passwd' ",
|
||||
"create user u1 u2 pass 'u1Passwd' 'u2passwd' ",
|
||||
"create user u1 u2 pass 'u1Passwd', 'u2passwd' ",
|
||||
"create user u1, u2 pass 'u1Passwd', 'u2passwd' ",
|
||||
"create user u1, u2 pass 'u1Passwd' 'u2passwd' ",
|
||||
# length of user_name must <= 23
|
||||
"create user u12345678901234567890123 pass 'u1passwd' " ,
|
||||
"create user u12345678901234567890123 pass 'u1Passwd' " ,
|
||||
# length of passwd must <= 128
|
||||
"create user u1 pass 'u12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678' " ,
|
||||
# password must have not " ' ~ ` \
|
||||
"create user u1 pass 'u1passwd\\' " ,
|
||||
"create user u1 pass 'u1passwd~' " ,
|
||||
"create user u1 pass 'u1passwd\"' " ,
|
||||
"create user u1 pass 'u1passwd\'' " ,
|
||||
"create user u1 pass 'u1passwd`' " ,
|
||||
"create user u1 pass 'u1Passwd\\' " ,
|
||||
"create user u1 pass 'u1Passwd~' " ,
|
||||
"create user u1 pass 'u1Passwd\"' " ,
|
||||
"create user u1 pass 'u1Passwd\'' " ,
|
||||
"create user u1 pass 'u1Passwd`' " ,
|
||||
# must after create a user named u1
|
||||
"create user u1 pass 'u1passwd' " ,
|
||||
"create user u1 pass 'u1Passwd' " ,
|
||||
]
|
||||
|
||||
tdSql.execute("create user u1 pass 'u1passwd' ")
|
||||
tdSql.execute("create user u1 pass 'u1Passwd' ")
|
||||
for sql in sqls:
|
||||
tdSql.error(sql)
|
||||
|
||||
|
@ -258,12 +258,12 @@ class TDTestCase:
|
|||
|
||||
def alter_pass_err(self): # sourcery skip: remove-redundant-fstring
|
||||
sqls = [
|
||||
f"alter users {self.__user_list[0]} pass 'newpass' " ,
|
||||
f"alter users {self.__user_list[0]} pass 'newpassT1' " ,
|
||||
f"alter user {self.__user_list[0]} pass '' " ,
|
||||
f"alter user {self.__user_list[0]} pass ' ' " ,
|
||||
f"alter user anyuser pass 'newpass' " ,
|
||||
f"alter user anyuser pass 'newpassT1' " ,
|
||||
f"alter user {self.__user_list[0]} pass " ,
|
||||
f"alter user {self.__user_list[0]} password 'newpass' " ,
|
||||
f"alter user {self.__user_list[0]} password 'newpassT1' " ,
|
||||
]
|
||||
for sql in sqls:
|
||||
tdSql.error(sql)
|
||||
|
@ -649,7 +649,7 @@ class TDTestCase:
|
|||
# user = conn
|
||||
# 不能创建用户
|
||||
tdLog.printNoPrefix("==========step4.1: normal user can not create user")
|
||||
user.error("create use utest1 pass 'utest1pass'")
|
||||
user.error("create use utest1 pass 'utest1Pass'")
|
||||
# 可以查看用户
|
||||
tdLog.printNoPrefix("==========step4.2: normal user can show user")
|
||||
user.query("show users")
|
||||
|
|
|
@ -80,16 +80,16 @@ class TDTestCase:
|
|||
for user_name in ['jiacy1_all', 'jiacy1_read', 'jiacy1_write', 'jiacy1_none', 'jiacy0_all', 'jiacy0_read',
|
||||
'jiacy0_write', 'jiacy0_none']:
|
||||
if 'jiacy1' in user_name.lower():
|
||||
tdSql.execute(f'create user {user_name} pass "123" sysinfo 1')
|
||||
tdSql.execute(f'create user {user_name} pass "123abc!@#" sysinfo 1')
|
||||
elif 'jiacy0' in user_name.lower():
|
||||
tdSql.execute(f'create user {user_name} pass "123" sysinfo 0')
|
||||
tdSql.execute(f'create user {user_name} pass "123abc!@#" sysinfo 0')
|
||||
for user_name in ['jiacy1_all', 'jiacy1_read', 'jiacy0_all', 'jiacy0_read']:
|
||||
tdSql.execute(f'grant read on db to {user_name}')
|
||||
for user_name in ['jiacy1_all', 'jiacy1_write', 'jiacy0_all', 'jiacy0_write']:
|
||||
tdSql.execute(f'grant write on db to {user_name}')
|
||||
|
||||
def user_privilege_check(self):
|
||||
jiacy1_read_conn = taos.connect(user='jiacy1_read', password='123')
|
||||
jiacy1_read_conn = taos.connect(user='jiacy1_read', password='123abc!@#')
|
||||
sql = "create table ntb (ts timestamp,c0 int)"
|
||||
expectErrNotOccured = True
|
||||
try:
|
||||
|
@ -107,14 +107,14 @@ class TDTestCase:
|
|||
pass
|
||||
|
||||
def drop_topic(self):
|
||||
jiacy1_all_conn = taos.connect(user='jiacy1_all', password='123')
|
||||
jiacy1_read_conn = taos.connect(user='jiacy1_read', password='123')
|
||||
jiacy1_write_conn = taos.connect(user='jiacy1_write', password='123')
|
||||
jiacy1_none_conn = taos.connect(user='jiacy1_none', password='123')
|
||||
jiacy0_all_conn = taos.connect(user='jiacy0_all', password='123')
|
||||
jiacy0_read_conn = taos.connect(user='jiacy0_read', password='123')
|
||||
jiacy0_write_conn = taos.connect(user='jiacy0_write', password='123')
|
||||
jiacy0_none_conn = taos.connect(user='jiacy0_none', password='123')
|
||||
jiacy1_all_conn = taos.connect(user='jiacy1_all', password='123abc!@#')
|
||||
jiacy1_read_conn = taos.connect(user='jiacy1_read', password='123abc!@#')
|
||||
jiacy1_write_conn = taos.connect(user='jiacy1_write', password='123abc!@#')
|
||||
jiacy1_none_conn = taos.connect(user='jiacy1_none', password='123abc!@#')
|
||||
jiacy0_all_conn = taos.connect(user='jiacy0_all', password='123abc!@#')
|
||||
jiacy0_read_conn = taos.connect(user='jiacy0_read', password='123abc!@#')
|
||||
jiacy0_write_conn = taos.connect(user='jiacy0_write', password='123abc!@#')
|
||||
jiacy0_none_conn = taos.connect(user='jiacy0_none', password='123abc!@#')
|
||||
tdSql.execute('create topic root_db as select * from db.stb')
|
||||
for user in [jiacy1_all_conn, jiacy1_read_conn, jiacy0_all_conn, jiacy0_read_conn]:
|
||||
user.execute(f'create topic db_jiacy as select * from db.stb')
|
||||
|
@ -149,7 +149,7 @@ class TDTestCase:
|
|||
tdSql.execute('create topic db_topic as select * from db.stb')
|
||||
tdSql.execute('grant subscribe on db_topic to jiacy1_all')
|
||||
print("build consumer")
|
||||
tmq = Consumer({"group.id": "tg2", "td.connect.user": "jiacy1_all", "td.connect.pass": "123",
|
||||
tmq = Consumer({"group.id": "tg2", "td.connect.user": "jiacy1_all", "td.connect.pass": "123abc!@#",
|
||||
"enable.auto.commit": "true"})
|
||||
print("build topic list")
|
||||
tmq.subscribe(["db_topic"])
|
||||
|
|
|
@ -58,7 +58,7 @@ class TDTestCase:
|
|||
self.stbnum_grant = 200
|
||||
|
||||
def create_user(self):
|
||||
tdSql.execute(f'create user {self.user_name} pass "test"')
|
||||
tdSql.execute(f'create user {self.user_name} pass "test123@#$"')
|
||||
tdSql.execute(f'grant read on {self.dbnames[0]}.{self.stbname} with t2 = "Beijing" to {self.user_name}')
|
||||
tdSql.execute(f'grant write on {self.dbnames[1]}.{self.stbname} with t1 = 2 to {self.user_name}')
|
||||
|
||||
|
@ -75,7 +75,7 @@ class TDTestCase:
|
|||
tdSql.execute(f'create table {self.stbname}_grant_{i} (ts timestamp, c0 int) tags(t0 int)')
|
||||
|
||||
def user_read_privilege_check(self, dbname):
|
||||
testconn = taos.connect(user='test', password='test')
|
||||
testconn = taos.connect(user='test', password='test123@#$')
|
||||
expectErrNotOccured = False
|
||||
|
||||
try:
|
||||
|
@ -94,7 +94,7 @@ class TDTestCase:
|
|||
pass
|
||||
|
||||
def user_write_privilege_check(self, dbname):
|
||||
testconn = taos.connect(user='test', password='test')
|
||||
testconn = taos.connect(user='test', password='test123@#$')
|
||||
expectErrNotOccured = False
|
||||
|
||||
try:
|
||||
|
@ -110,7 +110,7 @@ class TDTestCase:
|
|||
pass
|
||||
|
||||
def user_privilege_error_check(self):
|
||||
testconn = taos.connect(user='test', password='test')
|
||||
testconn = taos.connect(user='test', password='test123@#$')
|
||||
expectErrNotOccured = False
|
||||
|
||||
sql_list = [f"alter talbe {self.dbnames[0]}.stb_1 set t2 = 'Wuhan'",
|
||||
|
|
|
@ -21,7 +21,7 @@ class TDTestCase:
|
|||
self.setsql = TDSetSql()
|
||||
# user info
|
||||
self.username = 'test'
|
||||
self.password = 'test'
|
||||
self.password = 'test123@#$'
|
||||
# db info
|
||||
self.dbname = "user_privilege_all_db"
|
||||
self.stbname = 'stb'
|
||||
|
|
|
@ -19,7 +19,7 @@ class TDTestCase:
|
|||
# user info
|
||||
self.userNum = 100
|
||||
self.basic_username = "user"
|
||||
self.password = "pwd"
|
||||
self.password = "test123@#$"
|
||||
|
||||
# db info
|
||||
self.dbname = "user_privilege_multi_users"
|
||||
|
|
|
@ -20,7 +20,7 @@ class TDTestCase:
|
|||
self.setsql = TDSetSql()
|
||||
# user info
|
||||
self.username = 'test'
|
||||
self.password = 'test'
|
||||
self.password = 'test123@#$'
|
||||
# db info
|
||||
self.dbname = "user_privilege_show"
|
||||
self.stbname = 'stb'
|
||||
|
|
|
@ -231,7 +231,7 @@ class TDTestCase:
|
|||
"""
|
||||
self.prepare_data()
|
||||
username = "view_test"
|
||||
password = "test"
|
||||
password = "test123@#$"
|
||||
self.create_user(username, password)
|
||||
# grant all db permission to user
|
||||
tdSql.execute("grant all on view_db.* to view_test;")
|
||||
|
@ -271,7 +271,7 @@ class TDTestCase:
|
|||
"""This test case is used to verify the view permission with db write and view all
|
||||
"""
|
||||
username = "view_test"
|
||||
password = "test"
|
||||
password = "test123@#$"
|
||||
self.create_user(username, password)
|
||||
conn = taos.connect(user=username, password=password)
|
||||
self.prepare_data(conn)
|
||||
|
@ -302,7 +302,7 @@ class TDTestCase:
|
|||
"""This test case is used to verify the view permission with db write and view read
|
||||
"""
|
||||
username = "view_test"
|
||||
password = "test"
|
||||
password = "test123@#$"
|
||||
self.create_user(username, password)
|
||||
conn = taos.connect(user=username, password=password)
|
||||
self.prepare_data()
|
||||
|
@ -338,7 +338,7 @@ class TDTestCase:
|
|||
"""This test case is used to verify the view permission with db write and view alter
|
||||
"""
|
||||
username = "view_test"
|
||||
password = "test"
|
||||
password = "test123@#$"
|
||||
self.create_user(username, password)
|
||||
conn = taos.connect(user=username, password=password)
|
||||
self.prepare_data()
|
||||
|
@ -362,7 +362,7 @@ class TDTestCase:
|
|||
"""This test case is used to verify the view permission with db read and view all
|
||||
"""
|
||||
username = "view_test"
|
||||
password = "test"
|
||||
password = "test123@#$"
|
||||
self.create_user(username, password)
|
||||
conn = taos.connect(user=username, password=password)
|
||||
self.prepare_data()
|
||||
|
@ -388,7 +388,7 @@ class TDTestCase:
|
|||
"""This test case is used to verify the view permission with db read and view alter
|
||||
"""
|
||||
username = "view_test"
|
||||
password = "test"
|
||||
password = "test123@#$"
|
||||
self.create_user(username, password)
|
||||
conn = taos.connect(user=username, password=password)
|
||||
self.prepare_data()
|
||||
|
@ -413,7 +413,7 @@ class TDTestCase:
|
|||
"""This test case is used to verify the view permission with db read and view read
|
||||
"""
|
||||
username = "view_test"
|
||||
password = "test"
|
||||
password = "test123@#$"
|
||||
self.create_user(username, password)
|
||||
conn = taos.connect(user=username, password=password)
|
||||
self.prepare_data()
|
||||
|
|
|
@ -40,7 +40,7 @@ class TDTestCase:
|
|||
|
||||
def preData(self):
|
||||
# database\stb\tb\chiild-tb\rows\topics
|
||||
tdSql.execute("create user testpy pass 'testpy'")
|
||||
tdSql.execute("create user testpy pass 'test123@#$'")
|
||||
tdSql.execute("drop database if exists db0;")
|
||||
tdSql.execute("create database db0 WAL_RETENTION_PERIOD -1 WAL_RETENTION_SIZE -1 ;")
|
||||
tdSql.execute("use db0;")
|
||||
|
|
|
@ -33,7 +33,7 @@ class TDTestCase:
|
|||
self.colname_length_boundary = self.boundary.COL_KEY_MAX_LENGTH
|
||||
self.tagname_length_boundary = self.boundary.TAG_KEY_MAX_LENGTH
|
||||
self.username_length_boundary = 23
|
||||
self.password_length_boundary = 31
|
||||
self.password_length_boundary = 14
|
||||
def dbname_length_check(self):
|
||||
dbname_length = randint(1,self.dbname_length_boundary-1)
|
||||
for dbname in [tdCom.get_long_name(self.dbname_length_boundary),tdCom.get_long_name(dbname_length)]:
|
||||
|
@ -120,27 +120,31 @@ class TDTestCase:
|
|||
def username_length_check(self):
|
||||
username_length = randint(1,self.username_length_boundary-1)
|
||||
for username in [tdCom.get_long_name(username_length),tdCom.get_long_name(self.username_length_boundary)]:
|
||||
tdSql.execute(f'create user {username} pass "123"')
|
||||
tdSql.execute(f'create user {username} pass "test123@#$"')
|
||||
tdSql.query('show users')
|
||||
for user in tdSql.queryResult:
|
||||
if user[0].lower() != 'root':
|
||||
tdSql.checkEqual(user[0],username)
|
||||
tdSql.execute(f'drop user {username}')
|
||||
username = tdCom.get_long_name(self.username_length_boundary+1)
|
||||
tdSql.error(f'create user {username} pass "123"')
|
||||
tdSql.error(f'create user {username} pass "test123@#$"')
|
||||
if "Name or password too long" in tdSql.error_info:
|
||||
tdLog.info("error info is true!")
|
||||
else:
|
||||
tdLog.exit("error info is not true")
|
||||
|
||||
def password_length_check(self):
|
||||
password_length = randint(1,self.password_length_boundary-1)
|
||||
password_length = randint(8,self.password_length_boundary-1)
|
||||
index = 0
|
||||
for password in [tdCom.get_long_name(password_length),tdCom.get_long_name(self.password_length_boundary)]:
|
||||
username = tdCom.get_long_name(3)
|
||||
tdSql.execute(f'create user {username} pass "{password}"')
|
||||
index += 1
|
||||
username = tdCom.get_long_name(12) + str(index)
|
||||
tdSql.execute(f'create user {username} pass "{password}@1"')
|
||||
index += 1
|
||||
username = tdCom.get_long_name(12) + str(index)
|
||||
password = tdCom.get_long_name(self.password_length_boundary+1)
|
||||
tdSql.error(f'create user {username} pass "{password}"')
|
||||
if "Name or password too long" in tdSql.error_info:
|
||||
tdSql.error(f'create user {username} pass "{password}@1"')
|
||||
if "Invalid password format" in tdSql.error_info:
|
||||
tdLog.info("error info is true!")
|
||||
else:
|
||||
tdLog.exit("error info is not true")
|
||||
|
|
|
@ -104,7 +104,7 @@ class TDTestCase:
|
|||
def run(self): # sourcery skip: extract-duplicate-method, remove-redundant-fstring
|
||||
tdSql.prepare()
|
||||
# time.sleep(2)
|
||||
tdSql.query("create user testpy pass 'testpy'")
|
||||
tdSql.query("create user testpy pass 'test123@#$'")
|
||||
|
||||
buildPath = self.getBuildPath()
|
||||
if (buildPath == ""):
|
||||
|
@ -117,7 +117,7 @@ class TDTestCase:
|
|||
checkNetworkStatus = ['0: unavailable', '1: network ok', '2: service ok', '3: service degraded', '4: exiting']
|
||||
netrole = ['client', 'server']
|
||||
|
||||
keyDict = {'h':'', 'P':'6030', 'p':'testpy', 'u':'testpy', 'a':'', 'A':'', 'c':'', 'C':'', 's':'', 'r':'', 'f':'', \
|
||||
keyDict = {'h':'', 'P':'6030', 'p':'test123@#$', 'u':'testpy', 'a':'', 'A':'', 'c':'', 'C':'', 's':'', 'r':'', 'f':'', \
|
||||
'k':'', 't':'', 'n':'', 'l':'1024', 'N':'100', 'V':'', 'd':'db', 'w':'30', '-help':'', '-usage':'', '?':''}
|
||||
|
||||
keyDict['h'] = self.hostname
|
||||
|
|
|
@ -500,7 +500,7 @@ class TDTestCase:
|
|||
tdSql.execute('create stable sel_null.join_stable(`时间戳` timestamp, c1 int) tags(`标签1` int)', queryTimes=1)
|
||||
tdSql.query('select a.值 from sel_null.stable1 a join sel_null.join_stable b on a.ts = 时间戳;', queryTimes=1)
|
||||
tdSql.query('select a.值 from sel_null.stable1 a join sel_null.join_stable b on a.ts = b.时间戳;', queryTimes=1)
|
||||
tdSql.execute('create user user1 pass "asd"', queryTimes=1)
|
||||
tdSql.execute('create user user1 pass "asdxtz@#12"', queryTimes=1)
|
||||
tdSql.execute('grant write on sel_null.stable1 with 标签1 = 1 to user1',queryTimes=1)
|
||||
tdSql.execute('select count(*) from sel_null.stable1 state_window(值)', queryTimes=1)
|
||||
|
||||
|
|
|
@ -111,7 +111,7 @@ class TDTestCase:
|
|||
"batchNum": 5000
|
||||
}
|
||||
username="user1"
|
||||
passwd="123"
|
||||
passwd="test123@#$"
|
||||
|
||||
dnodeNumbers=int(dnodeNumbers)
|
||||
mnodeNums=int(mnodeNums)
|
||||
|
|
|
@ -163,15 +163,15 @@ class TDTestCase:
|
|||
threads.append(threading.Thread(target=clusterComCreate.insert_data, args=(newTdSql, paraDict["dbName"],stableName,paraDict["ctbNum"],paraDict["rowsPerTbl"],paraDict["batchNum"],paraDict["startTs"])))
|
||||
|
||||
for i in range(5):
|
||||
clusterComCreate.createUser(newTdSql,f"user{i}",f"pass{i}")
|
||||
userTdSql=tdCom.newTdSql(user=f"user{i}",password=f"pass{i}")
|
||||
clusterComCreate.alterUser(userTdSql,f"user{i}",f"pass{i+1}")
|
||||
clusterComCreate.createUser(newTdSql,f"user{i}",f"passwd@{i}")
|
||||
userTdSql=tdCom.newTdSql(user=f"user{i}",password=f"passwd@{i}")
|
||||
clusterComCreate.alterUser(userTdSql,f"user{i}",f"passwd@{i+1}")
|
||||
clusterComCreate.deleteUser(newTdSql,f"user{i}")
|
||||
for j in range(5):
|
||||
i=100
|
||||
clusterComCreate.createUser(newTdSql,f"user{i}",f"pass{i}")
|
||||
userTdSql=tdCom.newTdSql(user=f"user{i}",password=f"pass{i}")
|
||||
clusterComCreate.alterUser(userTdSql,f"user{i}",f"pass{i+1}")
|
||||
clusterComCreate.createUser(newTdSql,f"user{i}",f"passwd@{i}")
|
||||
userTdSql=tdCom.newTdSql(user=f"user{i}",password=f"passwd@{i}")
|
||||
clusterComCreate.alterUser(userTdSql,f"user{i}",f"passwd@{i+1}")
|
||||
clusterComCreate.deleteUser(newTdSql,f"user{i}")
|
||||
|
||||
for tr in threads:
|
||||
|
|
|
@ -13,9 +13,9 @@ class TDTestCase:
|
|||
self.conn = conn
|
||||
tdSql.init(conn.cursor(), False)
|
||||
self.passwd = {'root':'taosdata',
|
||||
'test':'test'}
|
||||
'test':'test123@#$'}
|
||||
def prepare_user(self):
|
||||
tdSql.execute(f"create user test pass 'test' sysinfo 1")
|
||||
tdSql.execute(f"create user test pass 'test123@#$' sysinfo 1")
|
||||
|
||||
def test_connect_user(self, uname):
|
||||
try:
|
||||
|
|
|
@ -1436,7 +1436,7 @@ int sml_td22900_Test() {
|
|||
int sml_td24070_Test() {
|
||||
TAOS *taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||
|
||||
TAOS_RES *pRes = taos_query(taos, "CREATE user test_db pass 'test'");
|
||||
TAOS_RES *pRes = taos_query(taos, "CREATE user test_db pass 'test@123'");
|
||||
ASSERT(taos_errno(pRes) == 0);
|
||||
taos_free_result(pRes);
|
||||
|
||||
|
@ -1460,7 +1460,7 @@ int sml_td24070_Test() {
|
|||
|
||||
|
||||
// test db privilege
|
||||
taos = taos_connect("localhost", "test_db", "test", NULL, 0);
|
||||
taos = taos_connect("localhost", "test_db", "test@123", NULL, 0);
|
||||
const char* sql[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299372000"};
|
||||
|
||||
pRes = taos_query(taos, "use td24070_read");
|
||||
|
@ -1491,11 +1491,11 @@ int sml_td24070_Test() {
|
|||
// test stable privilege
|
||||
taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||
|
||||
pRes = taos_query(taos, "CREATE user test_stb_read pass 'test'");
|
||||
pRes = taos_query(taos, "CREATE user test_stb_read pass 'test@123'");
|
||||
ASSERT(taos_errno(pRes) == 0);
|
||||
taos_free_result(pRes);
|
||||
|
||||
pRes = taos_query(taos, "CREATE user test_stb_write pass 'test'");
|
||||
pRes = taos_query(taos, "CREATE user test_stb_write pass 'test@123'");
|
||||
ASSERT(taos_errno(pRes) == 0);
|
||||
taos_free_result(pRes);
|
||||
|
||||
|
@ -1508,7 +1508,7 @@ int sml_td24070_Test() {
|
|||
taos_free_result(pRes);
|
||||
taos_close(taos);
|
||||
|
||||
taos = taos_connect("localhost", "test_stb_read", "test", "td24070_write", 0);
|
||||
taos = taos_connect("localhost", "test_stb_read", "test@123", "td24070_write", 0);
|
||||
const char* sql1[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299373000"};
|
||||
|
||||
pRes = taos_schemaless_insert(taos, (char **)sql1, sizeof(sql1) / sizeof(sql1[0]), TSDB_SML_LINE_PROTOCOL,
|
||||
|
@ -1520,7 +1520,7 @@ int sml_td24070_Test() {
|
|||
taos_free_result(pRes);
|
||||
taos_close(taos);
|
||||
|
||||
taos = taos_connect("localhost", "test_stb_write", "test", "td24070_write", 0);
|
||||
taos = taos_connect("localhost", "test_stb_write", "test@123", "td24070_write", 0);
|
||||
const char* sql2[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299373000"};
|
||||
|
||||
pRes = taos_schemaless_insert(taos, (char **)sql2, sizeof(sql2) / sizeof(sql2[0]), TSDB_SML_LINE_PROTOCOL,
|
||||
|
@ -1536,11 +1536,11 @@ int sml_td24070_Test() {
|
|||
// test table privilege
|
||||
taos = taos_connect("localhost", "root", "taosdata", NULL, 0);
|
||||
|
||||
pRes = taos_query(taos, "CREATE user test_tb_read pass 'test'");
|
||||
pRes = taos_query(taos, "CREATE user test_tb_read pass 'test@123'");
|
||||
ASSERT(taos_errno(pRes) == 0);
|
||||
taos_free_result(pRes);
|
||||
|
||||
pRes = taos_query(taos, "CREATE user test_tb_write pass 'test'");
|
||||
pRes = taos_query(taos, "CREATE user test_tb_write pass 'test@123'");
|
||||
ASSERT(taos_errno(pRes) == 0);
|
||||
taos_free_result(pRes);
|
||||
|
||||
|
@ -1553,7 +1553,7 @@ int sml_td24070_Test() {
|
|||
taos_free_result(pRes);
|
||||
taos_close(taos);
|
||||
|
||||
taos = taos_connect("localhost", "test_tb_read", "test", "td24070_write", 0);
|
||||
taos = taos_connect("localhost", "test_tb_read", "test@123", "td24070_write", 0);
|
||||
const char* sql3[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299374000"};
|
||||
|
||||
|
||||
|
@ -1566,7 +1566,7 @@ int sml_td24070_Test() {
|
|||
taos_free_result(pRes);
|
||||
taos_close(taos);
|
||||
|
||||
taos = taos_connect("localhost", "test_tb_write", "test", "td24070_write", 0);
|
||||
taos = taos_connect("localhost", "test_tb_write", "test@123", "td24070_write", 0);
|
||||
const char* sql4[] = {"stb2,t1=1,dataModelName=t0 f1=283i32 1632299374000"};
|
||||
|
||||
pRes = taos_schemaless_insert(taos, (char **)sql4, sizeof(sql4) / sizeof(sql4[0]), TSDB_SML_LINE_PROTOCOL,
|
||||
|
|
Loading…
Reference in New Issue