创作背景:
使用代码实现对PostgreSQL 数据库的创建用户、授权用户、删除用户系列操作!
1、导入相关的依赖
org.projectlombok
lombok
cn.hutool
hutool-all
5.8.26
2、具体实现
创建实体类
@Data
@ApiModel(value = "EntityDataBase", description = "实体数据库相关内容")
public class EntityDataBase implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 用户名
*/
@ApiModelProperty("用户名")
private String userName;
/**
* 用户密码
*/
@ApiModelProperty("用户密码")
private String userPassword;
/**
* 数据库名
*/
@ApiModelProperty("数据库名")
private String databaseName;
}
用户相关
/**
* 创建数据库用户
*
* @return {@link AjaxResult}
*/
@ApiOperation("A-1创建数据库用户")
@PostMapping("/createDbUser")
public AjaxResult createDbUser(@RequestBody EntityDataBase entityDataBase) {
return AjaxResult.success(projectRelatedService.createDbUser(entityDataBase));
}
/**
* 删除数据库用户
*
* @return {@link AjaxResult}
*/
@ApiOperation("A-2删除数据库用户")
@GetMapping("/deleteDbUser")
public AjaxResult deleteDbUser(EntityDataBase entityDataBase) {
return AjaxResult.success(projectRelatedService.deleteDbUser(entityDataBase));
}
/**
* 创建数据库用户
*
* @param entityDataBase
* @return {@link String}
*/
String createDbUser(EntityDataBase entityDataBase);
/**
* 删除数据库用户
*
* @param entityDataBase 实体数据库
* @return {@link String}
*/
String deleteDbUser(EntityDataBase entityDataBase);
/**
* 创建数据库用户
*
* @param entityDataBase 实体数据库
* @return {@link String}
*/
@Override
public String createDbUser(EntityDataBase entityDataBase) {
String userName = entityDataBase.getUserName();
String password = entityDataBase.getUserPassword();
String dbName = entityDataBase.getDatabaseName();
// 判断用户信息不为空
if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(password) || StringUtils.isEmpty(dbName)) {
return "用户名或密码不能为空";
} else {
projectRelatedMapper.createDbUser(userName, password);
return "数据库用户创建成功";
}
}
/**
* 删除数据库用户
*
* @param entityDataBase 实体数据库
* @return {@link String}
*/
@Override
public String deleteDbUser(EntityDataBase entityDataBase) {
String userName = entityDataBase.getUserName();
// 判断用户信息不为空
if (StringUtils.isEmpty(userName)) {
return "用户名不能为空";
} else {
projectRelatedMapper.deleteDbUser(entityDataBase.getUserName());
return "成功删除数据库用户!";
}
}
/**
* 创建数据库用户
*
* @param userName 用户名
* @param password 密码
* @return {@link String}
*/
void createDbUser(@Param("userName") String userName, @Param("password") String password);
/**
* 删除数据库用户
*
* @param userName 用户名
* @return {@link String}
*/
void deleteDbUser(@Param("userName") String userName);
CREATE USER ${userName} WITH PASSWORD '${password}'
DROP USER ${userName}
数据库相关
/**
* 数据库创建成功
*
* @return {@link AjaxResult}
*/
@ApiOperation("B-1数据库创建成功")
@GetMapping("/createDatabase")
public AjaxResult createDatabase(EntityDataBase entityDataBase) {
projectRelatedService.createDatabase(entityDataBase);
return AjaxResult.success("数据库创建成功");
}
/**
* 数据库删除成功
*
* @return {@link AjaxResult}
*/
@ApiOperation("B-2数据库删除成功")
@GetMapping("/deleteDatabase")
public AjaxResult deleteDatabase(EntityDataBase entityDataBase) {
projectRelatedService.deleteDatabase(entityDataBase);
return AjaxResult.success("数据库删除成功");
}
/**
* 创建数据库
*
* @param entityDataBase 实体数据库
*/
void createDatabase(EntityDataBase entityDataBase);
/**
* 删除数据库
*
* @param entityDataBase 实体数据库
*/
void deleteDatabase(EntityDataBase entityDataBase);
/**
* 创建数据库
*
* @param entityDataBase 实体数据库
*/
@Override
public void createDatabase(EntityDataBase entityDataBase) {
String dbName = entityDataBase.getDatabaseName();
// 判断用户信息不为空
if (StringUtils.isEmpty(dbName )) {
} else {
projectRelatedMapper.createDatabase(entityDataBase.getDatabaseName());
}
}
/**
* 删除数据库
*
* @param entityDataBase 实体数据库
*/
@Override
public void deleteDatabase(EntityDataBase entityDataBase) {
String dbName = entityDataBase.getDatabaseName();
// 判断用户信息不为空
if (StringUtils.isEmpty(dbName )) {
} else {
projectRelatedMapper.deleteDatabase(entityDataBase.getDatabaseName());
}
}
/**
* 创建数据库
*
* @param dbName 数据库名称
* @return {@link String}
*/
void createDatabase(@Param("dbName") String dbName);
/**
* 删除数据库
*
* @param dbName 数据库名称
* @return {@link String}
*/
void deleteDatabase(@Param("dbName") String dbName);
CREATE DATABASE ${dbName}
DROP DATABASE ${dbName}
授权相关
/**
* 授权用户操作数据库
*
* @return {@link AjaxResult}
*/
@ApiOperation("0-授权用户操作数据库")
@GetMapping("/grantAllPrivileges")
public AjaxResult grantAllPrivileges(EntityDataBase entityDataBase) {
projectRelatedService.grantAllPrivileges(entityDataBase);
return AjaxResult.success("授权用户操作数据库成功");
}
/**
* 撤消所有权限
*
* @return {@link AjaxResult}
*/
@ApiOperation("0-撤消所有权限")
@GetMapping("/revokeAllPrivileges")
public AjaxResult revokeAllPrivileges(EntityDataBase entityDataBase) {
projectRelatedService.revokeAllPrivileges(entityDataBase);
return AjaxResult.success("撤消所有权限成功");
}
/**
* 授予所有权限
*
* @param entityDataBase 实体数据库
*/
void grantAllPrivileges(EntityDataBase entityDataBase);
/**
* 撤消所有权限
*
* @param entityDataBase 实体数据库
*/
void revokeAllPrivileges(EntityDataBase entityDataBase);
/**
* 授予所有权限
*
* @param entityDataBase 实体数据库
*/
@Override
public void grantAllPrivileges(EntityDataBase entityDataBase) {
String userName = entityDataBase.getUserName();
String dbName = entityDataBase.getDatabaseName();
// 判断用户信息不为空
if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(dbName)) {
} else {
projectRelatedMapper.grantAllPrivileges(dbName,userName);
}
}
/**
* 撤消所有权限
*
* @param entityDataBase 实体数据库
*/
@Override
public void revokeAllPrivileges(EntityDataBase entityDataBase) {
String userName = entityDataBase.getUserName();
String dbName = entityDataBase.getDatabaseName();
// 判断用户信息不为空
if (StringUtils.isEmpty(userName) || StringUtils.isEmpty(dbName)) {
} else {
projectRelatedMapper.revokeAllPrivileges(dbName,userName);
}
}
/**
* 授予所有权限
*
* @param dbName 数据库名称
* @return {@link String}
*/
void grantAllPrivileges(@Param("dbName") String dbName, @Param("userName") String userName);
/**
* 撤消所有权限
*
* @param dbName 数据库名称
* @param userName 用户名
*/
void revokeAllPrivileges(@Param("dbName") String dbName, @Param("userName") String userName);
GRANT ALL PRIVILEGES ON DATABASE ${dbName} TO ${userName}
REVOKE ALL PRIVILEGES ON DATABASE ${dbName} FROM ${userName}
注意:这个授权,也是可以授权单个权限的!
授权 ALL PRIVILEGES 是表示所有权限,也可以授INSERT,UPDATE,DELETE等权限。