usuarios - No se puede iniciar sesión con el usuario creado en mysql
usuarios y privilegios en mysql (12)
Acabo de crear una cuenta para proporcionar otra posibilidad para futuros buscadores:
Puede ser algo obvio para los usuarios experimentados, pero mi contraseña se generó aleatoriamente y contenía una "/". Me tomó un tiempo hasta que descubrí que ese personaje parece causar problemas, lo que hace que no pueda iniciar sesión.
Usando este comando
GRANT ALL PRIVILEGES ON *.* to ''brian''@''%'' identified by ''password'';
Intento iniciar sesión con:
mysql -u brian -ppassword
El error es:
ERROR 1045 (28000): Access denied for user ''brian''@''localhost'' (using password: YES)
Estoy haciendo esto como root e intenté eliminar los privilegios.
Intenté esto con innumerables usuarios, pero parece que no funciona. Puedo crear un usuario sin contraseña y el inicio de sesión funciona. Línea de comando y desde phpmyadmin
También verifique si el usuario estaba en mysql.user, que es.
Mostrar subvenciones para espectáculos de Brian:
| GRANT ALL PRIVILEGES ON *.* TO ''brian''@''%'' IDENTIFIED BY PASSWORD ''*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19'' |
Creo que ''Russell Silva'' tiene razón ...
Creé un usuario por
CREATE USER ''username''@''%'' PASSWORD=''userpassword'';
Pero no puedo iniciar sesión en esta cuenta. La consola me dijo que
ERROR 1045 (28000): Access denied for user ''username''@''localhost'' (using password: YES)
Así que creé un usuario con el mismo nombre de usuario excepto que cambiaba ''%'' a ''localhost'', y finalmente pude iniciar sesión como ''nombre de usuario''. Aunque es bastante extraño para mí.
En mi caso, fue debido a que hice clic en "SSL: REQUIRE SSL" (en phpmyadmin). Cuando lo cambié a "REQUIRE NONE", pude iniciar sesión.
Es probable que tenga este problema perpetuo de MySQL, donde uno de los usuarios predeterminados en la tabla de usuarios es '''' @ localhost
, que termina negando todos los usuarios de localhost
más adelante en la tabla. Lo que haría es mysqldump
la base de datos mysql
y buscar esta entrada en la tabla de User
; si se encuentra, elimínelo y limpie los privilegios.
Para obtener más información, consulte https://dev.mysql.com/doc/refman/5.5/en/connection-access.html .
Es un error común pensar que, para un nombre de usuario dado, todas las filas que nombran explícitamente a ese usuario se usan primero cuando el servidor intenta encontrar una coincidencia para la conexión. Esto no es verdad. El ejemplo anterior ilustra esto, donde una conexión de h1.example.net por jeffrey no coincide primero con la fila que contiene ''jeffrey'' como el valor de la columna del usuario, sino por la fila sin nombre de usuario. Como resultado, jeffrey se autentica como usuario anónimo, aunque especificó un nombre de usuario cuando se conectó.
Este es un problema causado por los usuarios anónimos. Una vez que instalo MySQL siempre corro
shell> mysql_secure_installation
y seleccione establecer / cambiar la contraseña de root, eliminar usuarios anónimos, no permitir el inicio de sesión raíz remoto, eliminar la base de datos de prueba. Esto eliminará al usuario anónimo y asegurará su instalación. También debería resolver el problema que tienes.
Los documentos de mysql tienen esto que decir: (de http://dev.mysql.com/doc/refman/5.1/en/adding-users.html ):
Dos de las cuentas tienen un nombre de usuario de
monty
y una contraseña desome_pass
. Ambas cuentas son cuentas de superusuario con privilegios completos para hacer cualquier cosa. La cuenta''monty''@''localhost''
se puede usar cuando se conecta desde el host local. La cuenta''monty''@''%''
usa el comodín''%''
para la parte del host, por lo que se puede usar para conectarse desde cualquier host.Es necesario tener ambas cuentas para que
monty
pueda conectarse desde cualquier lugar comomonty
. Sin la cuenta de localhost, la cuenta de usuario anónimo para localhost creada pormysql_install_db
tendría prioridad cuando monty se conecta desde el host local. Como resultado,monty
sería tratado como un usuario anónimo. La razón para esto es que la cuenta de usuario anónimo tiene un valor de columna deHost
más específico que la cuenta''monty''@''%''
y, por lo tanto, aparece antes en el orden de clasificación de la tabla de usuario.
Con esto en mente, le recomendaría que cree un usuario ''brian''@''localhost''
con los mismos privilegios.
Ninguna de las soluciones proporcionadas aquí funcionó. Después de un montón de errores y pruebas, me di cuenta de que tenía caracteres especiales en la contraseña. Cambiar la contraseña sin caracteres especiales resolvió el problema
Olvidó las citas de Brian en su declaración de concesión. Pruébalo así:
GRANT ALL PRIVILEGES ON *.* to ''brian''@''%'' identified by ''password'';
También puede conectarse desde otro host y luego se anula el usuario anónimo del host local y puede eliminarlo y eliminar privilegios:
mysql -u brian -ppassword -h ''other_host_than_localhost''
Tuve un problema similar al intentar conectarme a un Maria DB que se ejecutaba en Ubuntu después de actualizar a 17.04.
El valor predeterminado era escuchar solo en localhost, 127.0.0.1.
Para hacer que MySQL / Maria escuchara en todos los puertos e interfaces disponibles, necesitaba especificar explícitamente bind-address = 0.0.0.0. /etc/mysql/my.cnf
esta línea al final del archivo /etc/mysql/my.cnf
, es decir,
...
[client-server]
# Import all .cnf files from configuration directory
!includedir /etc/mysql/conf.d/
!includedir /etc/mysql/mariadb.conf.d/
bind-address=0.0.0.0
Entonces...
sudo /etc/init.d/mysql restart
Un problema similar ocurrió incluso después de verificar que no ingresé una contraseña incorrecta. No pude ingresar. Debajo de dos pasos resolvió mi problema.
- Bajando la base de datos de prueba
- Eliminar usuario anónimo
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)