用户“root”@“localhost”的 Golang 访问被拒绝

问题描述 投票:0回答:2

TLDR; 尝试使用 Golang 访问数据库时出错

我正在尝试使用示例here连接到我的本地主机数据库。连接数据库的 go 代码可以在下面找到。

func main() {
    // Capture connection properties.
    cfg := mysql.Config{
        User:   os.Getenv("DBUSER"),
        Passwd: os.Getenv("DBPASS"),
        Net:    "tcp",
        Addr:   "127.0.0.1:3306",
        DBName: "someDB",
    }

    // 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!")

}

我看到了这个输出

✗ go run main.go
2023/02/17 00:10:35 Error 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

我已经尝试过:

  • 确认
    DBUSER
    DBPASS
    设置为预期值
  • 我能够
    mysql -u root -p
    并连接到数据库,没有任何问题。
mysql credentials
2个回答
0
投票

我的问题的解决方案是通过更新密码解决的。我的密码以

@
开头。更新密码后。

mysql -u root -h localhost -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'some-new-password';
mysql> FLUSH PRIVILEGES;

现在,当我运行代码时,我看到

Connected!


0
投票

检查您与 mysql 服务器的连接,无需密码,安装

mysql_secure_installation
后请勿运行
mysql-server
,并将
auth_socket authentication
更改为
mysql_native_password
。对我来说,它可以在 ubuntu 22.04 上运行,没有任何问题。

© www.soinside.com 2019 - 2024. All rights reserved.