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 -u root -h localhost -p
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'some-new-password';
mysql> FLUSH PRIVILEGES;
现在,当我运行代码时,我看到
Connected!
检查您与 mysql 服务器的连接,无需密码,安装
mysql_secure_installation
后请勿运行 mysql-server
,并将 auth_socket authentication
更改为 mysql_native_password
。对我来说,它可以在 ubuntu 22.04 上运行,没有任何问题。