2012-07-24 22 views
24

Creé un usuario por cada primer comando pero no puedo iniciar sesión a través de localhost (linux). Este enlace mysqldoc indica que necesito crear un segundo usuario con el mismo nombre, pero usando la sintaxis en el segundo bloque de comandos.¿Los usuarios 'Usuario' @ '%' y 'Usuario' @ 'localhost' no son lo mismo?

mysql> CREATE USER 'myuser'@'%' IDENTIFIED BY '4myuser'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> GRANT ALL ON my_upload.* TO 'myuser'@'%' IDENTIFIED BY '4myuser'; 
Query OK, 0 rows affected (0.00 sec) 

Así que lo intenté como a continuación, y de hecho funcionó. ¿Pero son estos dos usuarios separados? Si cambio el pw por uno, ¿el otro se sincronizará, o son usuarios verdaderamente separados?

mysql> CREATE USER 'myuser'@'localhost' IDENTIFIED BY '4myuser'; 
Query OK, 0 rows affected (0.00 sec) 

mysql> GRANT ALL PRIVILEGES ON my_upload.* TO 'myuser'@'localhost'; 
Query OK, 0 rows affected (0.00 sec) 

Respuesta

18

[email protected]% permitirían el acceso desde todas las ubicaciones. [email protected] solo permitiría el acceso desde localhost. Son dos usuarios diferentes con dos contraseñas diferentes (aunque puede establecerlos con la misma contraseña, pero si actualiza una contraseña la otra no se actualizará automáticamente)

+12

Cuando creo un usuario 'Usuario @%', todavía no puedo iniciar sesión desde localhost. En cambio, parece que tengo que crear un usuario 'Usuario @ localhost'. Esto parece ir en contra de la afirmación "Usuario @% permitiría el acceso desde todas las ubicaciones", ¿no? – User

+1

Creo que podría tratarse de un problema específico de Windows que tiene que ver con el archivo hosts: vea esta respuesta para una posible solución: http://stackoverflow.com/a/2283806/155268 – User

+2

Es muy probable que se haya denegado% @ localhost acceso, y sin una subvención User @ localhost específica, se le denegará acceso al usuario desde el host local a pesar del comodín User @% (que se procesa más tarde, debido a que tiene un nombre de host menos específico, según el manual MySQL vinculado por Bjoern en un responder). – Kent

1

Incluso si significaran lo mismo, o si uno lo haría incluir el otro, ¡SON de hecho usuarios separados!

13.7.1.3. GRANT Syntax

MySQL y SQL estándar Versiones de GRANT

Las mayores diferencias entre el MySQL y versiones SQL estándar de GRANT son:

  • MySQL asocia privilegios con la combinación de un nombre de host y el nombre de usuario y no solo con un nombre de usuario.
10

Básicamente sí, esos son dos usuarios diferentes (posiblemente) con diferentes permisos y (posiblemente) contraseñas diferentes.

  • myuser @%: Usuario myuser, que se conecta desde cualquier host.
  • myuser @ localhost: usuario myuser, que se conecta solo desde el host local.

Una buena lectura es MySQL manual about connection access, demuestra cómo funciona.

1

Encontré la misma situación que la descrita: Agregar una entrada para [email protected]% no funcionaba.

embargo añadiendo una entrada para el mismo [email protected] sería empezar a trabajar de nuevo. Esto parecía poco intuitivo, dado nuestro conocimiento del patrón %.

Un problema identificado por encima de Kent fue que: Tuvimos una fila de entrada en la tabla de usuarios para host:localhostpero el user estaba en blanco. Esto aparentemente resolvió una regla para %@localhost que se estaba usando como una coincidencia antes de mi regla [email protected]%.

Respuesta corta: verifique los nombres de usuario en blanco o comodín en su tabla user.

... No tengo idea de cómo llegó ese espacio en blanco o si fue intencional.

Cuestiones relacionadas