Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Acesso negado para 'user'@'localhost'


Eu não acho que isso seja um problema de porta, a solicitação está chegando ao destino. Usando [email protected] funcionará ao efetuar login através da linha de comando (mysql -u root -p ), mas você não deseja usá-lo para se conectar ao seu código. Tenha em mente que ao estabelecer sua conexão, você precisa usar host=localhost ou host=127.0.0.1 explicitamente. Se você usar o endereço IP (mesmo no mesmo servidor), terá acesso negado.
[[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)

Aqui estão as etapas que eu recomendo:
  1. Crie um usuário dedicado que você possa usar para se conectar em seus scripts.

  2. Se a fonte do script for o mesmo servidor que o MySQL.
    CREATE USER '<user>'@'localhost'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'localhost';
    

  3. Se a conexão for sempre estabelecida no mesmo local, mas em um local diferente do MySQL, execute o seguinte na linha de comando.
    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'<IP_address>';
    

  4. Se a origem da conexão variar, execute o comando a seguir.
    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'%';
    

Aqui está um link para a documentação se você tiver quaisquer perguntas.