
Eu tenho uma instância do MariaDB 10.1 (teste/instável do Debian GNU/Linux 9). Ele foi criado para ser um servidor de banco de dados de rede local e nada mais. Por motivos além do escopo desta questão, esse servidor não deve hospedar nada além do próprio banco de dados, que deve escutar o endereço IP do servidor (10.7.33.102).
Se eu me conectar ao banco de dados a partir do shell do servidor, tudo estará bem:
root@datangshan:~# mysql
[...]
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| drackmd |
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
Este drackmd
é o banco de dados que outros hosts precisam usar. Tentei permitir que root
o usuário se conectasse de outro host com o seguinte comando:
grant all privileges on `*`.`*` to 'root'@'10.7.33.107' identified by 'secret' with grant option;
Então, do servidor em 10.7.33.107, posso me conectar ao servidor de banco de dados, mas root
parece que o usuário não tem algum tipo de permissão:
[email protected]:~# mysql -h 10.7.33.102 -p
Enter password:
[...]
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
Qual comando devo emitir para o servidor de banco de dados para fazer root
(ou outros usuários) ver todos os bancos de dados e todas as tabelas neles?
Responder1
Solução que encontrei no #maria
canal no IRC:
drop user 'root'@'10.7.33.107';
drop user 'root'@'%';
flush privileges;
grant all on `*`.`*` to 'root'@'10.7.33.107' identified by 'secret' with grant option;
Observe a diferença: é um grant all on ...
em vez de um grant all PRIVILEGES on...
.