O seguinte resultado do CURRENT_USER()
mysql> SELECT CURRENT_USER();
+----------------+
| CURRENT_USER() |
+----------------+
| @localhost |
+----------------+
1 row in set (0.00 sec)
diz que você está usando o banco de dados como usuário anônimo . Um banco de dados MySQL recém-instalado tem as seguintes entradas do usuário em sua tabela mysql.user:
mysql> SELECT user,host,password from mysql.user;
+------------------+-----------------+-------------------------------------------+
| user | host | password |
+------------------+-----------------+-------------------------------------------+
| root | localhost | *........................................ |
| root | xxxx | *........................................ |
| root | 127.0.0.1 | *........................................ |
| root | ::1 | *........................................ |
| | localhost | |
| | xxxxx | |
| debian-sys-maint | localhost | *........................................ |
+------------------+-----------------+-------------------------------------------+
7 rows in set (0.00 sec)
Existem algumas contas-raiz (protegidas por senha) e duas contas anônimas que permitem um logon a partir do host local (a entrada xxxxx é o nome do host da máquina).
Se houver uma entrada na tabela do usuário sem nome de usuário e senha, a seguinte regra será aplicada:
Se o valor do usuário estiver em branco, ele corresponderá a qualquer nome de usuário. Se o usuário a linha da tabela que corresponde a uma conexão de entrada tem um nome de usuário em branco, o usuário é considerado um usuário anônimo sem nome, não um usuário com o nome que o cliente realmente especificou. Isso significa que um nome de usuário em branco é usado para toda a verificação de acesso para o duração da conexão (ou seja, durante o estágio 2).
(veja os documentos do MySQL, "6.2.4. Controle de Acesso, Estágio 1: Verificação de conexão ")
Em geral, após instalar o MySQL, você deve tomar conhecimento da seguinte parte da documentação: " 2.11.2. Protegendo as contas iniciais do MySQL ".