Diga-nos o que deve acontecer e o que acontece em vez disso
plugin de autenticação desconhecido para mysql5.7
// version go1.10.2 darwin/amd64
db, err := sql.Open("mysql", "admin:admin@tcp(127.0.0.1:9696)/test")
if err != nil {
fmt.Println("failed to open database:", err.Error())
return
}
defer db.Close()
rows, err := db.Query("SELECT id,str FROM test_shard_hash")
if err != nil {
fmt.Println("fetech data failed:", err.Error())
return
}
defer rows.Close()
for rows.Next() {
var id int
var str string
rows.Scan(&id, &str)
fmt.Println("uid:", id, "name:", str)
}
[mysql] 2018/06/06 22:15:07 auth.go:293: unknown auth plugin:
[mysql] 2018/06/06 22:15:07 driver.go:120: could not use requested auth plugin '': this authentication plugin is not supported
A seção a seguir também tem um bom motivo no modelo de problema:
### Configuration
*Driver version (or git SHA):*
*Go version:* run `go version` in your console
*Server version:* E.g. MySQL 5.6, MariaDB 10.0.20
*Server OS:* E.g. Debian 8.1 (Jessie), Windows 10
Meu palpite é que seu branch master não é a versão mais recente. Verifique a versão específica com git rev-parse HEAD
sincronize e tente novamente com a versão mais recente, se necessário.
Olá, eu também tenho esse problema. Você resolveu?
não
Este branch corrige o problema para você? https://github.com/go-sql-driver/mysql/tree/empty_auth
Em qualquer caso, seria ótimo se você pudesse inserir um print(data)
simples após este bloco https://github.com/go-sql-driver/mysql/blob/d523deb1b23d913de5bdada721a6071e71283618/packets.go#L157 -L167 e aqui https://github.com/go-sql-driver/mysql/blob/d523deb1b23d913de5bdada721a6071e71283618/packets.go#L469 -L474 e nos envie o dump do pacote resultante para que possamos usá-lo para criar um teste de regressão.
@gocuntian você resolveu o problema?
Eu tenho a mesma dúvida, minha dúvida é que meu servidor envia o pacote init sem a forma de autenticação
acumulando código-fonte:
auth.go: 240, em func auth (), adicione o código:
if plugin == "" {
plugin = "mysql_native_password"
}
meu problema foi resolvido
Recebi o mesmo aviso ao conectar ao MySQL 5.1.
auth.go:293: unknown auth plugin:
driver.go:120: could not use requested auth plugin '': this authentication plugin is not supported
A filial https://github.com/go-sql-driver/mysql/tree/empty_auth corrigiu isso. Você tem um plano para fundir o branch? @julienschmidt
Eu tenho o mesmo problema.
driver.go:113: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
Falha no mestre (vá buscar)
Falha com v1.4.0
Funciona com v1.3.0
Eu poderia fornecer mais informações se você precisar. Ou você acha que é outro problema e devo criar um novo problema?
Reaberto. Consulte # 828 e # 835 (PR para empty_auth
filial)
Só quero destacar que parece haver dois problemas aqui com sintomas muito semelhantes.
A correção em # 835 parece corrigir o caso em que há um nome de plug-in de autenticação vazio, mas não resolve o problema que @mbertschler e eu tivemos com o plug-in mysql_native_password
(consulte https://github.com/ go-sql-driver / mysql / issues / 828 # issuecomment-401856689 para mais detalhes).
Talvez seja um problema diferente, mas suspeito que uma correção mais ampla seja necessária do que a proposta em # 835.
@ kwoodhouse93 Você pode nos enviar um log de pacote, por exemplo, conforme descrito aqui: https://github.com/go-sql-driver/mysql/issues/815#issuecomment -396244978 (de preferência usando a filial empty_auth
/ # 835)?
E também tente adicionar &allowNativaPasswords=true
ao seu DSN, apenas para garantir (deve ser true
por padrão)
Usando empty_auth
branch, adicionei print(data)
nos locais mencionados e o resultado foi:
[74/4092]0xc42036c004[mysql] 2018/07/13 11:49:18 driver.go:123: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
[74/4092]0xc420371004[mysql] 2018/07/13 11:49:26 driver.go:123: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
...
Isso se repetiu 12 vezes antes de parar de tentar novamente, cada uma com um endereço ligeiramente diferente.
Com relação ao meu DSN, estou usando mysql.Config
com FormatDSN()
. AllowNativePasswords
foi omitido ao criar a estrutura Config
, então adicionei AllowNativePasswords: true,
. Isso mudou um pouco o comportamento, mas no final das contas ainda retornou o mesmo erro.
[74/4092]0xc420294004[7/4092]0xc420294004S[74/4092]0xc4201bb004[mysql] 2018/07/13 11:53:13 driver.go:123: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
(Observe, não se repetiu desta vez. Só falhou uma vez e retornou um erro para meu aplicativo cliente)
Olhando para a saída produzida por print(data)
, você esperava ver o conteúdo desses endereços? Fico feliz em tentar de novo se você puder me dizer como fazer isso (olharia para mim, mas não tenho muito mais tempo para dedicar a isso hoje).
Eu atualizei e recebi este erro:
could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
Estou usando o discador proxy com DialCfg de github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql e, no meu caso, a solução simples foi adicionar AllowNativePasswords na estrutura de configuração.
&mysqldriver.Config{
AllowNativePasswords: true,
...
}
@mglonnro consulte https://github.com/go-sql-driver/mysql/issues/815#issuecomment -425704501
Este erro foi resolvido no meu caso especificando AllowNativePasswords: true
na configuração
AllowNativePassword é verdadeiro por padrão.
Você não deve usar Config{}
para criar um objeto de configuração. Use DSN ou NewConfig()
.
https://godoc.org/github.com/go-sql-driver/mysql#Config
Se um novo Config for criado em vez de ser analisado a partir de uma string DSN, a função NewConfig deve ser usada, que define os valores padrão.
Obrigado. Eu estava criando um Config
porque li nos documentos da API, perdi essa etapa.
Comentários muito úteis
Eu atualizei e recebi este erro:
could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
Estou usando o discador proxy com DialCfg de github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql e, no meu caso, a solução simples foi adicionar AllowNativePasswords na estrutura de configuração.
&mysqldriver.Config{ AllowNativePasswords: true, ... }