In MySQL, users log in with a user name and password (the login also depends on their client computer's name or IP address which can be restricted). Each user account has a set of permissions which are set up to offer:
a) Global privileges over all databases managed by the current MySQL instance PLUS
b) Privileges over specific database(s) PLUS
c) Privileges over specific table(s) PLUS
d) Privileges over specific columns.
At the Global level, privileges range form "select_priv" which allows for data to be read (select commands) through to "shutdown_priv" which allows the user to shut down the MySQL service. Many of these are inappropriate "per database", "per table" or "Per column", so that although there are over 20 different privileges at a global level, there are only 4 at a column level.
Privileges are additive - in other words, a user has everything offered to him at the global level and then ADDS anything at lower levels.
On a typical ISP system, each account holder is given NO global rights and FULL rights over the database that bears his user name, or over all databases that start with his user name.
(written 2005-12-20, updated 2006-06-09)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
S161 - Data Access and Security in MySQL [192] Current MySQL and PHP paths and upgrades - (2005-01-28)
[193] The wrong MySQL - (2005-01-29)
[401] What is an SQL injection attack? - (2005-08-02)
[647] Checking for MySQL errors - (2006-03-15)
[947] What is an SQL injection attack? - (2006-11-27)
[1131] MySQL - Password security (authentication protocol) - (2007-04-02)
[2204] Images in a database? How big is a database? (MySQL) - (2009-05-28)
[2263] Mysqldump fails as a cron job - a work around - (2009-06-30)
[2647] Removing duplicates from a MySQL table - (2010-02-22)
[3270] SQL - Data v Metadata, and the various stages of data selection - (2011-04-29)
[4390] Checking MySQL database backups have worked (not failed) - (2015-01-10)
[4406] Fixing damaged MySQL tables - Error 1712 and Error 2013 - (2015-01-25)
[4481] Extracting data from backups to restore selected rows from MySQL tables - (2015-05-01)
[4491] Web Server Admin - some of those things that happen, and solutions - (2015-05-10)
[4493] Forgotten / lost MySQL root password - (2015-05-16)
S153 - Sourcing, Running and Configuring MySQL [334] Symbolic links and hard links - (2005-06-02)
[489] Which MySQL server am I using? - (2005-11-07)
[515] MySQL - an FAQ - (2005-12-03)
[591] Key facts - SQL and MySQL - (2006-02-04)
[907] Browser -> httpd -> Tomcat -> MySQL. Restarting. - (2006-10-28)
[1095] Apache httpd , browser, MySQL and MySQL client downloads - (2007-02-28)
[1123] mysqldump and mysqlrestore - (2007-03-30)
[1689] Some sideways thoughts on the news - (2008-06-27)
[1731] Apache httpd, MySQL, PHP - installation procedure - (2008-08-01)
[1771] More HowTo diagrams - MySQL, Tomcat and Java - (2008-08-24)
[1935] Summary of MySQL installation on a Linux system - (2008-12-11)
[2085] MySQL - licensing issues, even with using the name - (2009-03-16)
[2209] Monitoring and Tuning your MySQL installation - (2009-05-31)
[2426] Which version of MySQL am I running? - (2009-09-26)
[2444] Potted MySQL installation - (2009-10-09)
[2445] Securing MySQL on a production server - (2009-10-09)
[2458] Cant connect to local MySQL server through socket /tmp/mysql.sock - (2009-10-17)
[4487] Starting MySQL. ERROR! The server quit without updating PID file - how we fixed it. - (2015-05-06)
Some other Articles
rich and famousA company we can work withDaily Image SantafiedCancellations and penaltiesMySQL permissions and privilegesDesign - one name, one actionBigger Box CampaignCopyright - how much can I legally copy?Packages in packages in PerlPerl course during the week, getting married at the weekend