MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / SyncDB

Method SyncDB

agent/utils/mysql/client/remote.go:349–419  ·  view source on GitHub ↗
(version string)

Source from the content-addressed store, hash-verified

347}
348
349func (r *Remote) SyncDB(version string) ([]SyncDBInfo, error) {
350 var datas []SyncDBInfo
351 rows, err := r.Client.Query("select schema_name, default_character_set_name, default_collation_name from information_schema.SCHEMATA")
352 if err != nil {
353 return datas, err
354 }
355 defer func() { _ = rows.Close() }()
356
357 for rows.Next() {
358 var dbName, charsetName, collation string
359 if err = rows.Scan(&dbName, &charsetName, &collation); err != nil {
360 return datas, err
361 }
362 if dbName == "information_schema" || dbName == "mysql" || dbName == "performance_schema" || dbName == "sys" || dbName == "__recycle_bin__" || dbName == "recycle_bin" {
363 continue
364 }
365 dataItem := SyncDBInfo{
366 Name: dbName,
367 From: "remote",
368 MysqlName: r.Database,
369 Format: charsetName,
370 Collation: collation,
371 }
372 userRows, err := r.Client.Query("select user,host from mysql.db where db = ?", dbName)
373 if err != nil {
374 global.LOG.Debugf("sync user of db %s failed, err: %v", dbName, err)
375 dataItem.Permission = "%"
376 datas = append(datas, dataItem)
377 continue
378 }
379
380 var permissionItem []string
381 isLocal := true
382 i := 0
383 for userRows.Next() {
384 var user, host string
385 if err = userRows.Scan(&user, &host); err != nil {
386 return datas, err
387 }
388 if user == "root" {
389 continue
390 }
391 if i == 0 {
392 dataItem.Username = user
393 }
394 if dataItem.Username == user && host == "%" {
395 isLocal = false
396 dataItem.Permission = "%"
397 } else if dataItem.Username == user && host != "localhost" {
398 isLocal = false
399 permissionItem = append(permissionItem, host)
400 }
401 i++
402 }
403 if len(dataItem.Username) == 0 {
404 dataItem.Permission = "%"
405 } else {
406 if isLocal {

Callers

nothing calls this directly

Calls 3

NextMethod · 0.80
CloseMethod · 0.65
ScanMethod · 0.65

Tested by

no test coverage detected