У меня есть экземпляр MariaDB 10.1 (Debian GNU / Linux 9 тестируемый / нестабильный). Он предназначен для использования в качестве сервера базы данных локальной сети и ничего больше. По причинам, выходящим за рамки этого вопроса, этот сервер не должен размещать что-либо еще, кроме самой базы данных, которая должна прослушивать IP-адрес сервера (10.7.33.102).
Если я подключаюсь к базе данных из оболочки сервера, все в порядке:
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
у пользователя, похоже, нет разрешения:
root@10.7.33.107:~# mysql -h 10.7.33.102 -p
Enter password:
[...]
MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)
Какую команду я должен передать серверу БД, чтобы root
(или другие пользователи) видят все базы данных и все таблицы в них?
Решение, которое я получил в #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...
.