Accesso negato per l’utente ‘test’ @ ‘localhost’ (utilizzando la password: YES) tranne l’utente root

Sto affrontando problemi con mysql non root / utente admin, sto seguendo i passaggi di seguito per la creazione di utenti e i suoi privilegi, correggimi se sto sbagliando,

sto installando mysql su RHEL 5.7 64bit , i pacchetti sono menzionati sotto, una volta che ho fatto l’ rpm install ci siamo

  1. creando mysql db usando mysql_install_db , quindi
  2. iniziando il servizio mysql allora
  3. usando mysql_upgrade anche noi stiamo facendo al server.

Dopo questo processo posso accedere come root ma con un utente non root non riesco ad accedere al server:

 [[email protected] ~]# rpm -qa | grep MySQL MySQL-client-advanced-5.5.21-1.rhel5 MySQL-server-advanced-5.5.21-1.rhel5 [[email protected] ~]# cat /etc/my.cnf [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock user=mysql # Default to using old password format for compatibility with mysql 3.x # clients (those using the mysqlclient10 compatibility package). old_passwords=1 # Disabling symbolic-links is recommended to prevent assorted security risks; # to do so, uncomment this line: # symbolic-links=0 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [[email protected] ~]# ls -ld /var/lib/mysql/mysql.sock srwxrwxrwx 1 mysql mysql 0 Nov 30 11:09 /var/lib/mysql/mysql.sock mysql> CREATE USER 'golden'@'%' IDENTIFIED BY 'password'; Query OK, 0 rows affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%'; Query OK, 0 rows affected (0.00 sec) mysql> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) mysql> SELECT USER(),CURRENT_USER(); +----------------+----------------+ | USER() | CURRENT_USER() | +----------------+----------------+ | [email protected] | [email protected] | +----------------+----------------+ 1 row in set (0.00 sec) [[email protected] ~]# mysql -ugolden -p Enter password: ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES) 

Questo è il problema che sto affrontando, c’è qualche soluzione a questo?

Non concedere tutti i privilegi su tutti i database a un utente non root, non è sicuro (e hai già “root” con quel ruolo)

 GRANT  ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password'; 

Questa dichiarazione crea un nuovo utente e concede i privilegi selezionati ad esso. IE:

 GRANT INSERT, SELECT, DELETE, UPDATE ON database.* TO 'user'@'localhost' IDENTIFIED BY 'password'; 

Dai un’occhiata ai documenti per vedere tutti i privilegi dettagliati

EDIT: puoi cercare maggiori informazioni con questa query (accedi come “root”):

 select Host, User from mysql.user; 

Per vedere cosa è successo

Se ti stai collegando a MySQL usando una macchina remota (esempio workbench) ecc., Usa i seguenti passi per eliminare questo errore su OS dove è installato MySQL

 mysql -u root -p CREATE USER '<>'@'%%' IDENTIFIED BY '<>'; GRANT ALL PRIVILEGES ON * . * TO '<>'@'%%'; FLUSH PRIVILEGES; 

Prova ad accedere all’istanza di MYSQL.
Questo ha funzionato per me per eliminare questo errore.

Provare:

 CREATE USER 'golden'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'golden'@'localhost'; FLUSH PRIVILEGES; 

O ancora meglio usare: mysql_setpermission per creare l’utente

Sembra che tu stia cercando di rendere un ‘golden’ utente ‘@’% ‘, ma un utente diverso con il nome’ golden ‘@’ localhost ‘sta intralciando / ha la precedenza.

Fai questo comando per vedere gli utenti:

 SELECT user,host FROM mysql.user; 

Dovresti vedere due voci:

1) utente = golden, host =%

2) utente = golden, host = localhost

Fai questo comando:

 DROP User 'golden'@'localhost'; DROP User 'golden'@'%'; 

Riavvia MySQL Workbench.

Quindi esegui nuovamente i tuoi comandi originali:

 CREATE USER 'golden'@'%' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON * . * TO 'golden'@'%'; 

Poi quando vai per provare ad accedere a MySQL, digita in questo modo:

inserisci la descrizione dell'immagine qui

Fai clic su “Connessione test” e inserisci la password “password”.

Per prima cosa ho creato l’utente usando:

 CREATE user [email protected] IDENTIFIED BY 'password_txt'; 

Dopo aver cercato su Google e aver visto ciò , ho aggiornato la password dell’utente usando:

 SET PASSWORD FOR 'user'@'localhost' = PASSWORD('password_txt'); 

e potrei collegarmi in seguito.

Per chiunque altro abbia fatto tutti i consigli, ma il problema persiste ancora.

Controllare la procedura memorizzata e visualizzare DEFINER. Quei definitori potrebbero non esistere più.

Il mio problema è emerso quando abbiamo cambiato l’host jolly (%) in IP specifico, rendendo il database più sicuro. Sfortunatamente ci sono alcune viste che usano ancora ‘utente’ @ ‘%’ anche se ‘utente’ @ ‘172 ….’ è tecnicamente corretto.

Ho anche il problema simile, e più tardi ho scoperto che è perché ho cambiato il mio nome host (non localhost ).

Pertanto ottengo risolto specificando il --host=127.0.0.1

 mysql -p mydatabase --host=127.0.0.1 

In base al modo in cui crei il tuo utente, MySQL interpreta in modo diverso. Ad esempio, se crei un utente come questo:

 create user user01 identified by 'test01'; 

MySQL si aspetta che tu dia qualche privilegio usando grant all on .* to user01;

Non dimenticare di flush privileges;

Ma se crei un utente simile (passando un indirizzo IP), devi cambiarlo in:

 create user 'user02'@'localhost' identified by 'teste02'; 

quindi, per dare alcuni privilegi devi farlo:

 grant all on .* to [email protected]; flush privileges; 

Nel mio caso si verifica lo stesso errore perché stavo cercando di usare mysql semplicemente digitando “mysql” invece di “mysql -u root -p”

collega il tuo server da mysqlworkbench ed esegui questo comando-> ALTER USER ‘root’ @ ‘localhost’ IDENTIFIED BY ‘yourpassword’;

Assicurati che l’utente abbia una voce localhost nella tabella degli utenti. Questo era il problema che stavo avendo. EX:

 CREATE USER 'username'@'localhost' IDENTIFIED BY 'password'; 

Basta aggiungere il nome del computer invece di “localhost” nel nome host o nell’indirizzo host MySQL.