ERROR 1044 (42000): acceso denegado para el usuario '' @ 'localhost' a la base de datos 'db'

164

Quiero comenzar a escribir consultas en MySQL.

show grants muestra:

+--------------------------------------+
| Grants for @localhost                |
+--------------------------------------+
| GRANT USAGE ON *.* TO ''@'localhost' |
+--------------------------------------+

No tengo ninguna identificación de usuario, pero cuando quiero hacer un usuario no tengo privilegios, ¡tampoco sé cómo hacer privilegios cuando ni siquiera tengo un usuario!

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'parsa';
ERROR 1227 (42000): Access denied; you need (at least one of) the CREATE USER pr
ivilege(s) for this operation

Traté de iniciar sesión como root:

mysql> mysql -u root -p;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p' at line 1
mysql> mysql -u root -p root;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'mysql
 -u root -p root' at line 1
Nickool
fuente
3
Debe iniciar sesión como usuario con permisos. Al menos rootdebería haber sido creado cuando instaló MySQL.
derobert
durante la instalación, me dice que configure la contraseña y la configuro como root ahora, ¿qué puedo hacer?
Nickool
9
Debe iniciar sesión como root, por ejemplo, ejecutando mysql -u root -p. Entonces tendrá permisos completos en el servidor de la base de datos y podrá crear otros usuarios.
derobert
cuando inicie sesión con la línea de comandos, haga lo siguiente para iniciar sesión como root: mysql -u root -p
Travis
1
@nikparsa: No, lo ejecutarías en lugar de 'mysql', desde el indicador de comandos de shell, no desde el indicador de mysql.
derobert

Respuestas:

219

No, debe ejecutar mysql -u root -pen bash, no en la línea de comandos de MySQL. Si está en mysql, puede salir escribiendo exit .

No porque
fuente
¿Cómo puedo ir a bash? Tuve problemas para instalar mysql, mira aquí superuser.com/questions/377679/ ... Solo sé sobre abt en la línea de comandos
Nickool
66
use 'salir' para salir de mysql, entonces estará en bash
Nowhy
23
Para tu información, la contraseña está en blanco de forma
predeterminada
¿Qué pasa si estoy usando Windows?
PHPFan
salir o salir no funciona para mí, por favor proporcione otra forma. Estoy en Windows 10
Metin Dagcilar
46

Es posible que deba configurar una cuenta raíz para su base de datos MySQL:

En el tipo de terminal:

mysqladmin -u root password 'root password goes here'

Y luego para invocar al cliente MySQL:

mysql -h localhost -u root -p
suela
fuente
1
Este funcionó para mí, estaba funcionando bien inicialmente y de repente dejó de funcionar un día. Alguna idea, ¿por qué sucede esto en primer lugar?
mu 無
@soleshoe estoy obteniendo error: sudo: mysqladmin: comando no encontrado por favor ayúdame ¿qué puedo hacer? mysql ya se está ejecutando en System Preference.
Hitarth
29

Fui traído aquí por un problema diferente. Cada vez que intenté iniciar sesión, recibí ese mensaje porque en lugar de autenticarme correctamente, inicié sesión como usuario anónimo. La solución a mi problema fue:

Para ver qué usuario es usted y qué permisos tiene:

select user(), current_user();

Para eliminar el usuario anónimo molesto:

drop user ''@'localhost';
Lefteris E
fuente
1
Esto resolvió el problema para mí a pesar de que estaba usando "mysql -u username -p". Muy extraño: user () era mi nombre de usuario, pero current_user () era localhost ... ¿no sabes por qué?
ethanpil
2
@Leftteris hola .. obtengo este error: acceso denegado; necesita (al menos uno de) los privilegios CREAR USUARIO para esta operación cuando trato de soltar el usuario '' @ 'localhost';
Hitarth
15

Esto tiene algo que ver con los permisos de usuario. Dar las subvenciones adecuadas resolverá este problema.

Paso [1]: abra la terminal y ejecute este comando

$ mysql -uroot -p

Salida [1]: Esto debería proporcionarle el indicador mysql que se muestra a continuación

ingrese la descripción de la imagen aquí

Paso 2]:

mysql> CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';
mysql> grant all privileges on *.* to 'parsa'@'localhost';

Sintaxis:

mysql> grant all privileges on `database_name`.`table_name` to 'user_name'@'hostname';

Nota:

  • El nombre de host puede ser dirección IP, localhost, 127.0.0.1
  • En database_name/ table_name, * significa todas las bases de datos
  • En hostname, para especificar todos los hosts, use '%'

