MySQL Users & Permissions

MySQL provides a comprehensive user management and permission system that allows you to control access to databases and tables. Proper user management is crucial for database security and integrity.

Understanding MySQL Privilege System

Privilege Levels:
  • Global Level: All databases on server
  • Database Level: Specific database
  • Table Level: Specific table
  • Column Level: Specific columns
  • Routine Level: Stored procedures/functions
Authentication Methods:
  • Native Authentication (default)
  • Caching SHA-2
  • SHA-256 (MySQL 8.0+)
  • LDAP Authentication
  • PAM Authentication

User Management Basics

Creating Users

Basic User Creation

Viewing Users

List All Users

Modifying Users

Altering Users

Deleting Users

Removing Users

Granting Privileges

Common Privileges

PrivilegeDescription
ALL PRIVILEGESAll privileges except GRANT OPTION
SELECTRead data from tables
INSERTInsert new rows
UPDATEModify existing rows
DELETEDelete rows
CREATECreate databases/tables
DROPDrop databases/tables
ALTERModify table structure
INDEXCreate/drop indexes
EXECUTEExecute stored procedures
GRANT OPTIONGrant privileges to others

Grant Privilege Examples

Database Level Privileges
Table Level Privileges
Column Level Privileges
Routine Privileges
Global Privileges

Special Privileges

Administrative Privileges

Revoking Privileges

Revoke Examples

Role-Based Access Control (RBAC)

Creating and Managing Roles

Role Management (MySQL 8.0+)
Complex Role Structure

Connection Limits and Resource Management

User Resource Limits

SSL/TLS Connections

SSL Configuration

Password Policies

Password Management
Validate Password Component

Auditing and Monitoring

Audit User Activity

Monitoring User Actions

Privilege Auditing

Audit User Privileges

Security Best Practices

Critical Security Measures:
  • Always use strong passwords
  • Follow principle of least privilege
  • Regularly review and clean up unused accounts
  • Use SSL for remote connections
  • Implement password policies
  • Monitor failed login attempts
  • Keep MySQL updated

Production Security Checklist

Security Audit Script

Automated User Management

User Provisioning Script

Common Scenarios and Solutions

Scenario 1: Application Database User

Application User Setup

Scenario 2: Reporting User

Read-only Reporting User

Scenario 3: Backup User

Backup/Restore User

Troubleshooting Common Issues

Permission Issues

Conclusion

Effective user and permission management is crucial for MySQL database security and stability. By following the principle of least privilege, implementing strong authentication methods, and regularly auditing user access, you can maintain a secure and well-managed database environment.