What are the MySQL permissions tables, and what are the considerations for controlling MySQL permissions separately?
1, User: Record account number, password, global access information, etc., the permissions in the global level
1) *_priv: For MySQL server global permissions, assuming that an account has Delete_priv global permissions, it can be any table to delete data operations, which is very dangerous, all generally only superuser root has such permissions, No other ordinary user.
2) max_*: Resource Management column, used to specify the resource usage limit of the account, where:
max_questions: Maximum number of statements issued per hour
max_updates: Maximum number of modified class statements issued per hour
max_connections: Maximum number of connections per hour
max_user_connections: Maximum number of connections allowed
3) SSL-related columns:
Ssl_type,ssl_cipher,x509_isuser, X509_subject
2, DB: Record the operation rights of each account on each database
*_priv: Permissions that apply to a database
3. Tables_priv: Table-level permissions
Column_priv is strange, because it is supposed that tables_priv only show table-level permissions, column-level permissions should be displayed in the Columns_priv. Later checked the data to know, originally this is to improve the performance of the permission check, imagine, when the permission check, if found Tables_priv. Column_priv is empty, there is no need to check the Columns_priv table, this situation in reality is often accounted for the majority.
4. Columns_priv: Column-level permissions
5. Procs_priv: Permissions for Stored procedures and functions
6, Proxies_priv: Record the permissions of the agent user
7, the host permission table: With the DB permission table on a given host database-level operation permissions for more granular control. This permission table is not affected by the grant and REVOKE statements
Parse MySQL permissions table