One of the reasons MySQL is so popular is that it runs on so many platforms. Whether you run Windows, Mac OSX, Linux, OpenSolaris, or some other platform, there is likely a matching version of MySQL. Because each of these popular platforms is unique, so are the installation procedures for them. In this section, we provide links to tutorials that details how to install MySQL on your platform of choice.
MySQL is a multithreaded, multi-user, SQL Database Management System
* A broad subset of ANSI SQL 99, as well as extensions
* Cross-platform support
* Stored procedures
* updatable Views
* True VARCHAR support
* Strict mode
* X/Open XA distributed transaction processing (DTP) support; two phase commit as part of this, using Oracle's InnoDB engine
* Independent storage engines (MyISAM for read speed, InnoDB for transactions and referential integrity, Archive for storing historical data in little space)
* Transactions with the InnoDB, BDB and Cluster storage engines; savepoints with InnoDB
* SSL support
* Query caching
* Sub-SELECTs (i.e. nested SELECTs)
* Replication with one master per slave, many slaves per master, no automatic support for multiple masters per slave.
* Full-text indexing and searching using MyISAM engine
* Embedded database library
* Full Unicode support
* ACID compliance using the InnoDB, BDB and Cluster engines
* Shared-nothing clustering through MySQL Cluster
Changelog for this release:
Incompatible Change: When used for an existing MySQL account, the GRANT statement could produce unexpected reults if it included an IDENTIFIED WITH clause that named an authentication plug differing from the plugin named in the corresponding mysql.user table row.
Because IDENTIFIED WITH is intended for GRANT statements that create a new user, it is now prohibited if the named account already exists.
Important Change; Replication: When the server was running with --binlog-ignore-db and SELECT DATABASE() returned NULL (that is, there was no currently selected database), statements using fully qualified table names in dbname.tblname format were not written to the binary log. This was because the lack of a currently selected database in such cases was treated as a match for any possible ignore option rather than for no such option; this meant that these statements were always ignored.
Now, if there is no current database, a statement using fully qualified table names is always written to the binary log.
InnoDB; Partitioning: Joins involving partitioned InnoDB tables having one or more BLOB columns were not always handled correctly. The BLOB column or columns were not required to be join columns, or otherwise to be named or referenced in the statement containing the join, for this issue to occur.
InnoDB: In debug builds, an online ALTER TABLE operation that performed a full table copy would raise an assertion. The assertion was due to a race condition that would occur during BLOB retrieval, when applying the table modification log to any log block except for the very last one. This fix modifies row_log_table_apply_convert_mrec() to ensure that an index B-tree lock is acquired to protect the access to log->blobs and the BLOB page.
InnoDB: When the function trx_rollback_or_clean_recovered() rolls back or cleans up transactions during a crash recovery, it removes the trx objects from the trx_sys list without freeing up the memory used by those objects. To prevent a memory leak, this fix adds trx_free_for_background() calls to trx_rollback_resurrected(), the function that removes the trx objects.
InnoDB: A missing comma in SHOW STATUS output would break MySQL Enterprise Monitor parsing.
InnoDB: After a clean shutdown, InnoDB does not check .ibd file headers at startup. As a result, in a crash recovery scenario, InnoDB could load a corrupted tablespace file. This fix implements consistency and status checks to avoid loading corrupted files.
InnoDB: A memory leak would occur in dict_check_tablespaces_and_store_max_id() when space_id is equal to zero.