1)普通文件增加读取mysql.user表的权限

2)删除用户时,删除对应的config表
This commit is contained in:
luoliangyi 2022-12-12 11:41:26 +08:00
parent 0a27f3f095
commit c6a0a02c10
3 changed files with 25 additions and 18 deletions

View File

@ -125,7 +125,7 @@ HGEXPORT HGResult HGAPI HGPdtToolDb_SetPassword(HGPdtToolDbUserMgr userMgr, cons
/* 修改本账户的密码 */ /* 修改本账户的密码 */
HGEXPORT HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* oldPwd, const HGChar* newPwd); HGEXPORT HGResult HGAPI HGPdtToolDb_ModifyPassword(HGPdtToolDbUserMgr userMgr, const HGChar* oldPwd, const HGChar* newPwd);
/* 导出所有设备测试信息到XLS文件,需要管理员账户才能调用 */ /* 导出所有设备测试信息到XLS文件 */
HGEXPORT HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar *xlsPath); HGEXPORT HGResult HGAPI HGPdtToolDb_Export(HGPdtToolDbUserMgr userMgr, const HGChar *xlsPath);
/* 获取用户配置 */ /* 获取用户配置 */

View File

@ -229,7 +229,7 @@ HGResult HGPdtToolDbUserMgrImpl::GetUserList(HGChar** userNameList, HGUInt maxLe
} }
char sqlCmd[1024] = {0}; char sqlCmd[1024] = {0};
sprintf(sqlCmd, "select user, host from mysql.user"); sprintf(sqlCmd, "select user, host from mysql.user;");
int ret = mysql_query(m_sql, sqlCmd); int ret = mysql_query(m_sql, sqlCmd);
if (0 != ret) if (0 != ret)
{ {
@ -305,9 +305,20 @@ HGResult HGPdtToolDbUserMgrImpl::CreateUser(const HGChar* userName, const HGChar
} }
char sqlCmd[1024] = {0}; char sqlCmd[1024] = {0};
sprintf(sqlCmd, "grant all privileges on huago_production_tool.* to '%s'@'%%' identified by '%s';", userName, defPwd); sprintf(sqlCmd, "create user '%s'@'%%' identified by '%s';", userName, defPwd);
int ret = mysql_query(m_sql, sqlCmd); int ret = mysql_query(m_sql, sqlCmd);
return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; if (0 != ret)
{
return HGBASE_ERR_FAIL;
}
sprintf(sqlCmd, "grant all privileges on huago_production_tool.* to '%s'@'%%';", userName);
ret = mysql_query(m_sql, sqlCmd);
assert(0 == ret);
sprintf(sqlCmd, "grant select on mysql.user to '%s'@'%%';", userName);
ret = mysql_query(m_sql, sqlCmd);
assert(0 == ret);
return HGBASE_ERR_OK;
} }
HGResult HGPdtToolDbUserMgrImpl::DestroyUser(const HGChar* userName) HGResult HGPdtToolDbUserMgrImpl::DestroyUser(const HGChar* userName)
@ -335,6 +346,9 @@ HGResult HGPdtToolDbUserMgrImpl::DestroyUser(const HGChar* userName)
} }
char sqlCmd[1024] = { 0 }; char sqlCmd[1024] = { 0 };
sprintf(sqlCmd, "drop table %s_config;", userName);
mysql_query(m_sql, sqlCmd);
sprintf(sqlCmd, "drop user '%s'@'%%';", userName); sprintf(sqlCmd, "drop user '%s'@'%%';", userName);
int ret = mysql_query(m_sql, sqlCmd); int ret = mysql_query(m_sql, sqlCmd);
return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
@ -395,7 +409,7 @@ HGResult HGPdtToolDbUserMgrImpl::ModifyPassword(const HGChar* oldPwd, const HGCh
if (oldAuthStr.empty()) if (oldAuthStr.empty())
{ {
return HGBASE_ERR_FAIL; return HGBASE_ERR_ACCESSDENIED;
} }
std::string oldAuthStr2; std::string oldAuthStr2;
@ -435,13 +449,6 @@ HGResult HGPdtToolDbUserMgrImpl::Export(const HGChar* xlsPath)
return HGBASE_ERR_INVALIDARG; return HGBASE_ERR_INVALIDARG;
} }
HGUInt userType = 0;
GetUserType(&userType);
if (HGPDTTOOLDB_USERTYPE_ROOT != userType)
{
return HGBASE_ERR_ACCESSDENIED;
}
std::string cmd = "select main_test.sn"; std::string cmd = "select main_test.sn";
cmd += ", main_test.create_time"; cmd += ", main_test.create_time";
cmd += ", main_test.create_user"; cmd += ", main_test.create_user";
@ -639,7 +646,7 @@ HGResult HGPdtToolDbUserMgrImpl::SetConfig(const HGChar* key, const HGChar* valu
} }
char sqlCmd[1024] = {0}; char sqlCmd[1024] = {0};
sprintf(sqlCmd, "insert into %s_config (config_key, config_value) values ('%s', '%s')", sprintf(sqlCmd, "insert into %s_config (config_key, config_value) values ('%s', '%s');",
m_userName.c_str(), key, (NULL != value) ? value : ""); m_userName.c_str(), key, (NULL != value) ? value : "");
int ret = mysql_query(m_sql, sqlCmd); int ret = mysql_query(m_sql, sqlCmd);
if (0 == ret) if (0 == ret)
@ -649,7 +656,7 @@ HGResult HGPdtToolDbUserMgrImpl::SetConfig(const HGChar* key, const HGChar* valu
if (1062 == mysql_errno(m_sql)) if (1062 == mysql_errno(m_sql))
{ {
sprintf(sqlCmd, "update %s_config set config_value = '%s' where config_key = '%s'", sprintf(sqlCmd, "update %s_config set config_value = '%s' where config_key = '%s';",
m_userName.c_str(), (NULL != value) ? value : "", key); m_userName.c_str(), (NULL != value) ? value : "", key);
int ret = mysql_query(m_sql, sqlCmd); int ret = mysql_query(m_sql, sqlCmd);
return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL; return (0 == ret) ? HGBASE_ERR_OK : HGBASE_ERR_FAIL;
@ -729,7 +736,7 @@ int HGPdtToolDbUserMgrImpl::CreateUserConfigTable(MYSQL* sql, const HGChar* user
assert(NULL != user && 0 != *user); assert(NULL != user && 0 != *user);
char sqlCmd[1024] = {0}; char sqlCmd[1024] = {0};
sprintf(sqlCmd, "create table if not exists %s_config (config_key varchar(40) not null primary key, config_value text)", user); sprintf(sqlCmd, "create table if not exists %s_config (config_key varchar(40) not null primary key, config_value text);", user);
return mysql_query(sql, sqlCmd); return mysql_query(sql, sqlCmd);
} }

View File

@ -5,7 +5,7 @@
int main() int main()
{ {
HGPdtToolDbUserMgr userMgr = NULL; HGPdtToolDbUserMgr userMgr = NULL;
HGPdtToolDb_CreateUserMgr("127.0.0.1", 3306, "root", "123456", &userMgr); HGPdtToolDb_CreateUserMgr("127.0.0.1", 3306, "huago", "123456", &userMgr);
if (NULL != userMgr) if (NULL != userMgr)
{ {
HGChar* name[256]; HGChar* name[256];
@ -14,8 +14,8 @@ int main()
//HGPdtToolDb_DestroyUser(userMgr, "huago"); //HGPdtToolDb_DestroyUser(userMgr, "huago");
//HGPdtToolDb_CreateUser(userMgr, "huago", "huago"); //HGPdtToolDb_CreateUser(userMgr, "huago", "123456");
HGPdtToolDb_ModifyPassword(userMgr, "12345", "123456"); HGPdtToolDb_ModifyPassword(userMgr, "123456", "huago");
//HGPdtToolDb_SetPassword(userMgr, "huago", "qqq"); //HGPdtToolDb_SetPassword(userMgr, "huago", "qqq");
HGPdtToolDbDevice device = NULL; HGPdtToolDbDevice device = NULL;