Я пытаюсь настроить ограниченный внешний доступ к MariaDB 10,3
Что я хочу
Пользователь может получить доступ только к виду из внешнего доступа, ноне может быть в состоянии подключиться как root, даже если у него есть пароль.
Начальная конфигурация
Используя стандартную forge конфигурацию, которую мы запускаемс тезисами пользователей:
$ mysql -u root -p
> use information_schema;
> select * from user_privileges;
Полный результат: https://pastebin.com/kNNVUjrz
TLDR;
Два пользователя root:
root
доступны из: [localhost
, 127.0.0.1
, ::1
, 51.99.999.101
*, %
] forge
доступный из: [51.99.999.101
*, %
]
Один странный пользователь:
debian-sys-maint
доступный из: [localhost
]
. * Это явно фальшивый публичный ip
Конфигурация, которую я хочу
root
доступно из: [localhost
, 127.0.0.1
, ::1
, 51.99.999.101
] forge
доступно из: [localhost
, 127.0.0.1
, ::1
, 51.99.999.101
] dummyuser
доступная форма: [%
]
Проблема
При удалении пользователя 'forge'@'%'
но держите 'forge'@'localhost'
, у пользователя (dummyuser
) больше нет привилегий.
ERROR 1045 (28000): Access denied for user 'dummyuser'@'%' (using password: YES)
Подробно о том, что я сделал
подключен через SSH к серверу
$ mysql -u forge -p
> create database mydb;
> create view mydb.v as select user();
> create user dummyuser identified by 'password';
> grant select on mydb.v to dummyuser;
> select * from information_schema.user_privileges where grantee like '%dummyuser%';
- GRANTEE:
'dummyuser'@'%'
- TABLE_CATALOG:
def
- PRIVILEGE_TYPE:
USAGE
- IS_GRANTABLE:
NO
Coчерез мой локальный ПК
$ mysql -u dummyuser -h 51.99.999.101 -p
> select * from mydb.v;
Возвращает то, что мы хотим: dummyuser@adsl-178-xx-xxx-123.adslplus.ch
Но теперь, когда я удаляю пользователя 'forge'@'%'
через SSH (с root на этот раз) :
Важное примечание: Выполнение этого шага перед созданием dummyuser не решило проблему.
$ mysql -u root -p
> drop user 'forge'@'%';
> create user 'forge'@'localhost' identified by 'passowrd';
> grant all privileges on *.* to 'forge'@'localhost' with grant option;
> flush privileges;
Здесь возникает проблема: Когда я вхожу с dummyuser
и попробуйте еще раз:
$ mysql -u dummyuser -h 51.99.999.101 -p
> select * from mydb.v;
ERROR 1045 (28000): Access denied for user 'dummyuser'@'%' (using password: YES)