Estou configurando um pequeno servidor local de desenvolvimento (é uma VM rodando CentOS 7) e por isso não adicionei nenhuma senha ao MySQL após rodar o comando: mysql_secure_installation
. Agora eu preciso me conectar do host através do MySQL Administrator, mas não posso porque o usuário root
não tem permissão para se conectar do endereço IP do host, então vou mudar isso dando root
todos os privilégios e o host.
Isso é o que eu fiz até agora:
$ mysql -uroot -p
Enter password: [here is just ENTER because root hasn't a password]
Server version: 10.1.18-MariaDB MariaDB Server
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.3.%' WITH GRANT OPTION;
ERROR 1133 (28000): Can't find any matching row in the user table
Eu encontrei esse erro, então fiz algumas pesquisas no Google e encontrei um monte de links, então escolhi alguns deles como este e tentei:
MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.3.%' WITH GRANT OPTION;
ERROR 1133 (28000): Can't find any matching row in the user table
Mas ainda não está funcionando, é uma restrição e eu não estou ciente? é uma configuração no my.cnf
arquivo? é um problema na consulta SQL? Qualquer ajuda?
"Se NO_AUTO_CREATE_USER SQL_MODE for definido, os usuários só poderão ser criados com uma instrução CREATE USER. Nesse caso, GRANT produzirá um erro quando o usuário especificado não existir." -- https://mariadb.com/kb/en/mariadb/grant/
Se for esse o caso, então a solução é provavelmente:
"Can't find any matching row..." significa que não há nenhuma linha com user ='root' e host='192.168.3.%'. Você estava entrando com user='root' e host='localhost' (ou algo assim).