dsql-admin/dsql-app/init/init-sql/(functions)/handle-root-user.ts

59 lines
1.9 KiB
TypeScript
Raw Normal View History

2025-01-13 08:00:21 +00:00
import dsql from "@moduletrace/datasquirel";
type MysqlUser = {
User: string;
Host: string;
};
export default async function initSQLHandleRootUsers() {
if (process.env.NEXT_PUBLIC_DSQL_LOCAL) {
console.log("Production Environment. Root user setup not required");
return;
}
const mainRootUser = await dsql.utils.connDbHandler<MysqlUser[]>(
global.INIT_SQL_ROOT_DB_CONN,
`SELECT user,host FROM mysql.user WHERE user='root' AND host=?`,
[process.env.DSQL_DB_TARGET_IP_ADDRESS]
);
if (!mainRootUser?.[0]?.User) {
console.log(`Main Root User Does not Exit.`);
const createMainRootUser = await dsql.utils.connDbHandler<any[]>(
global.INIT_SQL_ROOT_DB_CONN,
[
{
query: `CREATE USER IF NOT EXISTS \
'root'@'${process.env.DSQL_DB_TARGET_IP_ADDRESS}' \
IDENTIFIED BY '${process.env.DSQL_DB_PASSWORD}'`,
},
{
query: `GRANT ALL PRIVILEGES ON *.* TO 'root'@'${process.env.DSQL_DB_TARGET_IP_ADDRESS}' \
WITH GRANT OPTION`,
},
{
query: `FLUSH PRIVILEGES`,
},
]
);
console.log("createMainRootUser", createMainRootUser);
const checkRootUser = await dsql.utils.connDbHandler<MysqlUser[]>(
global.INIT_SQL_ROOT_DB_CONN,
`SELECT user,host FROM mysql.user WHERE user='root' AND host='${process.env.DSQL_DB_TARGET_IP_ADDRESS}'`
);
if (checkRootUser?.[0]?.User) {
const dropWildcardRootUser = await dsql.utils.connDbHandler<
MysqlUser[]
>(global.INIT_SQL_ROOT_DB_CONN, "drop user 'root'@'%'");
console.log("dropWildcardRootUser", dropWildcardRootUser);
}
} else {
console.log("Root User Exists");
}
}