Skip to content
Create Mysql users and manage privileges
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Tests/Units
build-tools/jenkins
.gitignore
CONTRIBUTING.md
DbUser.php
README.md
composer.json

README.md

MySQL User Account Management in PHP

Create Mysql users and manage privileges easily.

Scrutinizer Code Quality

Why?

This project makes easier the MySQL User Account Management in PHP and it avoids the use of raw SQL queries.

Installation

$ composer require shinbuntu/db-user

Usage

Instantiate the manager with PDO or Doctrine Connection

$dbUserManager = new DbUser($dbConnection);

Create a new user

$dbUserManager->createUser('test_username', '!super_secure_password$');

Drop a user

$dbUserManager->dropUser('test_username');

Test if user already exist

$dbUserManager->userExist('test_username');

Grant privileges to mysql user on all databases (don't forget to flush privileges)

$dbUserManager->grantPrivileges(
    'test_username',
    [
        DbUser::PRIVILEGE_CREATE_USER,
        DbUser::PRIVILEGE_CREATE,
        DbUser::PRIVILEGE_GRANT_OPTION,
        DbUser::PRIVILEGE_ALTER,
        DbUser::PRIVILEGE_FILE,
        DbUser::PRIVILEGE_RELOAD,
        DbUser::PRIVILEGE_SELECT,
        DbUser::PRIVILEGE_INSERT,
        DbUser::PRIVILEGE_UPDATE,
        DbUser::PRIVILEGE_DELETE,
    ]
);

Grant privileges to mysql user on specific database (don't forget to flush privileges)

$dbUserManager->grantPrivileges(
    'test_username',
    [
        DbUser::PRIVILEGE_SELECT,
        DbUser::PRIVILEGE_INSERT,
        DbUser::PRIVILEGE_UPDATE,
        DbUser::PRIVILEGE_DELETE,
    ],
    'test_database_name'
);

Grant privileges to mysql user on specific table (don't forget to flush privileges)

$dbUserManager->grantPrivileges(
    'test_username',
    [
        DbUser::PRIVILEGE_SELECT,
        DbUser::PRIVILEGE_INSERT,
        DbUser::PRIVILEGE_UPDATE,
        DbUser::PRIVILEGE_DELETE,
    ],
    'test_database_name',
    'test_table_name'
);

Revoke privileges to mysql user on all databases (don't forget to flush privileges)

$dbUserManager->revokePrivileges(
    'test_username',
    [
        DbUser::PRIVILEGE_CREATE_USER,
        DbUser::PRIVILEGE_CREATE,
        DbUser::PRIVILEGE_GRANT_OPTION,
        DbUser::PRIVILEGE_ALTER,
        DbUser::PRIVILEGE_FILE,
        DbUser::PRIVILEGE_RELOAD,
        DbUser::PRIVILEGE_SELECT,
        DbUser::PRIVILEGE_INSERT,
        DbUser::PRIVILEGE_UPDATE,
        DbUser::PRIVILEGE_DELETE,
    ]
);

Revoke privileges to mysql user on specific database (don't forget to flush privileges)

$dbUserManager->revokePrivileges(
    'test_username',
    [
        DbUser::PRIVILEGE_SELECT,
        DbUser::PRIVILEGE_INSERT,
        DbUser::PRIVILEGE_UPDATE,
        DbUser::PRIVILEGE_DELETE,
    ],
    'test_database_name'
);

Revoke privileges to mysql user on specific table (don't forget to flush privileges)

$dbUserManager->revokePrivileges(
    'test_username',
    [
        DbUser::PRIVILEGE_SELECT,
        DbUser::PRIVILEGE_INSERT,
        DbUser::PRIVILEGE_UPDATE,
        DbUser::PRIVILEGE_DELETE,
    ],
    'test_database_name',
    'test_table_name'
);

Flush privileges

$dbUserManager->flushPrivileges();

Contributing

See the CONTRIBUTING file.

License

The project is open-sourced software licensed under the MIT license.

You can’t perform that action at this time.