Cuéntanos qué debería suceder y qué sucede en su lugar
complemento de autenticación desconocido 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
Versión del controlador (o git SHA): origen / maestro
Go versión: go1.10.2 darwin / amd64
Versión del servidor
SO del servidor: macOS 10.13.4 (17E202)
La siguiente sección también es por una buena razón en la plantilla de problemas:
### 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
Supongo que su rama maestra no es la última versión. Verifique la versión específica con git rev-parse HEAD
y sincronice e intente nuevamente con la versión más nueva si es necesario.
hola, yo también tengo este problema. ¿Lo has resuelto?
No
¿Esta rama soluciona el problema por ti? https://github.com/go-sql-driver/mysql/tree/empty_auth
En cualquier caso, sería genial si pudieras insertar un print(data)
simple después de este bloque https://github.com/go-sql-driver/mysql/blob/d523deb1b23d913de5bdada721a6071e71283618/packets.go#L157 -L167 y aquí https://github.com/go-sql-driver/mysql/blob/d523deb1b23d913de5bdada721a6071e71283618/packets.go#L469 -L474 y envíanos el volcado de paquetes resultante para que podamos usarlo para crear una prueba de regresión.
@gocuntian ¿resolvió el problema?
Tengo la misma pregunta, mi pregunta es que mi servidor envía el paquete de inicio sin la forma de autenticación
código fuente de acuerdo:
auth.go: 240, en func auth (), agregue el código:
if plugin == "" {
plugin = "mysql_native_password"
}
mi problema ha sido resuelto
Recibí la misma advertencia al conectarme a MySQL 5.1.
auth.go:293: unknown auth plugin:
driver.go:120: could not use requested auth plugin '': this authentication plugin is not supported
La rama https://github.com/go-sql-driver/mysql/tree/empty_auth lo arregló. ¿Tiene un plan para fusionar la rama? @julienschmidt
Tengo el mismo problema.
driver.go:113: could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
Falla en el maestro (ve a buscar)
Falla con v1.4.0
Funciona con v1.3.0
Podría proporcionar más información si la necesita. ¿O crees que es otro problema y debería crear un nuevo problema?
Reabierto. Ver # 828 y # 835 (PR para empty_auth
sucursal)
Solo quiero resaltar que parece haber dos problemas aquí con síntomas muy similares.
La solución en # 835 parece solucionar el caso en el que hay un nombre de complemento de autenticación vacío, pero no resuelve el problema @mbertschler y yo teníamos con el complemento mysql_native_password
(ver https://github.com/ go-sql-driver / mysql / issues / 828 # issuecomment-401856689 para más detalles).
Tal vez ese sea un problema diferente, pero sospecho que se requiere una solución más amplia que la propuesta en el n. ° 835.
@ kwoodhouse93 ¿Puede enviarnos un registro de paquetes, por ejemplo, como se describe aquí: https://github.com/go-sql-driver/mysql/issues/815#issuecomment -396244978 (preferiblemente usando la rama empty_auth
/ # 835)?
Y también intente agregar &allowNativaPasswords=true
a su DSN, por si acaso (debería ser true
por defecto)
Usando empty_auth
branch, agregué print(data)
en los lugares mencionados, y el resultado fue:
[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.
...
Eso se repitió 12 veces antes de que dejara de intentarlo, cada una con una dirección ligeramente diferente.
Con respecto a mi DSN, estoy usando mysql.Config
con FormatDSN()
. AllowNativePasswords
se omitió al crear la estructura Config
, así que agregué AllowNativePasswords: true,
. Eso cambió un poco el comportamiento, pero finalmente devolvió el mismo error.
[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.
(Tenga en cuenta que no se repitió esta vez. Solo falló una vez y devolvió un error a la aplicación de mi cliente)
Mirando la salida producida por print(data)
, ¿esperaba ver el contenido de esas direcciones? Me alegra intentarlo de nuevo si me puedes decir cómo hacerlo (lo vería yo mismo, pero no tengo mucho más tiempo para dedicarle a esto hoy).
Actualicé y obtuve este error:
could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
Estoy usando el marcador proxy con DialCfg de github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql, y en mi caso, la solución simple fue agregar AllowNativePasswords en la estructura de configuración.
&mysqldriver.Config{
AllowNativePasswords: true,
...
}
@mglonnro ver https://github.com/go-sql-driver/mysql/issues/815#issuecomment -425704501
Este error se solucionó en mi caso especificando AllowNativePasswords: true
en la configuración
AllowNativePassword es verdadero de forma predeterminada.
No debe usar Config{}
para crear un objeto de configuración. Utilice DSN o NewConfig()
.
https://godoc.org/github.com/go-sql-driver/mysql#Config
Si se crea una nueva configuración en lugar de analizarse a partir de una cadena DSN, se debe utilizar la función NewConfig, que establece los valores predeterminados.
Gracias. Estaba creando un Config
porque leí en los documentos de la API y me perdí ese paso.
Comentario más útil
Actualicé y obtuve este error:
could not use requested auth plugin 'mysql_native_password': this user requires mysql native password authentication.
Estoy usando el marcador proxy con DialCfg de github.com/GoogleCloudPlatform/cloudsql-proxy/proxy/dialers/mysql, y en mi caso, la solución simple fue agregar AllowNativePasswords en la estructura de configuración.
&mysqldriver.Config{ AllowNativePasswords: true, ... }