Как предоставить кому-то доступ только к некоторым таблицам MySQL, если я не могу создать нового пользователя MySQL?

Я ищу лучшее решение из следующего:

  1. Мне нужно предоставить кому-то доступ к одной (из многих) конкретной базе данных на моем сервере MySQL через PhpMyAdmin или аналогичный инструмент.

  2. Мне не разрешено создавать новую учетную запись пользователя MySQL.

  3. Поэтому я думаю о создании скрытого имени пользователя и пароля (учетные данные могут храниться в какой-то таблице или даже непосредственно в PHP где-то рядом с PMA), с помощью которых мой кто-нибудь мог бы войти в PMA.

  4. PMA будет использовать надежно сохраненные реальные имя пользователя и пароль для подключения к моему серверу MySQL. Но мой кто-то никогда не увидит фактическое имя пользователя и пароль базы данных. Он будет видеть и иметь возможность редактировать только таблицы в одной указанной базе данных на моем сервере.

Это как-то достижимо? Благодарю вас!


person user1763581    schedule 08.03.2018    source источник
comment
Существует ли уже учетная запись пользователя с ограниченным доступом, который вам нужен? Если нет, то как шаг 4 решит проблему? Он будет иметь доступ ко всем таблицам, к которым может получить доступ сохраненное имя пользователя.   -  person Barmar    schedule 08.03.2018
comment
И если есть такая учетная запись, вы можете просто дать ему этот логин и пароль.   -  person Barmar    schedule 08.03.2018
comment
Администраторы баз данных, вероятно, лучше подходят для этого вопроса.   -  person Barmar    schedule 08.03.2018
comment
Я согласен с @Barmar - это не связано с кодом. Это слишком широко для этой области сети.   -  person Funk Forty Niner    schedule 08.03.2018
comment
Бармар: Нет такого пользователя. Существует только одно имя пользователя MySQL с доступом ко всему, и мне нужно, чтобы мой новый пользователь видел только одну из многих баз данных на сервере MySQL. У меня нет и не будет права создавать новое имя пользователя MySQL.   -  person user1763581    schedule 10.03.2018


Ответы (2)


PMA имеет конфигурацию для этого.

$cfg['Servers'][$i]['only_db']

Читайте об этом в документации: https://docs.phpmyadmin.net/en/latest/config.html

Но это не ограничивает привилегии пользователя. Это только заставляет пользовательский интерфейс показывать пользователю ограниченное подмножество баз данных. Если они знают имена некоторых других баз данных (или могут запросить их из INFORMATION_SCHEMA.SCHEMATA), они все равно могут получить доступ к этим базам данных.

Если вы хотите применить привилегии только к нескольким базам данных, вам придется создать отдельного пользователя MySQL и ограничить его привилегии с помощью ПРЕДПОЛАГАЕТ.


Повторите ваши комментарии:

Похоже, вам нужно сохранить учетные данные MySQL в файле конфигурации PMA (и установить $cfg['Servers'][$i]['auth_type'] в «config»). Затем вы можете использовать HTTP-аутентификацию Apache, чтобы ограничить доступ к вашему сайту PMA (или каталогу), и вы можете создать несколько учетных данных пользователя на уровне Apache.

person Bill Karwin    schedule 08.03.2018
comment
Спасибо, этого может быть достаточно для того, что мне нужно достичь. Проверю и напишу сюда результат. :) - person user1763581; 10.03.2018
comment
Нет, я понял, что на самом деле этого будет недостаточно. Я не могу дать моему новому пользователю настоящее имя пользователя и пароль для MySQL. Мне нужно будет создать что-то вроде отдельного имени пользователя и пароля, через которые мой новый пользователь будет входить в phpMyAdmin. И тогда сам phpMyAdmin будет использовать настоящее имя пользователя и пароль MySQL для подключения к серверу MySQL, но он покажет моему пользователю только одну указанную базу данных из многих, которые есть на сервере. - person user1763581; 10.03.2018

phpMyAdmin не предназначен для такой работы; он использует структуру аутентификации MySQL без каких-либо дополнительных ограничений входа в систему.

Одну часть ваших требований (не сообщая фактическое имя пользователя и пароль) можно решить с помощью конфигурации или метод аутентификации при входе, но это по-прежнему не накладывает никаких дополнительных ограничений на пользователя после входа в систему, поэтому у него будет такой же доступ, как и у вашей учетной записи пользователя.

К сожалению для вас, если вы не сможете создать другую учетную запись пользователя, будет сложно поделиться учетной записью, не предоставив им такой же уровень доступа.

person Isaac Bennetch    schedule 12.03.2018