# Mysql Api cpanel features - Create Database mysql -u root -e "CREATE DATABASE dbname;" - Delete Database mysql -u root -e "DROP DATABASE dbname;" - List Databases mysql -u root -e "SHOW DATABASES;" - Add New User mysql -u root -e "CREATE USER 'userxyz123'@'%' IDENTIFIED BY 'password123';" - Add User To Database mysql -u root -e "GRANT ALL PRIVILEGES ON [dbname].[tablename] TO 'userxyz123'@'%';" - List Users mysql -u root -e "SELECT user FROM mysql.user;" - Change User Password mysql -u root -e "ALTER USER 'userxyz123'@'%' IDENTIFIED BY 'password1234';" - Delete User mysql -u root -e "DROP USER IF EXISTS 'username'@'hostname';" - Rename Database - Dump - Create New - Copy From Dump - Set Previleges For User (Create,Delete,Alter......) (use GRANT ....) - Remote Access From Hosts - Use '%' - Repair Database (no idea) ## Formats ```go= useDbFormat = "USE `?`" createUserFormat = "CREATE USER `?`@`?` IDENTIFIED BY ?" updateUserPasswordFormat = "ALTER USER `?`@`?` IDENTIFIED BY ?" dropUserFormat = "DROP USER IF EXISTS `?`@`?`" renameUserFormat = "RENAME USER `?`@`?` TO `?`@`?`" repairTableFormat = "REPAIR TABLE `?`" createDbFormat = "CREATE DATABASE `?`" dropDbFormat = "DROP DATABASE `?`" grantFormat = "GRANT ? ON *.* TO `?`@`?`;" revokeFormat = "REVOKE ? ON *.* TO `?`@`?`;" ``` ## Progress ### Modify Db - [x] Create (test covered) - [x] Delete (test covered) - [x] Repair (skipping test) - [ ] Rename (skipping for now) ### Modify User - [x] Create (test covered) - [x] Delete (test covered) - [x] Rename (test covered) - [x] Update Password (test covered) - [x] Assign User To Db (test covered) - [x] Enable Permission (test covered) - [x] Disable Permission (test covered) ### Issues - Rename DB Name [skip for now] - Enable/Disable Permission - The connection user need to have `Grant Option` permission ### Changes Needed ```shell= Create User : "CREATE USER `?`@`?` IDENTIFIED BY ?" additional fields needed : hostname , password hostname if remote '%', if local 'localhost' or if Ip 'ip' Update User : "ALTER USER `?`@`?` IDENTIFIED BY ?" additional fields needed : hostname and password Delete User : "DROP USER IF EXISTS `?`@`?`" additional fields needed : hostname Rename User : "RENAME USER `?`@`?` TO `?`@`?`" additional fields needed : hostname Enable Permissions : "GRANT ? ON *.* TO `?`@`?`;" additional fields needed : hostname Disable Permissions : "REVOKE ? ON *.* FROM `?`@`?`;" additional fields needed : hostname Assign User To Db : "GRANT ALL PRIVILEGES ON `?`.* TO `?`@`?`" additional fields needed : hostname Also rather than just assigning, need to add with permissions ```