mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-01-19 16:29:17 +08:00
fix: 解决 mysql 用户创建冲突
This commit is contained in:
parent
f57db29317
commit
fc206deddf
@ -15,6 +15,7 @@ import (
|
|||||||
|
|
||||||
"github.com/1Panel-dev/1Panel/backend/app/dto"
|
"github.com/1Panel-dev/1Panel/backend/app/dto"
|
||||||
"github.com/1Panel-dev/1Panel/backend/app/model"
|
"github.com/1Panel-dev/1Panel/backend/app/model"
|
||||||
|
"github.com/1Panel-dev/1Panel/backend/buserr"
|
||||||
"github.com/1Panel-dev/1Panel/backend/constant"
|
"github.com/1Panel-dev/1Panel/backend/constant"
|
||||||
"github.com/1Panel-dev/1Panel/backend/global"
|
"github.com/1Panel-dev/1Panel/backend/global"
|
||||||
"github.com/1Panel-dev/1Panel/backend/utils/common"
|
"github.com/1Panel-dev/1Panel/backend/utils/common"
|
||||||
@ -92,12 +93,19 @@ func (u *MysqlService) Create(ctx context.Context, req dto.MysqlDBCreate) (*mode
|
|||||||
return nil, errors.WithMessage(constant.ErrStructTransform, err.Error())
|
return nil, errors.WithMessage(constant.ErrStructTransform, err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
createSql := fmt.Sprintf("create database if not exists `%s` default character set %s collate %s", req.Name, req.Format, formatMap[req.Format])
|
createSql := fmt.Sprintf("create database `%s` default character set %s collate %s", req.Name, req.Format, formatMap[req.Format])
|
||||||
if err := excuteSql(app.ContainerName, app.Password, createSql); err != nil {
|
if err := excuteSql(app.ContainerName, app.Password, createSql); err != nil {
|
||||||
|
if strings.Contains(err.Error(), "ERROR 1007") {
|
||||||
|
return nil, buserr.New(constant.ErrDatabaseIsExist)
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
tmpPermission := req.Permission
|
tmpPermission := req.Permission
|
||||||
if err := excuteSql(app.ContainerName, app.Password, fmt.Sprintf("create user if not exists '%s'@'%s' identified by '%s';", req.Username, tmpPermission, req.Password)); err != nil {
|
if err := excuteSql(app.ContainerName, app.Password, fmt.Sprintf("create user '%s'@'%s' identified by '%s';", req.Username, tmpPermission, req.Password)); err != nil {
|
||||||
|
_ = excuteSql(app.ContainerName, app.Password, fmt.Sprintf("drop database `%s`", req.Name))
|
||||||
|
if strings.Contains(err.Error(), "ERROR 1396") {
|
||||||
|
return nil, buserr.New(constant.ErrUserIsExist)
|
||||||
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
grantStr := fmt.Sprintf("grant all privileges on `%s`.* to '%s'@'%s'", req.Name, req.Username, tmpPermission)
|
grantStr := fmt.Sprintf("grant all privileges on `%s`.* to '%s'@'%s'", req.Name, req.Username, tmpPermission)
|
||||||
|
@ -80,3 +80,9 @@ var (
|
|||||||
var (
|
var (
|
||||||
ErrPathNotFound = "ErrPathNotFound"
|
ErrPathNotFound = "ErrPathNotFound"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
//mysql
|
||||||
|
var (
|
||||||
|
ErrUserIsExist = "ErrUserIsExist"
|
||||||
|
ErrDatabaseIsExist = "ErrDatabaseIsExist"
|
||||||
|
)
|
||||||
|
@ -35,10 +35,14 @@ ErrPathNotFound: "Path is not found"
|
|||||||
ErrDomainIsExist: "Domain is already exist"
|
ErrDomainIsExist: "Domain is already exist"
|
||||||
ErrAliasIsExist: "Alias is already exist"
|
ErrAliasIsExist: "Alias is already exist"
|
||||||
ErrAppDelete: 'Other Website use this App'
|
ErrAppDelete: 'Other Website use this App'
|
||||||
ErrGroupIsUsed: 'The group has been associated with a website and cannot be deleted'
|
ErrGroupIsUsed: 'The group is in use and cannot be deleted'
|
||||||
|
|
||||||
#ssl
|
#ssl
|
||||||
ErrSSLCannotDelete: "The certificate is being used by the website and cannot be removed"
|
ErrSSLCannotDelete: "The certificate is being used by the website and cannot be removed"
|
||||||
ErrAccountCannotDelete: "The certificate associated with the account cannot be deleted"
|
ErrAccountCannotDelete: "The certificate associated with the account cannot be deleted"
|
||||||
ErrSSLApply: "The certificate continues to be signed successfully, but openresty reload fails, please check the configuration!"
|
ErrSSLApply: "The certificate continues to be signed successfully, but openresty reload fails, please check the configuration!"
|
||||||
ErrEmailIsExist: 'Email is already exist'
|
ErrEmailIsExist: 'Email is already exist'
|
||||||
|
|
||||||
|
#mysql
|
||||||
|
ErrUserIsExist: "The current user already exists. Please enter a new user"
|
||||||
|
ErrDatabaseIsExist: "The current database already exists. Please enter a new database"
|
@ -35,10 +35,14 @@ ErrPathNotFound: "目录不存在"
|
|||||||
ErrDomainIsExist: "域名已存在"
|
ErrDomainIsExist: "域名已存在"
|
||||||
ErrAliasIsExist: "代号已存在"
|
ErrAliasIsExist: "代号已存在"
|
||||||
ErrAppDelete: '其他网站使用此应用,无法删除'
|
ErrAppDelete: '其他网站使用此应用,无法删除'
|
||||||
ErrGroupIsUsed: '分组已经关联网站,无法删除'
|
ErrGroupIsUsed: '分组正在使用中,无法删除'
|
||||||
|
|
||||||
#ssl
|
#ssl
|
||||||
ErrSSLCannotDelete: "证书正在被网站使用,无法删除"
|
ErrSSLCannotDelete: "证书正在被网站使用,无法删除"
|
||||||
ErrAccountCannotDelete: "账号关联证书,无法删除"
|
ErrAccountCannotDelete: "账号关联证书,无法删除"
|
||||||
ErrSSLApply: "证书续签成功,openresty reload失败,请检查配置!"
|
ErrSSLApply: "证书续签成功,openresty reload失败,请检查配置!"
|
||||||
ErrEmailIsExist: '邮箱已存在'
|
ErrEmailIsExist: '邮箱已存在'
|
||||||
|
|
||||||
|
#mysql
|
||||||
|
ErrUserIsExist: "当前用户已存在,请重新输入"
|
||||||
|
ErrDatabaseIsExist: "当前数据库已存在,请重新输入"
|
Loading…
x
Reference in New Issue
Block a user