2012-07-24 16 views
24

Ho creato un utente per il primo comando ma non posso accedere tramite localhost (linux). Questo collegamento mysqldoc indica che è necessario creare un secondo utente con lo stesso nome, ma utilizzando la sintassi nel secondo blocco di comandi.Gli utenti 'Utente' @ '%' e 'Utente' @ 'localhost' non sono gli stessi?

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) 

Quindi l'ho provato come di seguito, e in effetti ha funzionato. Ma questi due utenti separati? Se cambio pw per uno, l'altro si sincronizzerà, o sono veramente utenti separati?

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) 

risposta

18

[email protected]% consentire l'accesso da tutte le posizioni. [email protected] consentirebbe l'accesso solo da localhost. Sono due utenti diversi con due password diverse (sebbene sia possibile impostarli sulla stessa password, ma se si aggiorna una password l'altro non si aggiornerà automaticamente)

+12

Quando creo un utente 'utente @%' Io ancora non sembrano essere in grado di accedere da localhost. Invece sembra che devo creare un utente 'Utente @ localhost'. Questo sembra andare contro la frase "Utente @% consentirebbe l'accesso da tutte le posizioni.", No? – User

+1

Penso che potrebbe essere un problema di specifiche di Windows hanno a che fare con il file hosts: Vai a questa risposta per possibile soluzione: http://stackoverflow.com/a/2283806/155268 – User

+2

Più che probabile,% @ localhost è stato negato accesso, e senza una specifica concessione utente @ localhost, all'utente sarà negato l'accesso da localhost nonostante il carattere jolly User @% (che viene elaborato in seguito, a causa di un nome host meno specifico, secondo il manuale MySQL collegato da Bjoern in un risposta). – Kent

1

Anche se significherebbe lo stesso, o se si includi l'altro, sono in effetti utenti separati!

13.7.1.3. GRANT Syntax

MySQL e SQL standard versioni di GRANT

Le maggiori differenze tra MySQL e le versioni di SQL standard di GRANT sono:

  • MySQL associa privilegi con la combinazione di un nome host e il nome utente e non solo con un nome utente.
10

Fondamentalmente sì, quelli sono due utenti diversi con (possibilmente) diverse autorizzazioni e (possibilmente) password diverse.

  • myuser @%: Utente myuser, connessione da qualsiasi host.
  • myuser @ localhost: utente myuser, connessione solo da localhost.

Una buona lettura è MySQL manual about connection access, dimostra come funziona.

1

Ho riscontrato la stessa situazione descritta - L'aggiunta di una voce per [email protected]% non funzionava.

Eppure aggiungendo una voce per lo stesso [email protected]sarebbe iniziare a lavorare di nuovo però. Questo non sembrava intuitivo, data la nostra comprensione del modello %!

Un problema identificato da Kent sopra era che: Abbiamo avuto una riga voce nella tabella degli utenti per host:localhostma il user era vuoto. Apparentemente questo risolveva una regola per %@localhost che veniva utilizzata come corrispondenza prima della mia regola [email protected]%.

Risposta breve: verificare la presenza di nomi utente vuoti o caratteri jolly nella tabella user.

... Non ho idea di come sia arrivato lì vuoto o se è stato intenzionale.

Problemi correlati