mirror of
https://github.com/1Panel-dev/1Panel.git
synced 2025-03-14 01:34:47 +08:00
feat: 数据库增加默认配置功能
This commit is contained in:
parent
2737155a7f
commit
e1c2348e44
@ -446,7 +446,7 @@ func syncById(installId uint) error {
|
||||
}
|
||||
|
||||
func updateInstallInfoInDB(appKey, appName, param string, isRestart bool, value interface{}) error {
|
||||
if param != "password" && param != "port" {
|
||||
if param != "password" && param != "port" && param != "user-password" {
|
||||
return nil
|
||||
}
|
||||
appInstall, err := appInstallRepo.LoadBaseInfo(appKey, appName)
|
||||
@ -458,9 +458,15 @@ func updateInstallInfoInDB(appKey, appName, param string, isRestart bool, value
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
envKey := "PANEL_DB_ROOT_PASSWORD="
|
||||
if param == "port" {
|
||||
|
||||
envKey := ""
|
||||
switch param {
|
||||
case "password":
|
||||
envKey = "PANEL_DB_ROOT_PASSWORD="
|
||||
case "port":
|
||||
envKey = "PANEL_APP_PORT_HTTP="
|
||||
case "user-password":
|
||||
envKey = "PANEL_DB_USER_PASSWORD="
|
||||
}
|
||||
files := strings.Split(string(lineBytes), "\n")
|
||||
var newFiles []string
|
||||
|
@ -19,6 +19,7 @@ import (
|
||||
"github.com/1Panel-dev/1Panel/backend/app/model"
|
||||
"github.com/1Panel-dev/1Panel/backend/constant"
|
||||
"github.com/1Panel-dev/1Panel/backend/global"
|
||||
"github.com/1Panel-dev/1Panel/backend/utils/common"
|
||||
"github.com/1Panel-dev/1Panel/backend/utils/compose"
|
||||
"github.com/1Panel-dev/1Panel/backend/utils/files"
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
@ -170,7 +171,7 @@ func (u *MysqlService) Create(ctx context.Context, mysqlDto dto.MysqlDBCreate) (
|
||||
}
|
||||
|
||||
if err := excuteSql(app.ContainerName, app.Password, fmt.Sprintf("create database if not exists `%s` character set=%s", mysqlDto.Name, mysqlDto.Format)); err != nil {
|
||||
return nil,err
|
||||
return nil, err
|
||||
}
|
||||
tmpPermission := mysqlDto.Permission
|
||||
if err := excuteSql(app.ContainerName, app.Password, fmt.Sprintf("create user if not exists '%s'@'%s' identified by '%s';", mysqlDto.Username, tmpPermission, mysqlDto.Password)); err != nil {
|
||||
@ -264,7 +265,7 @@ func (u *MysqlService) Delete(id uint) error {
|
||||
if err := excuteSql(app.ContainerName, app.Password, fmt.Sprintf("drop user if exists '%s'@'%s'", db.Name, db.Permission)); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := excuteSql(app.ContainerName, app.Password, fmt.Sprintf("drop database if exists %s", db.Name)); err != nil {
|
||||
if err := excuteSql(app.ContainerName, app.Password, fmt.Sprintf("drop database if exists `%s`", db.Name)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -318,7 +319,7 @@ func (u *MysqlService) ChangePassword(info dto.ChangeDBInfo) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := updateInstallInfoInDB(appModel.Key, appInstall.Name, "password", true, info.Value); err != nil {
|
||||
if err := updateInstallInfoInDB(appModel.Key, appInstall.Name, "user-password", true, info.Value); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@ -447,8 +448,8 @@ func (u *MysqlService) UpdateVariables(updatas []dto.MysqlVariablesUpdate) error
|
||||
}
|
||||
}
|
||||
|
||||
if _, ok := info.Value.(int64); ok {
|
||||
files = updateMyCnf(files, group, info.Param, loadSizeUnit(info.Value.(int64)))
|
||||
if _, ok := info.Value.(float64); ok {
|
||||
files = updateMyCnf(files, group, info.Param, common.LoadSizeUnit(info.Value.(float64)))
|
||||
} else {
|
||||
files = updateMyCnf(files, group, info.Param, info.Value)
|
||||
}
|
||||
@ -685,13 +686,3 @@ func updateMyCnf(oldFiles []string, group string, param string, value interface{
|
||||
}
|
||||
return newFiles
|
||||
}
|
||||
|
||||
func loadSizeUnit(value int64) string {
|
||||
if value > 1048576 {
|
||||
return fmt.Sprintf("%dM", value/1048576)
|
||||
}
|
||||
if value > 1024 {
|
||||
return fmt.Sprintf("%dK", value/1024)
|
||||
}
|
||||
return fmt.Sprintf("%d", value)
|
||||
}
|
||||
|
@ -116,3 +116,13 @@ func RemoveRepeatElement(a interface{}) (ret []interface{}) {
|
||||
}
|
||||
return ret
|
||||
}
|
||||
|
||||
func LoadSizeUnit(value float64) string {
|
||||
if value > 1048576 {
|
||||
return fmt.Sprintf("%vM", value/1048576)
|
||||
}
|
||||
if value > 1024 {
|
||||
return fmt.Sprintf("%vK", value/1024)
|
||||
}
|
||||
return fmt.Sprintf("%v", value)
|
||||
}
|
||||
|
@ -72,7 +72,6 @@ func (sws *ExecWsSession) receiveWsMsg(ctx context.Context, exitCh chan bool) {
|
||||
for {
|
||||
_, wsData, err := wsConn.ReadMessage()
|
||||
if err != nil {
|
||||
global.LOG.Errorf("reading webSocket message failed, err: %v", err)
|
||||
return
|
||||
}
|
||||
msgObj := wsMsg{}
|
||||
|
@ -124,7 +124,6 @@ func (sws *LogicSshWsSession) receiveWsMsg(exitCh chan bool) {
|
||||
default:
|
||||
_, wsData, err := wsConn.ReadMessage()
|
||||
if err != nil {
|
||||
global.LOG.Errorf("reading webSocket message failed, err: %v", err)
|
||||
return
|
||||
}
|
||||
msgObj := wsMsg{}
|
||||
|
@ -18,9 +18,23 @@
|
||||
v-model="mysqlConf"
|
||||
:readOnly="true"
|
||||
/>
|
||||
<el-button style="margin-top: 10px" @click="getDefaultConfig()">
|
||||
{{ $t('app.defaultConfig') }}
|
||||
</el-button>
|
||||
<el-button type="primary" style="margin-top: 10px" @click="onSaveConf">
|
||||
{{ $t('commons.button.save') }}
|
||||
</el-button>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-alert
|
||||
v-if="useOld"
|
||||
style="margin-top: 10px"
|
||||
:title="$t('app.defaultConfigHelper')"
|
||||
type="info"
|
||||
:closable="false"
|
||||
></el-alert>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item
|
||||
:disabled="mysqlStatus !== 'Running'"
|
||||
@ -84,7 +98,7 @@ import { javascript } from '@codemirror/lang-javascript';
|
||||
import { oneDark } from '@codemirror/theme-one-dark';
|
||||
import { LoadFile } from '@/api/modules/files';
|
||||
import { loadMysqlBaseInfo, loadMysqlVariables, updateMysqlConfByFile } from '@/api/modules/database';
|
||||
import { ChangePort } from '@/api/modules/app';
|
||||
import { ChangePort, GetAppDefaultConfig } from '@/api/modules/app';
|
||||
import { Rules } from '@/global/form-rules';
|
||||
import i18n from '@/lang';
|
||||
|
||||
@ -103,6 +117,8 @@ const baseInfo = reactive({
|
||||
const panelFormRef = ref<FormInstance>();
|
||||
const mysqlConf = ref();
|
||||
|
||||
const useOld = ref(false);
|
||||
|
||||
const statusRef = ref();
|
||||
const variablesRef = ref();
|
||||
const slowLogRef = ref();
|
||||
@ -182,6 +198,14 @@ function callback(error: any) {
|
||||
}
|
||||
}
|
||||
|
||||
const getDefaultConfig = async () => {
|
||||
loading.value = true;
|
||||
const res = await GetAppDefaultConfig('mysql');
|
||||
mysqlConf.value = res.data;
|
||||
useOld.value = true;
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
const onSubmitChangeConf = async () => {
|
||||
let param = {
|
||||
mysqlName: mysqlName.value,
|
||||
|
@ -18,9 +18,23 @@
|
||||
v-model="redisConf"
|
||||
:readOnly="true"
|
||||
/>
|
||||
<el-button style="margin-top: 10px" @click="getDefaultConfig()">
|
||||
{{ $t('app.defaultConfig') }}
|
||||
</el-button>
|
||||
<el-button type="primary" @click="onSaveFile" style="margin-top: 5px">
|
||||
{{ $t('commons.button.save') }}
|
||||
</el-button>
|
||||
<el-row>
|
||||
<el-col :span="8">
|
||||
<el-alert
|
||||
v-if="useOld"
|
||||
style="margin-top: 10px"
|
||||
:title="$t('app.defaultConfigHelper')"
|
||||
type="info"
|
||||
:closable="false"
|
||||
></el-alert>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-collapse-item>
|
||||
<el-collapse-item :disabled="redisStatus !== 'Running'" :title="$t('database.status')" name="2">
|
||||
<Status ref="statusRef" />
|
||||
@ -104,7 +118,7 @@ import Persistence from '@/views/database/redis/setting/persistence/index.vue';
|
||||
import { loadRedisConf, updateRedisConf, updateRedisConfByFile } from '@/api/modules/database';
|
||||
import i18n from '@/lang';
|
||||
import { Rules } from '@/global/form-rules';
|
||||
import { ChangePort } from '@/api/modules/app';
|
||||
import { ChangePort, GetAppDefaultConfig } from '@/api/modules/app';
|
||||
|
||||
const extensions = [javascript(), oneDark];
|
||||
|
||||
@ -128,6 +142,8 @@ const activeName = ref('1');
|
||||
const statusRef = ref();
|
||||
const persistenceRef = ref();
|
||||
|
||||
const useOld = ref(false);
|
||||
|
||||
const redisStatus = ref();
|
||||
const redisName = ref();
|
||||
|
||||
@ -233,6 +249,14 @@ const submtiForm = async () => {
|
||||
});
|
||||
};
|
||||
|
||||
const getDefaultConfig = async () => {
|
||||
loading.value = true;
|
||||
const res = await GetAppDefaultConfig('redis');
|
||||
redisConf.value = res.data;
|
||||
useOld.value = true;
|
||||
loading.value = false;
|
||||
};
|
||||
|
||||
const onSaveFile = async () => {
|
||||
let params = {
|
||||
header: i18n.global.t('database.confChange'),
|
||||
|
Loading…
x
Reference in New Issue
Block a user