Go语言 如何在不使用密码的情况下连接MySQL示例?

lg40wkob  于 2023-04-27  发布在  Go
关注(0)|答案(3)|浏览(256)

我试图连接数据库,我没有设置密码的数据库,我在密码字段中留空。但它没有连接并显示错误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!")
}
blpfk2vs

blpfk2vs1#

这看起来很像来自Tutorial: Accessing a relational database的代码,不幸的是它不能工作。你需要指定AllowNativePasswords: true才能工作。默认值是true,但只有当你使用NewConfig()而不是自己创建Config结构体时,才会应用默认值。但这也可以工作:

cfg := mysql.Config{
        User:                 "root",
        Passwd:               "",
        Net:                  "tcp",
        Addr:                 "127.0.0.1:3306",
        DBName:               "recordings",
        AllowNativePasswords: true,
    }
lsmepo6l

lsmepo6l2#

尝试在数据库中将root用户的身份验证插件更改为mysql_native_password。有关here的更多信息

UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
qvsjd97n

qvsjd97n3#

这段代码来自Go教程。它不适用于默认代码。您必须在config中添加一个值,即AllowNativePasswords: true,

cfg := mysql.Config{
    User:                 "root",
    Passwd:               "test",
    Net:                  "tcp",
    Addr:                 "127.0.0.1:3306",
    DBName:               "recordings",
    AllowNativePasswords: true,
}

你很好,去连接!

相关问题