diff --git a/modules/setting/database.go b/modules/setting/database.go
index a0734bc67a..d5d03c2a30 100644
--- a/modules/setting/database.go
+++ b/modules/setting/database.go
@@ -60,11 +60,13 @@ func GetDBTypeByName(name string) string {
 func InitDBConfig() {
 	sec := Cfg.Section("database")
 	Database.Type = sec.Key("DB_TYPE").String()
+	defaultCharset := "utf8"
 	switch Database.Type {
 	case "sqlite3":
 		Database.UseSQLite3 = true
 	case "mysql":
 		Database.UseMySQL = true
+		defaultCharset = "utf8mb4"
 	case "postgres":
 		Database.UsePostgreSQL = true
 	case "mssql":
@@ -78,7 +80,7 @@ func InitDBConfig() {
 	}
 	Database.Schema = sec.Key("SCHEMA").String()
 	Database.SSLMode = sec.Key("SSL_MODE").MustString("disable")
-	Database.Charset = sec.Key("CHARSET").In("utf8", []string{"utf8", "utf8mb4"})
+	Database.Charset = sec.Key("CHARSET").In(defaultCharset, []string{"utf8", "utf8mb4"})
 	Database.Path = sec.Key("PATH").MustString(filepath.Join(AppDataPath, "gitea.db"))
 	Database.Timeout = sec.Key("SQLITE_TIMEOUT").MustInt(500)
 	Database.MaxIdleConns = sec.Key("MAX_IDLE_CONNS").MustInt(2)