Merge pull request #29088 from taosdata/fix/contrib

enh: add password character rules
This commit is contained in:
Shengliang Guan 2024-12-11 13:36:04 +08:00 committed by GitHub
commit 9fa3157b39
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
44 changed files with 437 additions and 133 deletions

9
.gitignore vendored
View File

@ -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

View File

@ -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.

View File

@ -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)
```

View File

@ -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 |

View File

@ -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
```
### 查看用户

View File

@ -54,7 +54,7 @@ taos> SET MAX_BINARY_DISPLAY_WIDTH <nn>;
- -h HOST: 要连接的 TDengine 服务端所在服务器的 FQDN, 默认为连接本地服务
- -P PORT: 指定服务端所用端口号
- -u USER: 连接时使用的用户名
- -p PASSWORD: 连接服务端时使用的密码
- -p PASSWORD: 连接服务端时使用的密码,特殊字符如 `! & ( ) < > ; |` 需使用字符 `\` 进行转义处理
- -?, --help: 打印出所有命令行参数
还有更多其他参数:

View File

@ -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)
```

View File

@ -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 | 密码不正确 | 确认操作是否正确 |

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -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;
}
}

View File

@ -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)

View File

@ -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")

View File

@ -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:

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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()

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;")

View File

@ -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 == ""):

View File

@ -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")

View File

@ -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"])

View File

@ -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'",

View File

@ -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'

View File

@ -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"

View File

@ -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'

View File

@ -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()

View File

@ -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;")

View File

@ -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")

View File

@ -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

View File

@ -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)

View File

@ -111,7 +111,7 @@ class TDTestCase:
"batchNum": 5000
}
username="user1"
passwd="123"
passwd="test123@#$"
dnodeNumbers=int(dnodeNumbers)
mnodeNums=int(mnodeNums)

View File

@ -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:

View File

@ -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:

View File

@ -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,