Mysql
 sql >> база данни >  >> RDS >> Mysql

Предоставяне на привилегии на няколко таблици със специфичен префикс

Предварителна бележка:Това не е моят отговор. Намерих го на http://lists.mysql.com/mysql/202610 и са копирали и поставили за простота кредит на Стивън Кук

Можете да използвате изгледа INFORMATION_SCHEMA.TABLES, за да генерирате GRANT изразите вместо вас. Напишете заявка в следните редове:

SELECT   CONCAT('GRANT SELECT ON test.', TABLE_NAME, ' to ''foouser'';')
FROM     INFORMATION_SCHEMA.TABLES
WHERE    TABLE_SCHEMA = 'test'
      AND TABLE_NAME LIKE 'foo_%'

След това го стартирайте, копирайте резултатите и изпълнете тези резултати като заявка или скрипт. Разбира се, можете да се побъркате колкото искате с това, например, ако направите това за много потребители, може би напишете съхранена процедура, която приема параметър за потребителското име и следователно може да се използва като инструмент, когато имате нужда от него.

Това не е синтаксис, който сте поискали, но е хубав трик, който работи.

--

Заменете схемата на таблицата 'test' с името на вашата база данни. foo_% може да бъде заменен с подходящия префикс_%

Опитах това сам и се получи страхотно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. iOS – Най-добри практики за синхронизиране на основни данни и сървърни бази данни

  2. Как да показвам редовете като колони в MySQL?

  3. Разбиране на нормализиране и дубликати - Предполагам, че не - Добавяне на идентификатори на изпълнител и заглавие

  4. TIMESTAMPDIFF() Примери – MySQL

  5. Преобразуване на низ във формат MySQL timestamp в php