[TD-193] authority in account manage
This commit is contained in:
parent
6796a1b355
commit
6a851fde8e
|
@ -884,6 +884,8 @@ void mgmtDropAllDbs(SAcctObj *pAcct) {
|
||||||
SDbObj *pDb = NULL;
|
SDbObj *pDb = NULL;
|
||||||
void * pNode = NULL;
|
void * pNode = NULL;
|
||||||
|
|
||||||
|
mPrint("acct:%s, all dbs will be dropped from sdb", pAcct->user);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
pNode = sdbFetchRow(tsDbSdb, pNode, (void **)&pDb);
|
pNode = sdbFetchRow(tsDbSdb, pNode, (void **)&pDb);
|
||||||
if (pDb == NULL) break;
|
if (pDb == NULL) break;
|
||||||
|
@ -902,5 +904,5 @@ void mgmtDropAllDbs(SAcctObj *pAcct) {
|
||||||
mgmtDecDbRef(pDb);
|
mgmtDecDbRef(pDb);
|
||||||
}
|
}
|
||||||
|
|
||||||
mTrace("acct:%s, all dbs is is dropped from sdb", pAcct->user, numOfDbs);
|
mPrint("acct:%s, all dbs:%d is dropped from sdb", pAcct->user, numOfDbs);
|
||||||
}
|
}
|
||||||
|
|
|
@ -260,7 +260,7 @@ void mgmtProcessCfgDnodeMsg(SQueuedMsg *pMsg) {
|
||||||
}
|
}
|
||||||
uint32_t dnodeIp = inet_addr(pCmCfgDnode->ip);
|
uint32_t dnodeIp = inet_addr(pCmCfgDnode->ip);
|
||||||
|
|
||||||
if (strcmp(pMsg->pUser->pAcct->user, "root") != 0) {
|
if (strcmp(pMsg->pUser->user, "root") != 0) {
|
||||||
rpcRsp.code = TSDB_CODE_NO_RIGHTS;
|
rpcRsp.code = TSDB_CODE_NO_RIGHTS;
|
||||||
} else {
|
} else {
|
||||||
SRpcIpSet ipSet = mgmtGetIpSetFromIp(dnodeIp);
|
SRpcIpSet ipSet = mgmtGetIpSetFromIp(dnodeIp);
|
||||||
|
@ -469,7 +469,7 @@ static void mgmtProcessCreateDnodeMsg(SQueuedMsg *pMsg) {
|
||||||
|
|
||||||
SCMCreateDnodeMsg *pCreate = pMsg->pCont;
|
SCMCreateDnodeMsg *pCreate = pMsg->pCont;
|
||||||
|
|
||||||
if (strcmp(pMsg->pUser->pAcct->user, "root") != 0) {
|
if (strcmp(pMsg->pUser->user, "root") != 0) {
|
||||||
rpcRsp.code = TSDB_CODE_NO_RIGHTS;
|
rpcRsp.code = TSDB_CODE_NO_RIGHTS;
|
||||||
} else {
|
} else {
|
||||||
uint32_t ip = inet_addr(pCreate->ip);
|
uint32_t ip = inet_addr(pCreate->ip);
|
||||||
|
@ -489,7 +489,7 @@ static void mgmtProcessDropDnodeMsg(SQueuedMsg *pMsg) {
|
||||||
SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0};
|
SRpcMsg rpcRsp = {.handle = pMsg->thandle, .pCont = NULL, .contLen = 0, .code = 0, .msgType = 0};
|
||||||
|
|
||||||
SCMDropDnodeMsg *pDrop = pMsg->pCont;
|
SCMDropDnodeMsg *pDrop = pMsg->pCont;
|
||||||
if (strcmp(pMsg->pUser->pAcct->user, "root") != 0) {
|
if (strcmp(pMsg->pUser->user, "root") != 0) {
|
||||||
rpcRsp.code = TSDB_CODE_NO_RIGHTS;
|
rpcRsp.code = TSDB_CODE_NO_RIGHTS;
|
||||||
} else {
|
} else {
|
||||||
uint32_t ip = inet_addr(pDrop->ip);
|
uint32_t ip = inet_addr(pDrop->ip);
|
||||||
|
|
|
@ -333,7 +333,7 @@ void sdbIncRef(void *handle, void *pRow) {
|
||||||
SSdbTable *pTable = handle;
|
SSdbTable *pTable = handle;
|
||||||
int32_t * pRefCount = (int32_t *)(pRow + pTable->refCountPos);
|
int32_t * pRefCount = (int32_t *)(pRow + pTable->refCountPos);
|
||||||
atomic_add_fetch_32(pRefCount, 1);
|
atomic_add_fetch_32(pRefCount, 1);
|
||||||
if (0 && strcmp(pTable->tableName, "accounts") == 0) {
|
if (1 && strcmp(pTable->tableName, "accounts") == 0) {
|
||||||
sdbTrace("table:%s, add ref to record:%s:%s:%d", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow),
|
sdbTrace("table:%s, add ref to record:%s:%s:%d", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow),
|
||||||
*pRefCount);
|
*pRefCount);
|
||||||
}
|
}
|
||||||
|
@ -345,7 +345,7 @@ void sdbDecRef(void *handle, void *pRow) {
|
||||||
SSdbTable *pTable = handle;
|
SSdbTable *pTable = handle;
|
||||||
int32_t * pRefCount = (int32_t *)(pRow + pTable->refCountPos);
|
int32_t * pRefCount = (int32_t *)(pRow + pTable->refCountPos);
|
||||||
int32_t refCount = atomic_sub_fetch_32(pRefCount, 1);
|
int32_t refCount = atomic_sub_fetch_32(pRefCount, 1);
|
||||||
if (0 && strcmp(pTable->tableName, "accounts") == 0) {
|
if (1 && strcmp(pTable->tableName, "accounts") == 0) {
|
||||||
sdbTrace("table:%s, def ref of record:%s:%s:%d", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow),
|
sdbTrace("table:%s, def ref of record:%s:%s:%d", pTable->tableName, pTable->tableName, sdbGetkeyStr(pTable, pRow),
|
||||||
*pRefCount);
|
*pRefCount);
|
||||||
}
|
}
|
||||||
|
@ -400,6 +400,8 @@ static int32_t sdbInsertHash(SSdbTable *pTable, SSdbOper *pOper) {
|
||||||
|
|
||||||
if (pTable->keyType == SDB_KEY_AUTO) {
|
if (pTable->keyType == SDB_KEY_AUTO) {
|
||||||
pTable->autoIndex = MAX(pTable->autoIndex, *((uint32_t *)pOper->pObj));
|
pTable->autoIndex = MAX(pTable->autoIndex, *((uint32_t *)pOper->pObj));
|
||||||
|
} else {
|
||||||
|
pTable->autoIndex++;
|
||||||
}
|
}
|
||||||
|
|
||||||
pthread_mutex_unlock(&pTable->mutex);
|
pthread_mutex_unlock(&pTable->mutex);
|
||||||
|
|
|
@ -1109,12 +1109,11 @@ void mgmtDropAllSuperTables(SDbObj *pDropDb) {
|
||||||
int32_t dbNameLen = strlen(pDropDb->name);
|
int32_t dbNameLen = strlen(pDropDb->name);
|
||||||
SSuperTableObj *pTable = NULL;
|
SSuperTableObj *pTable = NULL;
|
||||||
|
|
||||||
|
mPrint("db:%s, all super tables will be dropped from sdb", pDropDb->name);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
mgmtDecTableRef(pTable);
|
|
||||||
pNode = sdbFetchRow(tsSuperTableSdb, pNode, (void **)&pTable);
|
pNode = sdbFetchRow(tsSuperTableSdb, pNode, (void **)&pTable);
|
||||||
if (pTable == NULL) {
|
if (pTable == NULL) break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strncmp(pDropDb->name, pTable->info.tableId, dbNameLen) == 0) {
|
if (strncmp(pDropDb->name, pTable->info.tableId, dbNameLen) == 0) {
|
||||||
SSdbOper oper = {
|
SSdbOper oper = {
|
||||||
|
@ -1125,10 +1124,12 @@ void mgmtDropAllSuperTables(SDbObj *pDropDb) {
|
||||||
sdbDeleteRow(&oper);
|
sdbDeleteRow(&oper);
|
||||||
pNode = pLastNode;
|
pNode = pLastNode;
|
||||||
numOfTables ++;
|
numOfTables ++;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mgmtDecTableRef(pTable);
|
||||||
}
|
}
|
||||||
mTrace("db:%s, all super tables:%d is dropped from sdb", pDropDb->name, numOfTables);
|
|
||||||
|
mPrint("db:%s, all super tables:%d is dropped from sdb", pDropDb->name, numOfTables);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int32_t mgmtSetSchemaFromSuperTable(SSchema *pSchema, SSuperTableObj *pTable) {
|
static int32_t mgmtSetSchemaFromSuperTable(SSchema *pSchema, SSuperTableObj *pTable) {
|
||||||
|
@ -1678,12 +1679,11 @@ void mgmtDropAllChildTables(SDbObj *pDropDb) {
|
||||||
int32_t dbNameLen = strlen(pDropDb->name);
|
int32_t dbNameLen = strlen(pDropDb->name);
|
||||||
SChildTableObj *pTable = NULL;
|
SChildTableObj *pTable = NULL;
|
||||||
|
|
||||||
|
mPrint("db:%s, all child tables will be dropped from sdb", pDropDb->name);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
mgmtDecTableRef(pTable);
|
|
||||||
pNode = sdbFetchRow(tsChildTableSdb, pNode, (void **)&pTable);
|
pNode = sdbFetchRow(tsChildTableSdb, pNode, (void **)&pTable);
|
||||||
if (pTable == NULL) {
|
if (pTable == NULL) break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (strncmp(pDropDb->name, pTable->info.tableId, dbNameLen) == 0) {
|
if (strncmp(pDropDb->name, pTable->info.tableId, dbNameLen) == 0) {
|
||||||
SSdbOper oper = {
|
SSdbOper oper = {
|
||||||
|
@ -1694,11 +1694,11 @@ void mgmtDropAllChildTables(SDbObj *pDropDb) {
|
||||||
sdbDeleteRow(&oper);
|
sdbDeleteRow(&oper);
|
||||||
pNode = pLastNode;
|
pNode = pLastNode;
|
||||||
numOfTables++;
|
numOfTables++;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
mgmtDecTableRef(pTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
mTrace("db:%s, all child tables:%d is dropped from sdb", pDropDb->name, numOfTables);
|
mPrint("db:%s, all child tables:%d is dropped from sdb", pDropDb->name, numOfTables);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mgmtDropAllChildTablesInStable(SSuperTableObj *pStable) {
|
static void mgmtDropAllChildTablesInStable(SSuperTableObj *pStable) {
|
||||||
|
@ -1707,12 +1707,11 @@ static void mgmtDropAllChildTablesInStable(SSuperTableObj *pStable) {
|
||||||
int32_t numOfTables = 0;
|
int32_t numOfTables = 0;
|
||||||
SChildTableObj *pTable = NULL;
|
SChildTableObj *pTable = NULL;
|
||||||
|
|
||||||
|
mPrint("stable:%s, all child tables will dropped from sdb", pStable->info.tableId, numOfTables);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
mgmtDecTableRef(pTable);
|
|
||||||
pNode = sdbFetchRow(tsChildTableSdb, pNode, (void **)&pTable);
|
pNode = sdbFetchRow(tsChildTableSdb, pNode, (void **)&pTable);
|
||||||
if (pTable == NULL) {
|
if (pTable == NULL) break;
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pTable->superTable == pStable) {
|
if (pTable->superTable == pStable) {
|
||||||
SSdbOper oper = {
|
SSdbOper oper = {
|
||||||
|
@ -1723,11 +1722,12 @@ static void mgmtDropAllChildTablesInStable(SSuperTableObj *pStable) {
|
||||||
sdbDeleteRow(&oper);
|
sdbDeleteRow(&oper);
|
||||||
pNode = pLastNode;
|
pNode = pLastNode;
|
||||||
numOfTables++;
|
numOfTables++;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mgmtDecTableRef(pTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
mTrace("stable:%s, all child tables:%d is dropped from sdb", pStable->info.tableId, numOfTables);
|
mPrint("stable:%s, all child tables:%d is dropped from sdb", pStable->info.tableId, numOfTables);
|
||||||
}
|
}
|
||||||
|
|
||||||
static SChildTableObj* mgmtGetTableByPos(uint32_t dnodeId, int32_t vnode, int32_t sid) {
|
static SChildTableObj* mgmtGetTableByPos(uint32_t dnodeId, int32_t vnode, int32_t sid) {
|
||||||
|
|
|
@ -353,6 +353,7 @@ static void mgmtProcessCreateUserMsg(SQueuedMsg *pMsg) {
|
||||||
mLPrint("user:%s, is created by %s", pCreate->user, pOperUser->user);
|
mLPrint("user:%s, is created by %s", pCreate->user, pOperUser->user);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
mError("user:%s, no rights to create user", pOperUser->user);
|
||||||
code = TSDB_CODE_NO_RIGHTS;
|
code = TSDB_CODE_NO_RIGHTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,6 +399,7 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) {
|
||||||
code = mgmtUpdateUser(pUser);
|
code = mgmtUpdateUser(pUser);
|
||||||
mLPrint("user:%s, password is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code));
|
mLPrint("user:%s, password is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code));
|
||||||
} else {
|
} else {
|
||||||
|
mError("user:%s, no rights to ater user", pOperUser->user);
|
||||||
code = TSDB_CODE_NO_RIGHTS;
|
code = TSDB_CODE_NO_RIGHTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,11 +442,13 @@ static void mgmtProcessAlterUserMsg(SQueuedMsg *pMsg) {
|
||||||
code = mgmtUpdateUser(pUser);
|
code = mgmtUpdateUser(pUser);
|
||||||
mLPrint("user:%s, privilege is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code));
|
mLPrint("user:%s, privilege is altered by %s, result:%s", pUser->user, pOperUser->user, tstrerror(code));
|
||||||
} else {
|
} else {
|
||||||
|
mError("user:%s, no rights to ater user", pOperUser->user);
|
||||||
code = TSDB_CODE_NO_RIGHTS;
|
code = TSDB_CODE_NO_RIGHTS;
|
||||||
}
|
}
|
||||||
|
|
||||||
mgmtSendSimpleResp(pMsg->thandle, code);
|
mgmtSendSimpleResp(pMsg->thandle, code);
|
||||||
} else {
|
} else {
|
||||||
|
mError("user:%s, no rights to ater user", pOperUser->user);
|
||||||
mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_RIGHTS);
|
mgmtSendSimpleResp(pMsg->thandle, TSDB_CODE_NO_RIGHTS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -744,12 +744,13 @@ static void mgmtProcessVnodeCfgMsg(SRpcMsg *rpcMsg) {
|
||||||
void mgmtDropAllVgroups(SDbObj *pDropDb) {
|
void mgmtDropAllVgroups(SDbObj *pDropDb) {
|
||||||
void *pNode = NULL;
|
void *pNode = NULL;
|
||||||
void *pLastNode = NULL;
|
void *pLastNode = NULL;
|
||||||
int32_t numOfTables = 0;
|
int32_t numOfVgroups = 0;
|
||||||
int32_t dbNameLen = strlen(pDropDb->name);
|
int32_t dbNameLen = strlen(pDropDb->name);
|
||||||
SVgObj *pVgroup = NULL;
|
SVgObj *pVgroup = NULL;
|
||||||
|
|
||||||
|
mPrint("db:%s, all vgroups will be dropped from sdb", pDropDb->name);
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
mgmtDecVgroupRef(pVgroup);
|
|
||||||
pNode = sdbFetchRow(tsVgroupSdb, pNode, (void **)&pVgroup);
|
pNode = sdbFetchRow(tsVgroupSdb, pNode, (void **)&pVgroup);
|
||||||
if (pVgroup == NULL) break;
|
if (pVgroup == NULL) break;
|
||||||
|
|
||||||
|
@ -761,12 +762,14 @@ void mgmtDropAllVgroups(SDbObj *pDropDb) {
|
||||||
};
|
};
|
||||||
sdbDeleteRow(&oper);
|
sdbDeleteRow(&oper);
|
||||||
pNode = pLastNode;
|
pNode = pLastNode;
|
||||||
numOfTables++;
|
numOfVgroups++;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mgmtSendDropVgroupMsg(pVgroup, NULL);
|
||||||
|
mgmtDecVgroupRef(pVgroup);
|
||||||
}
|
}
|
||||||
|
|
||||||
mTrace("db:%s, all vgroups is dropped from sdb", pDropDb->name, numOfTables);
|
mPrint("db:%s, all vgroups:%d is dropped from sdb", pDropDb->name, numOfVgroups);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mgmtAlterVgroup(SVgObj *pVgroup, void *ahandle) {
|
void mgmtAlterVgroup(SVgObj *pVgroup, void *ahandle) {
|
||||||
|
|
|
@ -93,7 +93,7 @@ echo "privateIp $NODE_IP" >> $TAOS_CFG
|
||||||
echo "dDebugFlag 199" >> $TAOS_CFG
|
echo "dDebugFlag 199" >> $TAOS_CFG
|
||||||
echo "mDebugFlag 199" >> $TAOS_CFG
|
echo "mDebugFlag 199" >> $TAOS_CFG
|
||||||
echo "sdbDebugFlag 199" >> $TAOS_CFG
|
echo "sdbDebugFlag 199" >> $TAOS_CFG
|
||||||
echo "rpcDebugFlag 135" >> $TAOS_CFG
|
echo "rpcDebugFlag 131" >> $TAOS_CFG
|
||||||
echo "tmrDebugFlag 131" >> $TAOS_CFG
|
echo "tmrDebugFlag 131" >> $TAOS_CFG
|
||||||
echo "cDebugFlag 135" >> $TAOS_CFG
|
echo "cDebugFlag 135" >> $TAOS_CFG
|
||||||
echo "httpDebugFlag 131" >> $TAOS_CFG
|
echo "httpDebugFlag 131" >> $TAOS_CFG
|
||||||
|
|
|
@ -59,10 +59,17 @@ endi
|
||||||
sql drop account oroot
|
sql drop account oroot
|
||||||
|
|
||||||
print ============= step4
|
print ============= step4
|
||||||
sleep 2000
|
$x = 0
|
||||||
|
show4:
|
||||||
|
$x = $x + 1
|
||||||
|
sleep 2000
|
||||||
|
if $x == 10 then
|
||||||
|
return -1
|
||||||
|
endi
|
||||||
|
|
||||||
sql show dnodes
|
sql show dnodes
|
||||||
if $data02 != 0 then
|
if $data03 != 0 then
|
||||||
return -1
|
goto show4
|
||||||
endi
|
endi
|
||||||
|
|
||||||
print ============= step5
|
print ============= step5
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -m 192.168.0.1 -i 192.168.0.1
|
system sh/deploy.sh -n dnode1 -m 192.168.0.1 -i 192.168.0.1
|
||||||
system sh/exec_up_up.sh -n dnode1 -s start
|
system sh/exec_up.sh -n dnode1 -s start
|
||||||
sql connect
|
sql connect
|
||||||
|
|
||||||
print =============== show accounts
|
print =============== show accounts
|
||||||
|
|
|
@ -1,36 +0,0 @@
|
||||||
system sh/stop_dnodes.sh
|
|
||||||
|
|
||||||
system sh/ip.sh -i 1 -s up
|
|
||||||
system sh/deploy.sh -n dnode1 -m 192.168.0.1 -i 192.168.0.1
|
|
||||||
system sh/cfg.sh -n dnode1 -c monitor -v 0
|
|
||||||
|
|
||||||
print ========== step1
|
|
||||||
system sh/cfg.sh -n dnode1 -c monitor -v 1
|
|
||||||
system sh/cfg.sh -n dnode1 -c monitorInterval -v 1
|
|
||||||
system sh/exec_up.sh -n dnode1 -s start
|
|
||||||
|
|
||||||
sql connect
|
|
||||||
sleep 3000
|
|
||||||
|
|
||||||
print ========== step2
|
|
||||||
sql drop database log -x step21
|
|
||||||
return -1
|
|
||||||
step21:
|
|
||||||
sql drop table log.cpu -x step22
|
|
||||||
return -1
|
|
||||||
step22:
|
|
||||||
sql drop user log -x step23
|
|
||||||
return -1
|
|
||||||
step23:
|
|
||||||
|
|
||||||
print ========== step3
|
|
||||||
|
|
||||||
sleep 3000
|
|
||||||
sql select * from log.dn
|
|
||||||
if $rows == 0 then
|
|
||||||
return -1
|
|
||||||
endi
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -m 192.168.0.1 -i 192.168.0.1
|
system sh/deploy.sh -n dnode1 -m 192.168.0.1 -i 192.168.0.1
|
||||||
system sh/exec_up_up.sh -n dnode1 -s start
|
system sh/exec_up.sh -n dnode1 -s start
|
||||||
sql connect
|
sql connect
|
||||||
|
|
||||||
print =============== show accounts
|
print =============== show accounts
|
||||||
|
|
|
@ -6,4 +6,7 @@ run unique/account/pass_len.sim
|
||||||
run unique/account/user_create.sim
|
run unique/account/user_create.sim
|
||||||
run unique/account/user_len.sim
|
run unique/account/user_len.sim
|
||||||
run unique/account/authority.sim
|
run unique/account/authority.sim
|
||||||
|
run unique/account/basic.sim
|
||||||
|
run unique/account/paras.sim
|
||||||
|
run unique/account/usage.sim
|
||||||
run unique/account/monitor.sim
|
run unique/account/monitor.sim
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
system sh/stop_dnodes.sh
|
system sh/stop_dnodes.sh
|
||||||
system sh/deploy.sh -n dnode1 -m 192.168.0.1 -i 192.168.0.1
|
system sh/deploy.sh -n dnode1 -m 192.168.0.1 -i 192.168.0.1
|
||||||
system sh/exec_up_up.sh -n dnode1 -s start
|
system sh/exec_up.sh -n dnode1 -s start
|
||||||
sql connect
|
sql connect
|
||||||
|
|
||||||
print =============== show accounts
|
print =============== show accounts
|
||||||
|
|
Loading…
Reference in New Issue