O mysqld tem o péssimo hábito de rotear conexões TCP / IP DB via 127.0.0.1 porta 3306 para o arquivo socket.
Para ver isso, basta acessar o mysql e executar este comando:
mysql> SELECT USER(),CURRENT_USER();
A função USER()
informa como você tentou autenticar
A função CURRENT_USER()
informa como o mysqld permitiu que você autenticasse
Se você vir root@localhost
para CURRENT_USER()
, então o TCP / IP não está sendo usado.
@Khaled já mencionou isso:
mysql -h your_sever_ip_addr --protocol=tcp -p
Aqui está algo para você pesquisar
Execute este comando
SELECT CONCAT(user,'@',host) RootUser,password FROM mysql.user WHERE user='root';
Você já deve ter root@localhost
. Você também deve ter [email protected]
com a mesma senha que root@localhost
ou outra diferente, se quiser.
Se você não tem [email protected]
, veja como criar [email protected]
com a mesma senha que root@localhost
:
CREATE TABLE mysql.roothome LIKE mysql.user;
INSERT INTO mysql.roothome SELECT * FROM mysql.user
WHERE user='root' AND host='localhost';
UPDATE mysql.roothome SET host='127.0.0.1';
INSERT INTO mysql.user SELECT * FROM mysql.roothome;
DROP TABLE mysql.roothome;
FLUSH PRIVILEGES;
Veja como criar [email protected]
com uma senha diferente de root@localhost
:
CREATE TABLE mysql.roothome LIKE mysql.user;
INSERT INTO mysql.roothome SELECT * FROM mysql.user
WHERE user='root' AND host='localhost';
UPDATE mysql.roothome SET host='127.0.0.1',password=password('whateveryouwant');
INSERT INTO mysql.user SELECT * FROM mysql.roothome;
DROP TABLE mysql.roothome;
FLUSH PRIVILEGES;
Experimente!