sql >> Database >  >> RDS >> Mysql

Toegang geweigerd voor 'gebruiker'@'localhost'

Ik denk niet dat dit een poortprobleem is, het verzoek bereikt zijn bestemming. [email protected] werkt wanneer u zich aanmeldt via de opdrachtregel (mysql -u root -p ) maar je wilt het niet gebruiken om verbinding te maken met je code. Houd er rekening mee dat wanneer u uw verbinding tot stand brengt, u host=localhost . moet gebruiken of host=127.0.0.1 uitdrukkelijk. Als u het IP-adres gebruikt (zelfs op dezelfde server), wordt de toegang geweigerd.

[[email protected] ~]# mysql --host=127.0.0.1 --protocol=TCP -u root -p
Enter password:
mysql>
[[email protected] ~]# mysql --host=192.168.1.10 --protocol=TCP -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'hostname' (using password: YES)

Dit zijn de stappen die ik zou aanraden te nemen:

  1. Maak een speciale gebruiker aan die u kunt gebruiken om verbinding te maken in uw scripts.
  2. Als de bron van het script dezelfde server is als MySQL.

    CREATE USER '<user>'@'localhost'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'localhost';
    
  3. Als de verbinding altijd tot stand wordt gebracht vanaf dezelfde plaats maar een andere locatie dan MySQL, voert u het volgende uit op de opdrachtregel.

    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'<IP_address>';
    
  4. Als de bron van de verbinding varieert, voert u de volgende opdracht uit.

    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'%';
    

Hier is een link naar de documentatie als je vragen hebt.




  1. mysql_fetch_array haalt niet alle rijen op

  2. Trek kolommen uit een afgeleide tabel en som ze op in één MySQL SELECT-instructie

  3. Kill MySQL-query bij afbreken gebruiker

  4. Inzicht in de unieke beperkingen van SQL Server