در این راهنما یک روش مفید برای اعطای کاربر به کلیه امتیازات در کلیه بانکهای اطلاعاتی به جز یک جدول خاص بحث شده است.
MySQL از اعطای کلیه امتیازات به کلیه بانکهای اطلاعاتی برای کاربر پشتیبانی نمی کند ، و سپس همه امتیازات یک جدول خاص را از آن کاربر لغو می کند. [19659003] این نتیجه با خطا بیان می کند که هیچ قانونی برای جدول خاصی وجود ندارد.
به عنوان مثال:
mysql> CREATE DATABASE testdb؛ پرس و جو خوب ، 1 ردیف تحت تأثیر قرار گرفت (0.80 ثانیه) mysql> ایجاد جدول testdb.testtable (من int)؛ پرس و جو خوب ، 0 ردیف تحت تأثیر قرار گرفت (0.99 ثانیه) mysql> ایجاد کاربر "آزمون" @ "٪" شناسایی شده توسط "testpass"؛ پرس و جو خوب ، 0 ردیف تحت تأثیر قرار گرفته است (0.12 ثانیه)
mysql> به همه کمک کنید *. * به 'تست' @ '٪'؛ پرس و جو خوب ، 0 ردیف تحت تأثیر قرار گرفت (0.18 ثانیه)
mysql> نمایش کمک های مالی برای 'test' @ '٪' G ****************************** 1. ردیف ****************** ******* کمک هزینه برای آزمون @٪: GRANT SELECT ، INSERT ، UPDATE ، DELETE ، CREATE ، DROP ، RELOAD ، SHUTDOWN ، PROCESS ، FILE ، REFERENCES ، INDEX ، ALTER ، SHOW DATABASES ، SUPER ، ایجاد TEMPORARY TABLE، TABLELE ها REPLICATION CLIENT ، CREATE VIEW ، SHOW VIEW ، CREATE ROUTINE ، Alter روتین ، ایجاد کاربر ، رویداد ، محرک ، ایجاد جدول ، ایجاد نقش ، ایجاد نقش و سقوط روی *. * برای آزمایش "@"٪ ****************************** 2. ردیف ********************* ******* کمک های مالی برای آزمون @٪: BACKUP_ADMIN GRANT، BINLOG_ADMIN، CONNECTION_ADMIN، ENCRYPTION_KEY_ADMIN، GROUP_REPLICATION_ADMIN، PERSIST_RO_VARIABLES_ADMIN، REPLICATION_SLAVE_ADMIN، RESOURCE_GROUP_ADMIN، RESOURCE_GROUP_USER، ROLE_ADMIN، SET_USER_ID، SYSTEM_VARIABLES_ADMIN، XA_RECOVER_ADMIN ON * * به 'امتحان' @ '٪'. 2 ردیف در مجموعه (0.00 ثانیه)
mysql> REVOKE ALL ON testdb.testtable از "آزمون" @ "٪"؛ ERROR 1147 (42000): هیچ گونه اعطای مشخصی برای "آزمایش" کاربر در میزبان "٪" در جدول "testtable"
وجود ندارد. برای دستیابی به این هدف ، شما باید برای هر بانک اطلاعاتی / جدول حقوق جداگانه اعطا کنید. یک راه مناسب برای اجرای SELECT CONCAT برای data_schema.tables ایجاد اسکریپت SQL برای دستورات تهیه و سپس اجرای آن از طریق مشتری mysql است.
به عنوان مثال:
mysql> REVOKE ALL PRIVILEGES ON *. * FROM 'test' @ '٪ '؛
mysql> SELECT CONCAT ("به همه حقوق خصوصی بپیوندید" ، Table_schema ، ". *" ، "برای آزمایش" @'٪ '؛ ") به خارج" / var / lib / mysql-files / mytest1. sql "
از information_schema.TABLES
Table_schema <> "testdb"
GROUP BY table_schema؛
mysql> SOURCE /var/lib/mysql-files/mytest1.sql؛
mysql> SELECT CONCAT ("ALL PRIVILEGES ON" ، جدول_schema ، "" "، جدول_name ،" برای آزمایش "@ '٪" ؛ ") به خارج از آزمون" /var/lib/mysql-files/mytest2.sql "
از information_schema.TABLES
WHERE table_schema = "testdb" و جدول_name <> "جدول آزمون"؛