zhangqian
2023-10-13 13194e787d51e4ce07dfc35341d536fb5db7aaa3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
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
}