英文:
How do I connect to a MySQL instance without using the password?
问题
我正在尝试连接数据库,我已经为数据库设置了无密码,所以在密码字段中留空。但是它无法连接,并显示错误信息 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() {
// 捕获连接属性。
cfg := mysql.Config{
User: "root",
Passwd: "",
Net: "tcp",
Addr: "127.0.0.1:3306",
DBName: "recordings",
}
// 获取数据库句柄。
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("已连接!")
}
希望这可以帮助你解决问题。
英文:
I trying to connect db I have set no password for the db I am leaving blank in the password field. But it's not connecting and showing error connector.go:95: could not use requested auth plugin 'mysql_native_password': this user
. Also I am using phpmyadmin as db so how to connect here is my code
requires mysql native password authentication.
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!")
}
答案1
得分: 41
这看起来很像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,
}
英文:
That looks a lot like the code from the Tutorial: Accessing a relational database which unfortunately does not work. You need to specify AllowNativePasswords: true
for it to work. That value is true
by default, but the defaults are only applied if you use NewConfig()
and not create the Config
struct yourself. But this will work as well:
cfg := mysql.Config{
User: "root",
Passwd: "",
Net: "tcp",
Addr: "127.0.0.1:3306",
DBName: "recordings",
AllowNativePasswords: true,
}
答案2
得分: 0
尝试将数据库中的root用户的身份验证插件更改为mysql_native_password。有关更多信息,请参阅此处。
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
英文:
Try to change authentication plugin of root user to mysql_native_password in your database. More information about here
UPDATE mysql.user SET plugin = 'mysql_native_password' WHERE user = 'root' AND plugin = 'unix_socket';
答案3
得分: -1
这段代码来自Go教程。默认代码无法正常工作,你需要在配置中添加一个额外的值,即AllowNativePasswords: true,
cfg := mysql.Config{
User: "root",
Passwd: "test",
Net: "tcp",
Addr: "127.0.0.1:3306",
DBName: "recordings",
AllowNativePasswords: true,
}
现在你可以连接了!
英文:
This code is from Go tutorial. It doesn't work for default code. You have to add one more value in config which is AllowNativePasswords: true,
cfg := mysql.Config{
User: "root",
Passwd: "test",
Net: "tcp",
Addr: "127.0.0.1:3306",
DBName: "recordings",
AllowNativePasswords: true,
}
And you're good go go for connected!
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论