Paso [3]: Salga de la solicitud actual de mysql ingresando quit/ exitcomando o presione Ctrl+D.

Paso [4]: ​​inicie sesión con su nuevo usuario

$ mysql -uparsa -pyour_password

Paso [5]: crea la base de datos

mysql> create database `database_name`;
theBuzzyCoder
fuente
cuando lo hago CREATE USER 'parsa'@'localhost' IDENTIFIED BY 'your_password';, aparece el error: ERROR 1227 (42000): acceso denegado; necesita (al menos uno de) los privilegios CREAR USUARIO para esta operación
avión
¿Ha iniciado sesión en el cliente mysql con el usuario root
TheBuzzyCoder
9

Es posible que desee probar el comando de inicio de sesión completo:

mysql -h host -u root -p 

donde estaría el anfitrión 127.0.0.1.

Haga esto solo para asegurarse de que existe cooperación.

El uso mysql -u root -pme permite realizar muchas búsquedas en la base de datos, pero rechaza cualquier creación de base de datos debido a una configuración de ruta.

Rayo
fuente
6

Primero, si no está familiarizado con la línea de comandos, intente usar phpmyadmin desde su navegador web. Esto asegurará que realmente tenga una base de datos mysql creada y un nombre de usuario.

Así es como te conectas desde la línea de comando (bash):

mysql -h hostname -u username -p database_name

Por ejemplo:

fabio@crunchbang ~ $ mysql -h 127.0.0.1 -u fabio -p fabiodb
fabiog
fuente
1
-pes para contraseña y la está usando para pasar el nombre de la base de datos. Además, para la contraseña, no debe haber un espacio en blanco y negro -py la contraseña real. Use -Dpara conectarse a una base de datos específica.
sv.
5

Si está en un MySQLshell, salga escribiendo exit , que lo devolverá al símbolo del sistema.

Ahora comience MySQLusando exactamente el siguiente comando:

sudo mysql -u root -p

Si su nombre de usuario no es root, reemplace 'root' en el comando anterior con su nombre de usuario:

sudo mysql -u <your-user-name> -p

Luego le pedirá la MySQLcuenta / contraseña, y MySQLluego no mostrará ningún problema de privilegio de acceso.

Kshitij Mittal
fuente
después de ingresar la contraseña
obtengo
no debería ser "sudo:", debería ser "sudo" ... Si no es un error tipográfico, creo que este es el problema.
Kshitij Mittal
2

@Nickparsa ... tienes 2 problemas:

1) mysql -uroot -p debe escribirse en bash (también conocido como su terminal) no en la línea de comandos de MySQL. Corrige este error escribiendo

exit

en su línea de comando MySQL. Ahora está de vuelta en su línea de comando bash / terminal.

2) Tiene un error de sintaxis:

mysql -uroot -p; 

el punto y coma delante de -p debe irse. La sintaxis correcta es:

mysql -uroot -p

escriba la sintaxis correcta en su línea de comando bash. Ingrese una contraseña si tiene una configurada; de lo contrario, simplemente presione el botón enter. Debería obtener una respuesta similar a esta: ingrese la descripción de la imagen aquí

¡Espero que esto ayude!

Uzzar
fuente
Hola, obtuve la pantalla de abajo directamente después de disparar esta recomendación. / usr / local / mysql / bin / mysql pero después de eso cuando intento crear una base de datos usando "CREATE DATABASE books" recibo el error: ERROR 1044 (42000): Acceso denegado para el usuario '' @ 'localhost' a la base de datos ' libros 'por favor
ayúdenme
0

La mayoría de los desarrolladores inician sesión en el servidor (supongo que tiene un nombre de usuario y una contraseña para la base de datos mysql) y luego desde Bash cambian para mysql> promptluego usar el comando a continuación (que no funciona

mysql -h localhost -u root -p

Lo que hay que hacer es usar el comando anterior en el indicador bash -> al hacerlo, le pedirá una contraseña si se le da, lo llevará directamente al indicador mysql y

luego base de datos, la tabla se puede crear uno por uno

Me enfrenté a un punto muerto similar, así que compartí la experiencia

Devrath
fuente
0

Tenía el comando correcto según las respuestas anteriores, lo que me perdí fue en el Workbench, donde mencionamos 'Limitar la conectividad desde el host' para el usuario, por defecto es "%" - ¡cambie esto a "localhost" y se conecta bien a partir de entonces!

aguafiestas
fuente