我有一个 MariaDB 10.1 实例(Debian GNU/Linux 9 测试版/不稳定版)。它只是一个本地网络数据库服务器,没有其他用途。出于超出此问题范围的原因,该服务器除了数据库本身外不得承载任何其他内容,数据库本身必须监听服务器 IP 地址(10.7.33.102)。
如果我从服务器 shell 连接到数据库,一切正常:
root@datangshan:~# mysql
[...]
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| drackmd |
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
这drackmd
是其他主机需要使用的数据库。我尝试root
使用以下命令让用户从另一台主机进行连接:
grant all privileges on `*`.`*` to 'root'@'10.7.33.107' identified by 'secret' with grant option;
然后,从 10.7.33.107 的服务器,我可以连接到数据库服务器,但用户root
似乎缺少某种权限:
[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)
我应该向数据库服务器发出什么命令才能让root
(或其他用户)看到所有数据库及其中的所有表?
答案1
我在#maria
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;
请注意区别:它是一个grant all on ...
而不是一个grant all PRIVILEGES on...
。