Por que não consigo logar no MySQL com um novo usuário que tenha permissões no banco de dados?

1

Eu criei um usuário no MySQL, mas não consigo fazer login nele.

MariaDB [(none)]> create user fe_joomla;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> grant all on fe_joomla.* to fe_joomla;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show grants for fe_joomla;
+----------------------------------------------------------+
| Grants for fe_joomla@%                                   |
+----------------------------------------------------------+
| GRANT USAGE ON *.* TO 'fe_joomla'@'%'                    |
| GRANT ALL PRIVILEGES ON 'fe_joomla'.* TO 'fe_joomla'@'%' |
+----------------------------------------------------------+
2 rows in set (0.00 sec)

$ mysql -u fe_joomla fe_joomla
ERROR 1044 (42000): Access denied for user ''@'localhost' to database 'fe_joomla'

Eu segui este guia. link

    
por Chloe 26.11.2017 / 05:57

3 respostas

1

Versões mais antigas do MySQL tinham algumas contas de teste com nomes de usuários vazios que eram criados por padrão. Eles eram principalmente inofensivos, mas muito problemáticos. Houve um script chamado mysql_secure_installation que limpou isso, e parece que não foi executado quando o sistema foi configurado.

Execute esta consulta para confirmar:

mysql> SELECT * FROM mysql.user WHERE user = '';

Observe que '' é dois caracteres de aspas simples ' não é uma única aspa dupla " .

Depois de garantir que você tenha um backup completo por segurança, remova essas contas de teste. (Esta deve ser uma operação perfeitamente segura, mas ter uma cópia de segurança é uma boa prática.)

mysql> DELETE FROM mysql.user WHERE user = '';
mysql> FLUSH PRIVILEGES;

O problema com essas contas de teste é que há algum comportamento mágico quando se trata de nomes de usuário correspondentes, e um nome de usuário vazio tem um significado especial. Foi um recurso ruim que provavelmente foi adicionado originalmente para facilitar a introdução.

Depois disso, o novo usuário deve funcionar corretamente ... mas observe que você não deve criar contas sem senhas.

    
por 26.11.2017 / 18:18
0

Parece que você não inseriu o comando "flush privileges" para ativar o novo usuário sem reiniciar.

    
por 26.11.2017 / 07:09
0

Eu descartei o usuário fe_joomla e recriou o usuário como fe_joomla@localhost e concedeu privilégios a fe_joomla@localhost e funcionou. Eu poderia usar mysql -u fe_joomla fe_joomla agora.

create user fe_joomla@localhost;
grant all on fe_joomla.* to fe_joomla@localhost;

A resposta de Michael provavelmente funcionaria também.

    
por 26.11.2017 / 20:25