如何不使用密码连接MySQL实例?

var*_*egi 16 mysql authentication authorization go

我尝试连接数据库,但我没有为数据库设置密码,我在密码字段中将其留空。但它没有连接并显示错误connector.go:95: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.。另外,我使用 phpmyadmin 作为数据库,所以如何连接这里是我的代码

package main

import (
    "database/sql"
    "fmt"
    "log"
    "github.com/go-sql-driver/mysql"
)

var db *sql.DB

func main() {
    // Capture connection properties.
    cfg := mysql.Config{
        User:   "root",
        Passwd: "",
        Net:    "tcp",
        Addr:   "127.0.0.1:3306",
        DBName: "recordings",
    }
    // Get a database handle.
    var err error
    db, err = sql.Open("mysql", cfg.FormatDSN())
    if err != nil {
        log.Fatal(err)
    }

    pingErr := db.Ping()
    if pingErr != nil {
        log.Fatal(pingErr)
    }
    fmt.Println("Connected!")
}

Run Code Online (Sandbox Code Playgroud)

小智 54

这看起来很像教程:访问关系数据库中的代码,不幸的是它不起作用。您需要指定AllowNativePasswords: true它才能工作。该值是true默认值,但仅当您使用NewConfig()而不是Config自己创建结构时才应用默认值。但这也有效:

    cfg := mysql.Config{
        User:                 "root",
        Passwd:               "",
        Net:                  "tcp",
        Addr:                 "127.0.0.1:3306",
        DBName:               "recordings",
        AllowNativePasswords: true,
    }
Run Code Online (Sandbox Code Playgroud)