package model import ( "aps_crm/conf" "aps_crm/pkg/logx" "aps_crm/pkg/mysqlx" "fmt" "gorm.io/gorm" ) type Mysql struct{} func NewMysql() *Mysql { return &Mysql{} } func (slf *Mysql) CreateUser(userName string, password string, database string) error { db := mysqlx.GetDB() err := db.Transaction(func(tx *gorm.DB) error { userSql := fmt.Sprintf("create user if not exists %v@'%v' identified by '%v'", userName, conf.Conf.Mysql.Host, password) privilegeSql := fmt.Sprintf("grant all privileges on %v.* to %v@'%v'", database, userName, conf.Conf.Mysql.Host) flushSql := "flush privileges" err := tx.Exec(userSql).Error if err != nil { logx.Errorf("create mysql-user err:%v", err) return err } err = tx.Exec(privilegeSql).Error if err != nil { logx.Errorf("grant mysql-privileges err:%v", err) return err } err = tx.Exec(flushSql).Error if err != nil { logx.Errorf("flush mysql-privilege err:%v", err) return err } return nil }) return err } func (slf *Mysql) CreateDatabase(database string) error { db := mysqlx.GetDB() //sql := fmt.Sprintf("create database if not exists %v default charset utf8mb4 collate utf8mb4_general_ci", database) sql := fmt.Sprintf("CREATE DATABASE IF NOT EXISTS `%s` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;", database) err := db.Exec(sql).Error if err != nil { logx.Errorf("create database err:%v", err) return err } return nil }