Acesso negado para o usuário ‘test’ @ ‘localhost’ (usando a senha: YES) exceto usuário root

Estou enfrentando problema com o usuário mysql não root / admin, estou seguindo os passos abaixo para criar usuário e seus privilégios, me corrija se estou fazendo errado,

Eu estou instalando o mysql no RHEL 5.7 64bit , pacotes são mencionados abaixo, uma vez que eu fiz a rpm install do rpm install estamos

  1. criando mysql db usando mysql_install_db , então
  2. iniciando o serviço mysql então
  3. usando mysql_upgrade também estamos fazendo para o servidor.

Após este processo, eu posso logar como root mas com um usuário não root, não consigo fazer login no servidor:

 [root@clustertest3 ~]# rpm -qa | grep MySQL MySQL-client-advanced-5.5.21-1.rhel5 MySQL-server-advanced-5.5.21-1.rhel5 [root@clustertest3 ~]# 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 [root@clustertest3 ~]# 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() | +----------------+----------------+ | root@localhost | root@localhost | +----------------+----------------+ 1 row in set (0.00 sec) [root@clustertest3 ~]# mysql -ugolden -p Enter password: ERROR 1045 (28000): Access denied for user 'golden'@'localhost' (using password: YES) 

Este é o problema que estou enfrentando, existe alguma solução para isso?

    Não conceda todos os privilégios sobre todos os bancos de dados a um usuário não raiz, não é seguro (e você já tem “root” com essa function)

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

    Esta declaração cria um novo usuário e concede privilégios selecionados a ele. IE:

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

    Dê uma olhada nos documentos para ver todos os privilégios detalhados

    EDIT: você pode procurar mais informações com esta consulta (log in como “root”):

     select Host, User from mysql.user; 

    Para ver o que aconteceu

    Se você está se conectando ao MySQL usando máquina remota (exemplo workbench) etc., siga os seguintes passos para eliminar este erro no sistema operacional onde o MySQL está instalado

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

    Tente efetuar login na instância do MYSQL.
    Isso funcionou para mim para eliminar esse erro.

    Experimentar:

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

    Ou ainda melhor usar: mysql_setpermission para criar o usuário

    Parece que você está tentando tornar um usuário ‘golden’ @ ‘%’, mas um usuário diferente com o nome ‘golden’ @ ‘localhost’ está ficando no caminho / tem precedência.

    Faça este comando para ver os usuários:

     SELECT user,host FROM mysql.user; 

    Você deve ver duas inputs:

    1) usuário = golden, host =%

    2) usuário = golden, host = localhost

    Faça estes comandos:

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

    Reinicie o MySQL Workbench.

    Então faça seus comandos originais novamente:

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

    Então quando você for tentar entrar no MySQL, digite-o assim:

    insira a descrição da imagem aqui

    Clique em ‘Test Connection’ e digite sua senha ‘password’.

    Primeiro eu criei o usuário usando:

     CREATE user user@localhost IDENTIFIED BY 'password_txt'; 

    Depois de googling e vendo isso , eu atualizei a senha do usuário usando:

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

    e eu poderia me conectar depois.

    Para qualquer outra pessoa que fez todos os conselhos, mas o problema ainda persiste.

    Verifique o procedimento armazenado e veja os DEFINERS. Esses definidores podem não existir mais.

    Meu problema apareceu quando alteramos o host curinga (%) para IP específico, tornando o database mais seguro. Infelizmente, existem algumas visualizações que ainda estão usando ‘user’ @ ‘%’, embora ‘user’ @ ‘172 ….’ esteja tecnicamente correto.

    Eu também tenho o problema semelhante, e mais tarde descobri que é porque eu mudei meu hostname (não localhost ).

    Portanto, resolvo isso especificando o --host=127.0.0.1

     mysql -p mydatabase --host=127.0.0.1 

    De acordo com o modo como você cria seu usuário, o MySQL interpreta uma maneira diferente. Por exemplo, se você criar um usuário assim:

     create user user01 identified by 'test01'; 

    O MySQL espera que você dê algum privilégio usando grant all on .* to user01;

    Não esqueça de flush privileges;

    Mas, se você criar um usuário assim (passando um endereço IP), terá que alterá-lo para:

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

    então, para dar alguns privilégios você tem que fazer isso:

     grant all on .* to user02@localhost; flush privileges; 

    No meu caso, o mesmo erro aconteceu porque eu estava tentando usar o mysql apenas digitando “mysql” em vez de “mysql -u root -p”

    conecte seu servidor a partir do mysqlworkbench e execute este comando-> ALTER USER ‘root’ @ ‘localhost’ IDENTIFICADO POR ‘yourpassword’;

    Certifique-se de que o usuário tenha uma input localhost na tabela de usuários. Esse foi o problema que eu estava tendo. EX:

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

    Basta adicionar o nome do computador em vez de ‘localhost’ no nome do host ou no endereço do host do MySQL.