MySQL limitations due to shared hosting

Overview

DreamHost Shared MySQL and MySQL VPS servers enforce specific MySQL limitations and provide a defined set of user privileges. This article lists the current limitations and the MySQL user privileges available on each server type.

The information in this article does NOT apply if you upgrade to a Dedicated server where the MySQL database is on the local machine.

What are the current MySQL limitations?

On DreamHost Shared MySQL and MySQL VPS servers, some of the SQL commands are not available for scripting nor in phpMyAdmin. Their functionality is available instead through the DreamHost control panel. These include:

  • CREATE DATABASE

  • GRANT

  • REVOKE

  • EVENT (not available on any server)

Additionally, some SQL objects are not available or supported on DreamHost Shared or DreamPress MySQL servers. These include:

  • Routines (including procedures and functions)

  • Triggers

These are available on MySQL VPS servers. They're also available on Dedicated servers with MySQL running locally.

A database is created using character set utf8mb3 and collation utf8mb3_general_ci.

Which MySQL user privileges are available?

The following table summarizes available DreamHost MySQL user privileges.

PrivilegeMeaningAvailability
ALL [PRIVILEGES]Grant all privileges at specified access level except GRANT OPTIONNO
ALTEREnable use of ALTER TABLEYES
ALTER ROUTINEEnable stored routines to be altered or dropped (Only if you are the user@host DEFINER that created the routine)YES
CREATEEnable database and table creation (Only tables can be created, Databases must be created in the control panel)YES
CREATE ROUTINEEnable stored routine creation (Cannot set DEFINER as non-root user, please remove DEFINER='user'@'host' combo to create routines)YES
CREATE TEMPORARY TABLESEnable use of CREATE TEMPORARY TABLEYES
CREATE USEREnable use of CREATE USER, DROP USER, RENAME USER, and REVOKE ALL PRIVILEGESNO
CREATE VIEWEnable views to be created or alteredYES
DELETEEnable use of DELETEYES
DROPEnable databases, tables, and views to be droppedYES
EVENTEnable use of events for the Event SchedulerNO
EXECUTEEnable the user to execute stored routinesYES
FILEEnable the user to cause the server to read or write files (unnecessary, if you get this error you are likely using "LOAD DATA INFILE" and should use "LOAD DATA LOCAL INFILE" instead)NO
GRANT OPTIONEnable privileges to be granted to or removed from other accountsNO
INDEXEnable indexes to be created or droppedYES
INSERTEnable use of INSERTYES
LOCK TABLESEnable use of LOCK TABLES on tables for which you have the SELECT privilegeYES
PROCESSEnable the user to see all processes with SHOW PROCESSLIST (shows only your specific MySQL user's processes)NO
REFERENCESNot implementedNO
RELOADEnable use of FLUSH operationsNO
REPLICATION CLIENTEnable the user to ask where master or slave servers areNO
REPLICATION SLAVEEnable replication slaves to read binary log events from the masterNO
SELECTEnable use of SELECTYES
SHOW DATABASESEnable SHOW DATABASES to show all databases (Only shows those databases you have access to)NO
SHOW VIEWEnable use of SHOW CREATE VIEWYES
SHUTDOWNEnable use of mysqladmin shutdownNO
SUPEREnable use of CHANGE MASTER TO, KILL, PURGE BINARY LOGS, and SET GLOBAL statements, the mysqladmin debug command; allows you to connect (once) even if max_connections is reachedNO
TRIGGERShared: Allow existing triggers to be used (creating of new triggers is not supported)
MySQL VPS: Enable triggers to be created or dropped (cannot set DEFINER as non-root user; remove DEFINER='user'@'host' combo to create trigger instead)
YES
UPDATEEnable use of UPDATEYES
USAGESynonym for “no privileges”NO

See also

Still not finding what you're looking for?