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

Научете за разрешенията на ниво таблица на MySQL

Много често е да видите изявление за предоставяне като следното, което дава достъп до всички таблици в дадена база данни.

GRANT SELECT, SHOW VIEW
ON mydatabase.*
TO myreaduser@myhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

Където mydatabase , myreaduser , myhoost и somepassword са подходящите променливи за вашата база данни. Обърнете внимание, че FLUSH PRIVILEGES командата нулира привилегиите на MySQLs и няма да можете да използвате новите потребителски разрешения, докато не бъде стартирана.

Такъв потребител ще може да чете и да осъществява достъп до всички таблици в база данни. За този пример ще използваме базата данни boatio, която има 3 таблици:boats , trips и users .

mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| boats            |
| trips            |
| users            |
+------------------+
3 rows in set (0.00 sec)

Ако искаме да създадем потребител, който има достъп само до trips таблица, ние просто заменяме заместващия знак (*), който представлява всички таблици, с конкретните таблици, които искате (в този случай:trips ).

GRANT SELECT, SHOW VIEW
ON boatio.trips
TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

Сега можем да влезем като нов потребител и да стартираме show tables, за да видим, че има достъп само до trips маса, а не другите две. Този нов потребител просто не знае, че другите таблици дори съществуват.

$ mysql -umyreaduser boatio -psomepassword
mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips            |
+------------------+
1 row in set (0.00 sec)

За да дадете на потребителя достъп до повече таблици, просто стартирайте отново същия GRANT израз с допълнителните имена на таблици. Например, следното ще предостави достъп до trips и users таблици, но не и boats .

GRANT SELECT, SHOW VIEW ON boatio.trips TO myreaduser@localhost IDENTIFIED BY 'somepassword';
GRANT SELECT, SHOW VIEW ON boatio.users TO myreaduser@localhost IDENTIFIED BY 'somepassword';
FLUSH PRIVILEGES;

И доказателството:потребителят вече има достъп до trips и users маси, но не и boats .

$ mysql -umyreaduser boatio -psomepassword

mysql> show tables;
+------------------+
| Tables_in_boatio |
+------------------+
| trips            |
| users            |
+------------------+
2 rows in set (0.00 sec)

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Първи стъпки с GearHost за разработка на база данни на MySQL

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

  3. Управление на потребителски акаунт, роли, разрешения, удостоверяване на PHP и MySQL -- Част 5

  4. Как да се свържете с MySQL с помощта на Microsoft .NET

  5. Често срещани въпроси и отговори за интервю за MySql за по-нови + опитни