mirror of https://github.com/MariaDB/server
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							8243 lines
						
					
					
						
							366 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							8243 lines
						
					
					
						
							366 KiB
						
					
					
				
								
							 | 
						|
								Chapter 2. Installing and Upgrading MySQL
							 | 
						|
								
							 | 
						|
								   This chapter describes how to obtain and install MySQL. A summary
							 | 
						|
								   of the procedure follows and later sections provide the details.
							 | 
						|
								   If you plan to upgrade an existing version of MySQL to a newer
							 | 
						|
								   version rather than install MySQL for the first time, see Section
							 | 
						|
								   2.4.1, "Upgrading MySQL," for information about upgrade procedures
							 | 
						|
								   and about issues that you should consider before upgrading.
							 | 
						|
								
							 | 
						|
								   If you are interested in migrating to MySQL from another database
							 | 
						|
								   system, you may wish to read Section A.8, "MySQL 5.1 FAQ ---
							 | 
						|
								   Migration," which contains answers to some common questions
							 | 
						|
								   concerning migration issues.
							 | 
						|
								
							 | 
						|
								    1. Determine whether MySQL runs and is supported on your
							 | 
						|
								       platform.
							 | 
						|
								       Please note that not all platforms are equally suitable for
							 | 
						|
								       running MySQL, and that not all platforms on which MySQL is
							 | 
						|
								       known to run are officially supported by Oracle Corporation:
							 | 
						|
								
							 | 
						|
								    2. Choose which distribution to install.
							 | 
						|
								       Several versions of MySQL are available, and most are
							 | 
						|
								       available in several distribution formats. You can choose from
							 | 
						|
								       pre-packaged distributions containing binary (precompiled)
							 | 
						|
								       programs or source code. When in doubt, use a binary
							 | 
						|
								       distribution. We also provide public access to our current
							 | 
						|
								       source tree for those who want to see our most recent
							 | 
						|
								       developments and help us test new code. To determine which
							 | 
						|
								       version and type of distribution you should use, see Section
							 | 
						|
								       2.1.2, "Choosing Which MySQL Distribution to Install."
							 | 
						|
								
							 | 
						|
								    3. Download the distribution that you want to install.
							 | 
						|
								       For instructions, see Section 2.1.3, "How to Get MySQL." To
							 | 
						|
								       verify the integrity of the distribution, use the instructions
							 | 
						|
								       in Section 2.1.4, "Verifying Package Integrity Using MD5
							 | 
						|
								       Checksums or GnuPG."
							 | 
						|
								
							 | 
						|
								    4. Install the distribution.
							 | 
						|
								       To install MySQL from a binary distribution, use the
							 | 
						|
								       instructions in Section 2.2, "Installing MySQL from Generic
							 | 
						|
								       Binaries on Unix/Linux."
							 | 
						|
								       To install MySQL from a source distribution or from the
							 | 
						|
								       current development source tree, use the instructions in
							 | 
						|
								       Section 2.3, "MySQL Installation Using a Source Distribution."
							 | 
						|
								
							 | 
						|
								    5. Perform any necessary post-installation setup.
							 | 
						|
								       After installing MySQL, read Section 2.13, "Post-Installation
							 | 
						|
								       Setup and Testing." This section contains important
							 | 
						|
								       information about making sure the MySQL server is working
							 | 
						|
								       properly. It also describes how to secure the initial MySQL
							 | 
						|
								       user accounts, which have no passwords until you assign
							 | 
						|
								       passwords. The section applies whether you install MySQL using
							 | 
						|
								       a binary or source distribution.
							 | 
						|
								
							 | 
						|
								    6. If you want to run the MySQL benchmark scripts, Perl support
							 | 
						|
								       for MySQL must be available. See Section 2.15, "Perl
							 | 
						|
								       Installation Notes."
							 | 
						|
								
							 | 
						|
								2.1. General Installation Guidance
							 | 
						|
								
							 | 
						|
								   The immediately following sections contain the information
							 | 
						|
								   necessary to choose, download, and verify your distribution. The
							 | 
						|
								   instructions in later sections of the chapter describe how to
							 | 
						|
								   install the distribution that you choose. For binary
							 | 
						|
								   distributions, see the instructions at Section 2.2, "Installing
							 | 
						|
								   MySQL from Generic Binaries on Unix/Linux" or the corresponding
							 | 
						|
								   section for your platform if available. To build MySQL from
							 | 
						|
								   source, use the instructions in Section 2.3, "MySQL Installation
							 | 
						|
								   Using a Source Distribution."
							 | 
						|
								
							 | 
						|
								2.1.1. Operating Systems Supported by MySQL Community Server
							 | 
						|
								
							 | 
						|
								   This section lists the operating systems on which MySQL Community
							 | 
						|
								   Server is known to run.
							 | 
						|
								
							 | 
						|
								Important
							 | 
						|
								
							 | 
						|
								   Oracle Corporation does not necessarily provide official support
							 | 
						|
								   for all the platforms listed in this section. For information
							 | 
						|
								   about those platforms that are officially supported, see
							 | 
						|
								   http://www.mysql.com/support/supportedplatforms.html on the MySQL
							 | 
						|
								   Web site.
							 | 
						|
								
							 | 
						|
								   We use GNU Autoconf, so it is possible to port MySQL to all modern
							 | 
						|
								   systems that have a C++ compiler and a working implementation of
							 | 
						|
								   POSIX threads. (Thread support is needed for the server. To
							 | 
						|
								   compile only the client code, the only requirement is a C++
							 | 
						|
								   compiler.)
							 | 
						|
								
							 | 
						|
								   MySQL has been reported to compile successfully on the following
							 | 
						|
								   combinations of operating system and thread package.
							 | 
						|
								
							 | 
						|
								     * AIX 4.x, 5.x with native threads. See Section 2.12,
							 | 
						|
								       "Installing MySQL on AIX." AIX 5.3 should be upgraded to
							 | 
						|
								       technology level 7 (5300-07).
							 | 
						|
								
							 | 
						|
								     * FreeBSD 5.x and up with native threads. See Section 2.10,
							 | 
						|
								       "Installing MySQL on FreeBSD."
							 | 
						|
								
							 | 
						|
								     * HP-UX 11.x with the native threads. See Section 2.11,
							 | 
						|
								       "Installing MySQL on HP-UX."
							 | 
						|
								
							 | 
						|
								     * Linux, builds on all fairly recent Linux distributions with
							 | 
						|
								       glibc 2.3. See Section 2.6, "Installing MySQL on Linux."
							 | 
						|
								
							 | 
						|
								     * Mac OS X. See Section 2.7, "Installing MySQL on Mac OS X."
							 | 
						|
								
							 | 
						|
								     * Solaris 2.8 on SPARC and x86, including support for native
							 | 
						|
								       threads. See Section 2.8.1, "Solaris Notes."
							 | 
						|
								
							 | 
						|
								     * Windows 2000, Windows XP, Windows Vista, Windows Server 2003,
							 | 
						|
								       and Windows Server 2008. See Section 2.5, "Installing MySQL on
							 | 
						|
								       Windows."
							 | 
						|
								
							 | 
						|
								   MySQL has also been known to run on other systems in the past. See
							 | 
						|
								   Section 2.1, "General Installation Guidance." Some porting effort
							 | 
						|
								   might be required for current versions of MySQL on these systems.
							 | 
						|
								
							 | 
						|
								   Not all platforms are equally well-suited for running MySQL. How
							 | 
						|
								   well a certain platform is suited for a high-load mission-critical
							 | 
						|
								   MySQL server is determined by the following factors:
							 | 
						|
								
							 | 
						|
								     * General stability of the thread library. A platform may have
							 | 
						|
								       an excellent reputation otherwise, but MySQL is only as stable
							 | 
						|
								       as the thread library it calls, even if everything else is
							 | 
						|
								       perfect.
							 | 
						|
								
							 | 
						|
								     * The capability of the kernel and the thread library to take
							 | 
						|
								       advantage of symmetric multi-processor (SMP) systems. In other
							 | 
						|
								       words, when a process creates a thread, it should be possible
							 | 
						|
								       for that thread to run on a CPU different from the original
							 | 
						|
								       process.
							 | 
						|
								
							 | 
						|
								     * The capability of the kernel and the thread library to run
							 | 
						|
								       many threads that acquire and release a mutex over a short
							 | 
						|
								       critical region frequently without excessive context switches.
							 | 
						|
								       If the implementation of pthread_mutex_lock() is too anxious
							 | 
						|
								       to yield CPU time, this hurts MySQL tremendously. If this
							 | 
						|
								       issue is not taken care of, adding extra CPUs actually makes
							 | 
						|
								       MySQL slower.
							 | 
						|
								
							 | 
						|
								     * General file system stability and performance.
							 | 
						|
								
							 | 
						|
								     * Table size. If your tables are large, performance is affected
							 | 
						|
								       by the ability of the file system to deal with large files and
							 | 
						|
								       dealing with them efficiently.
							 | 
						|
								
							 | 
						|
								     * Our level of expertise here at Oracle Corporation with the
							 | 
						|
								       platform. If we know a platform well, we enable
							 | 
						|
								       platform-specific optimizations and fixes at compile time. We
							 | 
						|
								       can also provide advice on configuring your system optimally
							 | 
						|
								       for MySQL.
							 | 
						|
								
							 | 
						|
								     * The amount of testing we have done internally for similar
							 | 
						|
								       configurations.
							 | 
						|
								
							 | 
						|
								     * The number of users that have run MySQL successfully on the
							 | 
						|
								       platform in similar configurations. If this number is high,
							 | 
						|
								       the likelihood of encountering platform-specific surprises is
							 | 
						|
								       much smaller.
							 | 
						|
								
							 | 
						|
								2.1.2. Choosing Which MySQL Distribution to Install
							 | 
						|
								
							 | 
						|
								   When preparing to install MySQL, you should decide which version
							 | 
						|
								   to use. MySQL development occurs in several release series, and
							 | 
						|
								   you can pick the one that best fits your needs. After deciding
							 | 
						|
								   which version to install, you can choose a distribution format.
							 | 
						|
								   Releases are available in binary or source format.
							 | 
						|
								
							 | 
						|
								2.1.2.1. Choosing Which Version of MySQL to Install
							 | 
						|
								
							 | 
						|
								   The first decision to make is whether you want to use a production
							 | 
						|
								   (stable) release or a development release. In the MySQL
							 | 
						|
								   development process, multiple release series co-exist, each at a
							 | 
						|
								   different stage of maturity:
							 | 
						|
								
							 | 
						|
								     * MySQL 5.5 is the current development release series.
							 | 
						|
								
							 | 
						|
								     * MySQL 5.1 is the current General Availability (Production)
							 | 
						|
								       release series. New releases are issued for bugfixes only; no
							 | 
						|
								       new features are being added that could affect stability.
							 | 
						|
								
							 | 
						|
								     * MySQL 5.0 is the previous stable (production-quality) release
							 | 
						|
								       series. MySQL 5.0 is now at the end of the product lifecycle.
							 | 
						|
								       Active development and support for this version has ended.
							 | 
						|
								       Extended support for MySQL 5.0 remains available. According to
							 | 
						|
								       the http://www.mysql.com/about/legal/lifecycle/, only Security
							 | 
						|
								       and Severity Level 1 issues are still being fixed for MySQL
							 | 
						|
								       5.0.
							 | 
						|
								
							 | 
						|
								     * MySQL 4.1, 4.0, and 3.23 are old stable (production-quality)
							 | 
						|
								       release series. Active development and support for these
							 | 
						|
								       versions has ended.
							 | 
						|
								
							 | 
						|
								   We do not believe in a complete code freeze because this prevents
							 | 
						|
								   us from making bugfixes and other fixes that must be done. By
							 | 
						|
								   "somewhat frozen" we mean that we may add small things that should
							 | 
						|
								   not affect anything that currently works in a production release.
							 | 
						|
								   Naturally, relevant bugfixes from an earlier series propagate to
							 | 
						|
								   later series.
							 | 
						|
								
							 | 
						|
								   Normally, if you are beginning to use MySQL for the first time or
							 | 
						|
								   trying to port it to some system for which there is no binary
							 | 
						|
								   distribution, go with the General Availability release series.
							 | 
						|
								   Currently, this is MySQL 5.1. All MySQL releases, even those from
							 | 
						|
								   development series, are checked with the MySQL benchmarks and an
							 | 
						|
								   extensive test suite before being issued.
							 | 
						|
								
							 | 
						|
								   If you are running an older system and want to upgrade, but do not
							 | 
						|
								   want to take the chance of having a nonseamless upgrade, you
							 | 
						|
								   should upgrade to the latest version in the same release series
							 | 
						|
								   you are using (where only the last part of the version number is
							 | 
						|
								   newer than yours). We have tried to fix only fatal bugs and make
							 | 
						|
								   only small, relatively "safe" changes to that version.
							 | 
						|
								
							 | 
						|
								   If you want to use new features not present in the production
							 | 
						|
								   release series, you can use a version from a development series.
							 | 
						|
								   Note that development releases are not as stable as production
							 | 
						|
								   releases.
							 | 
						|
								
							 | 
						|
								   If you want to use the very latest sources containing all current
							 | 
						|
								   patches and bugfixes, you can use one of our Bazaar repositories.
							 | 
						|
								   These are not "releases" as such, but are available as previews of
							 | 
						|
								   the code on which future releases are to be based.
							 | 
						|
								
							 | 
						|
								   The MySQL naming scheme uses release names that consist of three
							 | 
						|
								   numbers and a suffix; for example, mysql-5.0.14-rc. The numbers
							 | 
						|
								   within the release name are interpreted as follows:
							 | 
						|
								
							 | 
						|
								     * The first number (5) is the major version and describes the
							 | 
						|
								       file format. All MySQL 5 releases have the same file format.
							 | 
						|
								
							 | 
						|
								     * The second number (0) is the release level. Taken together,
							 | 
						|
								       the major version and release level constitute the release
							 | 
						|
								       series number.
							 | 
						|
								
							 | 
						|
								     * The third number (14) is the version number within the release
							 | 
						|
								       series. This is incremented for each new release. Usually you
							 | 
						|
								       want the latest version for the series you have chosen.
							 | 
						|
								
							 | 
						|
								   For each minor update, the last number in the version string is
							 | 
						|
								   incremented. When there are major new features or minor
							 | 
						|
								   incompatibilities with previous versions, the second number in the
							 | 
						|
								   version string is incremented. When the file format changes, the
							 | 
						|
								   first number is increased.
							 | 
						|
								
							 | 
						|
								   Release names also include a suffix to indicates the stability
							 | 
						|
								   level of the release. Releases within a series progress through a
							 | 
						|
								   set of suffixes to indicate how the stability level improves. The
							 | 
						|
								   possible suffixes are:
							 | 
						|
								
							 | 
						|
								     * alpha indicates that the release is for preview purposes only.
							 | 
						|
								       Known bugs should be documented in the News section (see
							 | 
						|
								       Appendix C, "MySQL Change History"). Most alpha releases
							 | 
						|
								       implement new commands and extensions. Active development that
							 | 
						|
								       may involve major code changes can occur in an alpha release.
							 | 
						|
								       However, we do conduct testing before issuing a release.
							 | 
						|
								
							 | 
						|
								     * beta indicates that the release is appropriate for use with
							 | 
						|
								       new development. Within beta releases, the features and
							 | 
						|
								       compatibility should remain consistent. However, beta releases
							 | 
						|
								       may contain numerous and major unaddressed bugs.
							 | 
						|
								       All APIs, externally visible structures, and columns for SQL
							 | 
						|
								       statements will not change during future beta, release
							 | 
						|
								       candidate, or production releases.
							 | 
						|
								
							 | 
						|
								     * rc indicates a Release Candidate. Release candidates are
							 | 
						|
								       believed to be stable, having passed all of MySQL's internal
							 | 
						|
								       testing, and with all known fatal runtime bugs fixed. However,
							 | 
						|
								       the release has not been in widespread use long enough to know
							 | 
						|
								       for sure that all bugs have been identified. Only minor fixes
							 | 
						|
								       are added. (A release candidate is what formerly was known as
							 | 
						|
								       a gamma release.)
							 | 
						|
								
							 | 
						|
								     * If there is no suffix, it indicates that the release is a
							 | 
						|
								       General Availability (GA) or Production release. GA releases
							 | 
						|
								       are stable, having successfully passed through all earlier
							 | 
						|
								       release stages and are believed to be reliable, free of
							 | 
						|
								       serious bugs, and suitable for use in production systems. Only
							 | 
						|
								       critical bugfixes are applied to the release.
							 | 
						|
								
							 | 
						|
								   MySQL uses a naming scheme that is slightly different from most
							 | 
						|
								   other products. In general, it is usually safe to use any version
							 | 
						|
								   that has been out for a couple of weeks without being replaced by
							 | 
						|
								   a new version within the same release series.
							 | 
						|
								
							 | 
						|
								   All releases of MySQL are run through our standard tests and
							 | 
						|
								   benchmarks to ensure that they are relatively safe to use. Because
							 | 
						|
								   the standard tests are extended over time to check for all
							 | 
						|
								   previously found bugs, the test suite keeps getting better.
							 | 
						|
								
							 | 
						|
								   All releases have been tested at least with these tools:
							 | 
						|
								
							 | 
						|
								     * An internal test suite
							 | 
						|
								       The mysql-test directory contains an extensive set of test
							 | 
						|
								       cases. We run these tests for every server binary. See Section
							 | 
						|
								       22.1.2, "MySQL Test Suite," for more information about this
							 | 
						|
								       test suite.
							 | 
						|
								
							 | 
						|
								     * The MySQL benchmark suite
							 | 
						|
								       This suite runs a range of common queries. It is also a test
							 | 
						|
								       to determine whether the latest batch of optimizations
							 | 
						|
								       actually made the code faster. See Section 7.1.3, "The MySQL
							 | 
						|
								       Benchmark Suite."
							 | 
						|
								
							 | 
						|
								   We also test the newest MySQL version in our internal production
							 | 
						|
								   environment, on at least one machine. We have more than 100GB of
							 | 
						|
								   data to work with.
							 | 
						|
								
							 | 
						|
								2.1.2.2. Choosing a Distribution Format
							 | 
						|
								
							 | 
						|
								   After choosing which version of MySQL to install, you should
							 | 
						|
								   decide whether to use a binary distribution or a source
							 | 
						|
								   distribution. In most cases, you should probably use a binary
							 | 
						|
								   distribution, if one exists for your platform. Binary
							 | 
						|
								   distributions are available in native format for many platforms,
							 | 
						|
								   such as RPM files for Linux or PKG package installers for Mac OS X
							 | 
						|
								   or Solaris. Distributions also are available as Zip archives or
							 | 
						|
								   compressed tar files.
							 | 
						|
								
							 | 
						|
								   Reasons to choose a binary distribution include the following:
							 | 
						|
								
							 | 
						|
								     * Binary distributions generally are easier to install than
							 | 
						|
								       source distributions.
							 | 
						|
								
							 | 
						|
								     * To satisfy different user requirements, we provide several
							 | 
						|
								       servers in binary distributions. mysqld is an optimized server
							 | 
						|
								       that is a smaller, faster binary. mysqld-debug is compiled
							 | 
						|
								       with debugging support.
							 | 
						|
								       Each of these servers is compiled from the same source
							 | 
						|
								       distribution, though with different configuration options. All
							 | 
						|
								       native MySQL clients can connect to servers from either MySQL
							 | 
						|
								       version.
							 | 
						|
								
							 | 
						|
								   Under some circumstances, you may be better off installing MySQL
							 | 
						|
								   from a source distribution:
							 | 
						|
								
							 | 
						|
								     * You want to install MySQL at some explicit location. The
							 | 
						|
								       standard binary distributions are ready to run at any
							 | 
						|
								       installation location, but you might require even more
							 | 
						|
								       flexibility to place MySQL components where you want.
							 | 
						|
								
							 | 
						|
								     * You want to configure mysqld to ensure that features are
							 | 
						|
								       available that might not be included in the standard binary
							 | 
						|
								       distributions. Here is a list of the most common extra options
							 | 
						|
								       that you may want to use to ensure feature availability:
							 | 
						|
								
							 | 
						|
								          + --with-libwrap
							 | 
						|
								
							 | 
						|
								          + --with-named-z-libs (this is done for some of the
							 | 
						|
								            binaries)
							 | 
						|
								
							 | 
						|
								          + --with-debug[=full]
							 | 
						|
								
							 | 
						|
								     * You want to configure mysqld without some features that are
							 | 
						|
								       included in the standard binary distributions. For example,
							 | 
						|
								       distributions normally are compiled with support for all
							 | 
						|
								       character sets. If you want a smaller MySQL server, you can
							 | 
						|
								       recompile it with support for only the character sets you
							 | 
						|
								       need.
							 | 
						|
								
							 | 
						|
								     * You have a special compiler (such as pgcc) or want to use
							 | 
						|
								       compiler options that are better optimized for your processor.
							 | 
						|
								       Binary distributions are compiled with options that should
							 | 
						|
								       work on a variety of processors from the same processor
							 | 
						|
								       family.
							 | 
						|
								
							 | 
						|
								     * You want to use the latest sources from one of the Bazaar
							 | 
						|
								       repositories to have access to all current bugfixes. For
							 | 
						|
								       example, if you have found a bug and reported it to the MySQL
							 | 
						|
								       development team, the bugfix is committed to the source
							 | 
						|
								       repository and you can access it there. The bugfix does not
							 | 
						|
								       appear in a release until a release actually is issued.
							 | 
						|
								
							 | 
						|
								     * You want to read (or modify) the C and C++ code that makes up
							 | 
						|
								       MySQL. For this purpose, you should get a source distribution,
							 | 
						|
								       because the source code is always the ultimate manual.
							 | 
						|
								
							 | 
						|
								     * Source distributions contain more tests and examples than
							 | 
						|
								       binary distributions.
							 | 
						|
								
							 | 
						|
								2.1.2.3. How and When Updates Are Released
							 | 
						|
								
							 | 
						|
								   MySQL is evolving quite rapidly and we want to share new
							 | 
						|
								   developments with other MySQL users. We try to produce a new
							 | 
						|
								   release whenever we have new and useful features that others also
							 | 
						|
								   seem to have a need for.
							 | 
						|
								
							 | 
						|
								   We also try to help users who request features that are easy to
							 | 
						|
								   implement. We take note of what our licensed users want, and we
							 | 
						|
								   especially take note of what our support customers want and try to
							 | 
						|
								   help them in this regard.
							 | 
						|
								
							 | 
						|
								   No one is required to download a new release. The News section
							 | 
						|
								   helps you determine whether the new release has something you
							 | 
						|
								   really want. See Appendix C, "MySQL Change History."
							 | 
						|
								
							 | 
						|
								   We use the following policy when updating MySQL:
							 | 
						|
								
							 | 
						|
								     * Enterprise Server releases are meant to appear every 18
							 | 
						|
								       months, supplemented by quarterly service packs and monthly
							 | 
						|
								       rapid updates. Community Server releases are meant to appear
							 | 
						|
								       2-3 times per year.
							 | 
						|
								
							 | 
						|
								     * Releases are issued within each series. For each release, the
							 | 
						|
								       last number in the version is one more than the previous
							 | 
						|
								       release within the same series.
							 | 
						|
								
							 | 
						|
								     * Binary distributions for some platforms are made by us for
							 | 
						|
								       major releases. Other people may make binary distributions for
							 | 
						|
								       other systems, but probably less frequently.
							 | 
						|
								
							 | 
						|
								     * We make fixes available as soon as we have identified and
							 | 
						|
								       corrected small or noncritical but annoying bugs. The fixes
							 | 
						|
								       are available in source form immediately from our public
							 | 
						|
								       Bazaar repositories, and are included in the next release.
							 | 
						|
								
							 | 
						|
								     * If by any chance a security vulnerability or critical bug is
							 | 
						|
								       found in a release, our policy is to fix it in a new release
							 | 
						|
								       as soon as possible. (We would like other companies to do
							 | 
						|
								       this, too!)
							 | 
						|
								
							 | 
						|
								2.1.3. How to Get MySQL
							 | 
						|
								
							 | 
						|
								   Check our downloads page at http://dev.mysql.com/downloads/ for
							 | 
						|
								   information about the current version of MySQL and for downloading
							 | 
						|
								   instructions. For a complete up-to-date list of MySQL download
							 | 
						|
								   mirror sites, see http://dev.mysql.com/downloads/mirrors.html. You
							 | 
						|
								   can also find information there about becoming a MySQL mirror site
							 | 
						|
								   and how to report a bad or out-of-date mirror.
							 | 
						|
								
							 | 
						|
								   Our main mirror is located at http://mirrors.sunsite.dk/mysql/.
							 | 
						|
								
							 | 
						|
								2.1.4. Verifying Package Integrity Using MD5 Checksums or GnuPG
							 | 
						|
								
							 | 
						|
								   After you have downloaded the MySQL package that suits your needs
							 | 
						|
								   and before you attempt to install it, you should make sure that it
							 | 
						|
								   is intact and has not been tampered with. There are three means of
							 | 
						|
								   integrity checking:
							 | 
						|
								
							 | 
						|
								     * MD5 checksums
							 | 
						|
								
							 | 
						|
								     * Cryptographic signatures using GnuPG, the GNU Privacy Guard
							 | 
						|
								
							 | 
						|
								     * For RPM packages, the built-in RPM integrity verification
							 | 
						|
								       mechanism
							 | 
						|
								
							 | 
						|
								   The following sections describe how to use these methods.
							 | 
						|
								
							 | 
						|
								   If you notice that the MD5 checksum or GPG signatures do not
							 | 
						|
								   match, first try to download the respective package one more time,
							 | 
						|
								   perhaps from another mirror site. If you repeatedly cannot
							 | 
						|
								   successfully verify the integrity of the package, please notify us
							 | 
						|
								   about such incidents, including the full package name and the
							 | 
						|
								   download site you have been using, at webmaster@mysql.com or
							 | 
						|
								   build@mysql.com. Do not report downloading problems using the
							 | 
						|
								   bug-reporting system.
							 | 
						|
								
							 | 
						|
								2.1.4.1. Verifying the MD5 Checksum
							 | 
						|
								
							 | 
						|
								   After you have downloaded a MySQL package, you should make sure
							 | 
						|
								   that its MD5 checksum matches the one provided on the MySQL
							 | 
						|
								   download pages. Each package has an individual checksum that you
							 | 
						|
								   can verify with the following command, where package_name is the
							 | 
						|
								   name of the package you downloaded:
							 | 
						|
								shell> md5sum package_name
							 | 
						|
								
							 | 
						|
								   Example:
							 | 
						|
								shell> md5sum mysql-standard-5.1.46-linux-i686.tar.gz
							 | 
						|
								aaab65abbec64d5e907dcd41b8699945  mysql-standard-5.1.46-linux-i686.ta
							 | 
						|
								r.gz
							 | 
						|
								
							 | 
						|
								   You should verify that the resulting checksum (the string of
							 | 
						|
								   hexadecimal digits) matches the one displayed on the download page
							 | 
						|
								   immediately below the respective package.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   Make sure to verify the checksum of the archive file (for example,
							 | 
						|
								   the .zip or .tar.gz file) and not of the files that are contained
							 | 
						|
								   inside of the archive.
							 | 
						|
								
							 | 
						|
								   Note that not all operating systems support the md5sum command. On
							 | 
						|
								   some, it is simply called md5, and others do not ship it at all.
							 | 
						|
								   On Linux, it is part of the GNU Text Utilities package, which is
							 | 
						|
								   available for a wide range of platforms. You can download the
							 | 
						|
								   source code from http://www.gnu.org/software/textutils/ as well.
							 | 
						|
								   If you have OpenSSL installed, you can use the command openssl md5
							 | 
						|
								   package_name instead. A Windows implementation of the md5 command
							 | 
						|
								   line utility is available from http://www.fourmilab.ch/md5/.
							 | 
						|
								   winMd5Sum is a graphical MD5 checking tool that can be obtained
							 | 
						|
								   from http://www.nullriver.com/index/products/winmd5sum.
							 | 
						|
								
							 | 
						|
								2.1.4.2. Signature Checking Using GnuPG
							 | 
						|
								
							 | 
						|
								   Another method of verifying the integrity and authenticity of a
							 | 
						|
								   package is to use cryptographic signatures. This is more reliable
							 | 
						|
								   than using MD5 checksums, but requires more work.
							 | 
						|
								
							 | 
						|
								   We sign MySQL downloadable packages with GnuPG (GNU Privacy
							 | 
						|
								   Guard). GnuPG is an Open Source alternative to the well-known
							 | 
						|
								   Pretty Good Privacy (PGP) by Phil Zimmermann. See
							 | 
						|
								   http://www.gnupg.org/ for more information about GnuPG and how to
							 | 
						|
								   obtain and install it on your system. Most Linux distributions
							 | 
						|
								   ship with GnuPG installed by default. For more information about
							 | 
						|
								   GnuPG, see http://www.openpgp.org/.
							 | 
						|
								
							 | 
						|
								   To verify the signature for a specific package, you first need to
							 | 
						|
								   obtain a copy of our public GPG build key, which you can download
							 | 
						|
								   from http://keyserver.pgp.com/. The key that you want to obtain is
							 | 
						|
								   named build@mysql.com. Alternatively, you can cut and paste the
							 | 
						|
								   key directly from the following text:
							 | 
						|
								-----BEGIN PGP PUBLIC KEY BLOCK-----
							 | 
						|
								Version: GnuPG v1.4.5 (GNU/Linux)
							 | 
						|
								
							 | 
						|
								mQGiBD4+owwRBAC14GIfUfCyEDSIePvEW3SAFUdJBtoQHH/nJKZyQT7h9bPlUWC3
							 | 
						|
								RODjQReyCITRrdwyrKUGku2FmeVGwn2u2WmDMNABLnpprWPkBdCk96+OmSLN9brZ
							 | 
						|
								fw2vOUgCmYv2hW0hyDHuvYlQA/BThQoADgj8AW6/0Lo7V1W9/8VuHP0gQwCgvzV3
							 | 
						|
								BqOxRznNCRCRxAuAuVztHRcEAJooQK1+iSiunZMYD1WufeXfshc57S/+yeJkegNW
							 | 
						|
								hxwR9pRWVArNYJdDRT+rf2RUe3vpquKNQU/hnEIUHJRQqYHo8gTxvxXNQc7fJYLV
							 | 
						|
								K2HtkrPbP72vwsEKMYhhr0eKCbtLGfls9krjJ6sBgACyP/Vb7hiPwxh6rDZ7ITnE
							 | 
						|
								kYpXBACmWpP8NJTkamEnPCia2ZoOHODANwpUkP43I7jsDmgtobZX9qnrAXw+uNDI
							 | 
						|
								QJEXM6FSbi0LLtZciNlYsafwAPEOMDKpMqAK6IyisNtPvaLd8lH0bPAnWqcyefep
							 | 
						|
								rv0sxxqUEMcM3o7wwgfN83POkDasDbs3pjwPhxvhz6//62zQJ7Q7TXlTUUwgUGFj
							 | 
						|
								a2FnZSBzaWduaW5nIGtleSAod3d3Lm15c3FsLmNvbSkgPGJ1aWxkQG15c3FsLmNv
							 | 
						|
								bT6IXQQTEQIAHQULBwoDBAMVAwIDFgIBAheABQJLcC5lBQkQ8/JZAAoJEIxxjTtQ
							 | 
						|
								cuH1oD4AoIcOQ4EoGsZvy06D0Ei5vcsWEy8dAJ4g46i3WEcdSWxMhcBSsPz65sh5
							 | 
						|
								lohMBBMRAgAMBQI+PqPRBYMJZgC7AAoJEElQ4SqycpHyJOEAn1mxHijft00bKXvu
							 | 
						|
								cSo/pECUmppiAJ41M9MRVj5VcdH/KN/KjRtW6tHFPYhMBBMRAgAMBQI+QoIDBYMJ
							 | 
						|
								YiKJAAoJELb1zU3GuiQ/lpEAoIhpp6BozKI8p6eaabzF5MlJH58pAKCu/ROofK8J
							 | 
						|
								Eg2aLos+5zEYrB/LsrkCDQQ+PqMdEAgA7+GJfxbMdY4wslPnjH9rF4N2qfWsEN/l
							 | 
						|
								xaZoJYc3a6M02WCnHl6ahT2/tBK2w1QI4YFteR47gCvtgb6O1JHffOo2HfLmRDRi
							 | 
						|
								Rjd1DTCHqeyX7CHhcghj/dNRlW2Z0l5QFEcmV9U0Vhp3aFfWC4Ujfs3LU+hkAWzE
							 | 
						|
								7zaD5cH9J7yv/6xuZVw411x0h4UqsTcWMu0iM1BzELqX1DY7LwoPEb/O9Rkbf4fm
							 | 
						|
								Le11EzIaCa4PqARXQZc4dhSinMt6K3X4BrRsKTfozBu74F47D8Ilbf5vSYHbuE5p
							 | 
						|
								/1oIDznkg/p8kW+3FxuWrycciqFTcNz215yyX39LXFnlLzKUb/F5GwADBQf+Lwqq
							 | 
						|
								a8CGrRfsOAJxim63CHfty5mUc5rUSnTslGYEIOCR1BeQauyPZbPDsDD9MZ1ZaSaf
							 | 
						|
								anFvwFG6Llx9xkU7tzq+vKLoWkm4u5xf3vn55VjnSd1aQ9eQnUcXiL4cnBGoTbOW
							 | 
						|
								I39EcyzgslzBdC++MPjcQTcA7p6JUVsP6oAB3FQWg54tuUo0Ec8bsM8b3Ev42Lmu
							 | 
						|
								QT5NdKHGwHsXTPtl0klk4bQk4OajHsiy1BMahpT27jWjJlMiJc+IWJ0mghkKHt92
							 | 
						|
								6s/ymfdf5HkdQ1cyvsz5tryVI3Fx78XeSYfQvuuwqp2H139pXGEkg0n6KdUOetdZ
							 | 
						|
								Whe70YGNPw1yjWJT1IhMBBgRAgAMBQI+PqMdBQkJZgGAAAoJEIxxjTtQcuH17p4A
							 | 
						|
								n3r1QpVC9yhnW2cSAjq+kr72GX0eAJ4295kl6NxYEuFApmr1+0uUq/SlsQ==
							 | 
						|
								=Mski
							 | 
						|
								
							 | 
						|
								-----END PGP PUBLIC KEY BLOCK-----
							 | 
						|
								
							 | 
						|
								   To import the build key into your personal public GPG keyring, use
							 | 
						|
								   gpg --import. For example, if you have saved the key in a file
							 | 
						|
								   named mysql_pubkey.asc, the import command looks like this:
							 | 
						|
								shell> gpg --import mysql_pubkey.asc
							 | 
						|
								gpg: key 5072E1F5: public key "MySQL Package signing key (www.mysql.c
							 | 
						|
								om) <build@mysql.com>" imported
							 | 
						|
								gpg: Total number processed: 1
							 | 
						|
								gpg:               imported: 1
							 | 
						|
								gpg: no ultimately trusted keys found
							 | 
						|
								
							 | 
						|
								   You can also download the key from the public keyserver using the
							 | 
						|
								   public key id, 5072E1F5:
							 | 
						|
								shell> gpg --recv-keys 5072E1F5
							 | 
						|
								gpg: requesting key 5072E1F5 from hkp server subkeys.pgp.net
							 | 
						|
								gpg: key 5072E1F5: "MySQL Package signing key (www.mysql.com) <build@
							 | 
						|
								mysql.com>" 2 new signatures
							 | 
						|
								gpg: no ultimately trusted keys found
							 | 
						|
								gpg: Total number processed: 1
							 | 
						|
								gpg:         new signatures: 2
							 | 
						|
								
							 | 
						|
								   If you want to import the key into your RPM configuration to
							 | 
						|
								   validate RPM install packages, you should be able to import the
							 | 
						|
								   key directly:
							 | 
						|
								shell> rpm --import mysql_pubkey.asc
							 | 
						|
								
							 | 
						|
								   If you experience problems, try exporting the key from gpg and
							 | 
						|
								   importing:
							 | 
						|
								shell> gpg --export -a 5072e1f5 > 5072e1f5.asc
							 | 
						|
								shell> rpm --import 5072e1f5.asc
							 | 
						|
								
							 | 
						|
								   Alternatively, rpm also supports loading the key directly from a
							 | 
						|
								   URL, and you cas use this manual page:
							 | 
						|
								shell> rpm --import http://dev.mysql.com/doc/refman/5.1/en/checking-g
							 | 
						|
								pg-signature.html
							 | 
						|
								
							 | 
						|
								   After you have downloaded and imported the public build key,
							 | 
						|
								   download your desired MySQL package and the corresponding
							 | 
						|
								   signature, which also is available from the download page. The
							 | 
						|
								   signature file has the same name as the distribution file with an
							 | 
						|
								   .asc extension, as shown by the examples in the following table.
							 | 
						|
								   Distribution file mysql-standard-5.1.46-linux-i686.tar.gz
							 | 
						|
								   Signature file    mysql-standard-5.1.46-linux-i686.tar.gz.asc
							 | 
						|
								
							 | 
						|
								   Make sure that both files are stored in the same directory and
							 | 
						|
								   then run the following command to verify the signature for the
							 | 
						|
								   distribution file:
							 | 
						|
								shell> gpg --verify package_name.asc
							 | 
						|
								
							 | 
						|
								   Example:
							 | 
						|
								shell> gpg --verify mysql-standard-5.1.46-linux-i686.tar.gz.asc
							 | 
						|
								gpg: Signature made Tue 12 Jul 2005 23:35:41 EST using DSA key ID 507
							 | 
						|
								2E1F5
							 | 
						|
								gpg: Good signature from "MySQL Package signing key (www.mysql.com) <
							 | 
						|
								build@mysql.com>"
							 | 
						|
								
							 | 
						|
								   The Good signature message indicates that everything is all right.
							 | 
						|
								   You can ignore any insecure memory warning you might obtain.
							 | 
						|
								
							 | 
						|
								   See the GPG documentation for more information on how to work with
							 | 
						|
								   public keys.
							 | 
						|
								
							 | 
						|
								2.1.4.3. Signature Checking Using RPM
							 | 
						|
								
							 | 
						|
								   For RPM packages, there is no separate signature. RPM packages
							 | 
						|
								   have a built-in GPG signature and MD5 checksum. You can verify a
							 | 
						|
								   package by running the following command:
							 | 
						|
								shell> rpm --checksig package_name.rpm
							 | 
						|
								
							 | 
						|
								   Example:
							 | 
						|
								shell> rpm --checksig MySQL-server-5.1.46-0.glibc23.i386.rpm
							 | 
						|
								MySQL-server-5.1.46-0.glibc23.i386.rpm: md5 gpg OK
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   If you are using RPM 4.1 and it complains about (GPG) NOT OK
							 | 
						|
								   (MISSING KEYS: GPG#5072e1f5), even though you have imported the
							 | 
						|
								   MySQL public build key into your own GPG keyring, you need to
							 | 
						|
								   import the key into the RPM keyring first. RPM 4.1 no longer uses
							 | 
						|
								   your personal GPG keyring (or GPG itself). Rather, it maintains
							 | 
						|
								   its own keyring because it is a system-wide application and a
							 | 
						|
								   user's GPG public keyring is a user-specific file. To import the
							 | 
						|
								   MySQL public key into the RPM keyring, first obtain the key as
							 | 
						|
								   described in Section 2.1.4.2, "Signature Checking Using GnuPG."
							 | 
						|
								   Then use rpm --import to import the key. For example, if you have
							 | 
						|
								   saved the public key in a file named mysql_pubkey.asc, import it
							 | 
						|
								   using this command:
							 | 
						|
								shell> rpm --import mysql_pubkey.asc
							 | 
						|
								
							 | 
						|
								   If you need to obtain the MySQL public key, see Section 2.1.4.2,
							 | 
						|
								   "Signature Checking Using GnuPG."
							 | 
						|
								
							 | 
						|
								2.1.5. Installation Layouts
							 | 
						|
								
							 | 
						|
								   This section describes the default layout of the directories
							 | 
						|
								   created by installing binary or source distributions provided by
							 | 
						|
								   Oracle Corporation. A distribution provided by another vendor
							 | 
						|
								   might use a layout different from those shown here.
							 | 
						|
								
							 | 
						|
								   Installations created from our Linux RPM distributions result in
							 | 
						|
								   files under the following system directories.
							 | 
						|
								   Directory            Contents of Directory
							 | 
						|
								   /usr/bin             Client programs and scripts
							 | 
						|
								   /usr/sbin            The mysqld server
							 | 
						|
								   /var/lib/mysql       Log files, databases
							 | 
						|
								   /usr/share/info      Manual in Info format
							 | 
						|
								   /usr/share/man       Unix manual pages
							 | 
						|
								   /usr/include/mysql   Include (header) files
							 | 
						|
								   /usr/lib/mysql       Libraries
							 | 
						|
								   /usr/share/mysql     Error message and character set files
							 | 
						|
								   /usr/share/sql-bench Benchmarks
							 | 
						|
								
							 | 
						|
								   On Unix, a tar file binary distribution is installed by unpacking
							 | 
						|
								   it at the installation location you choose (typically
							 | 
						|
								   /usr/local/mysql) and creates the following directories in that
							 | 
						|
								   location.
							 | 
						|
								   Directory   Contents of Directory
							 | 
						|
								   bin         Client programs and the mysqld server
							 | 
						|
								   data        Log files, databases
							 | 
						|
								   docs        Manual in Info format
							 | 
						|
								   man         Unix manual pages
							 | 
						|
								   include     Include (header) files
							 | 
						|
								   lib         Libraries
							 | 
						|
								   scripts     mysql_install_db
							 | 
						|
								   share/mysql Error message files
							 | 
						|
								   sql-bench   Benchmarks
							 | 
						|
								
							 | 
						|
								   A source distribution is installed after you configure and compile
							 | 
						|
								   it. By default, the installation step installs files under
							 | 
						|
								   /usr/local, in the following subdirectories.
							 | 
						|
								   Directory     Contents of Directory
							 | 
						|
								   bin           Client programs and scripts
							 | 
						|
								   include/mysql Include (header) files
							 | 
						|
								   Docs          Manual in Info, CHM formats
							 | 
						|
								   man           Unix manual pages
							 | 
						|
								   lib/mysql     Libraries
							 | 
						|
								   libexec       The mysqld server
							 | 
						|
								   share/mysql   Error message files
							 | 
						|
								   sql-bench     Benchmarks and crash-me test
							 | 
						|
								   var           Databases and log files
							 | 
						|
								
							 | 
						|
								   Within its installation directory, the layout of a source
							 | 
						|
								   installation differs from that of a binary installation in the
							 | 
						|
								   following ways:
							 | 
						|
								
							 | 
						|
								     * The mysqld server is installed in the libexec directory rather
							 | 
						|
								       than in the bin directory.
							 | 
						|
								
							 | 
						|
								     * The data directory is var rather than data.
							 | 
						|
								
							 | 
						|
								     * mysql_install_db is installed in the bin directory rather than
							 | 
						|
								       in the scripts directory.
							 | 
						|
								
							 | 
						|
								     * The header file and library directories are include/mysql and
							 | 
						|
								       lib/mysql rather than include and lib.
							 | 
						|
								
							 | 
						|
								   You can create your own binary installation from a compiled source
							 | 
						|
								   distribution by executing the scripts/make_binary_distribution
							 | 
						|
								   script from the top directory of the source distribution.
							 | 
						|
								
							 | 
						|
								2.2. Installing MySQL from Generic Binaries on Unix/Linux
							 | 
						|
								
							 | 
						|
								   This section covers the installation of MySQL binary distributions
							 | 
						|
								   that are provided for various platforms in the form of compressed
							 | 
						|
								   tar files (files with a .tar.gz extension).
							 | 
						|
								
							 | 
						|
								   To obtain MySQL, see Section 2.1.3, "How to Get MySQL."
							 | 
						|
								
							 | 
						|
								   Sun Microsystems, Inc. provides a set of binary distributions of
							 | 
						|
								   MySQL. In addition to binaries provided in platform-specific
							 | 
						|
								   package formats, we offer binary distributions for a number of
							 | 
						|
								   platforms in the form of compressed tar files (.tar.gz files). For
							 | 
						|
								   Windows distributions, see Section 2.5, "Installing MySQL on
							 | 
						|
								   Windows."
							 | 
						|
								
							 | 
						|
								   If you want to compile a debug version of MySQL from a source
							 | 
						|
								   distribution, you should add --with-debug or --with-debug=full to
							 | 
						|
								   the configure command used to configure the distribution and
							 | 
						|
								   remove any -fomit-frame-pointer options.
							 | 
						|
								
							 | 
						|
								   MySQL tar file binary distributions have names of the form
							 | 
						|
								   mysql-VERSION-OS.tar.gz, where VERSION is a number (for example,
							 | 
						|
								   5.1.46), and OS indicates the type of operating system for which
							 | 
						|
								   the distribution is intended (for example, pc-linux-i686).
							 | 
						|
								
							 | 
						|
								   In addition to these generic packages, we also offer binaries in
							 | 
						|
								   platform-specific package formats for selected platforms. See the
							 | 
						|
								   platform specific sections for more information, for more
							 | 
						|
								   information on how to install these.
							 | 
						|
								
							 | 
						|
								   You need the following tools to install a MySQL tar file binary
							 | 
						|
								   distribution:
							 | 
						|
								
							 | 
						|
								     * GNU gunzip to uncompress the distribution.
							 | 
						|
								
							 | 
						|
								     * A reasonable tar to unpack the distribution. GNU tar is known
							 | 
						|
								       to work. Some operating systems come with a preinstalled
							 | 
						|
								       version of tar that is known to have problems. For example,
							 | 
						|
								       the tar provided with early versions of Mac OS X, SunOS 4.x,
							 | 
						|
								       Solaris 8, Solaris 9, Solaris 10 and OpenSolaris, and HP-UX
							 | 
						|
								       are known to have problems with long file names. On Mac OS X,
							 | 
						|
								       you can use the preinstalled gnutar program. On Solaris 10 and
							 | 
						|
								       OpenSolaris you can use the preinstalled gtar. On other
							 | 
						|
								       systems with a deficient tar, you should install GNU tar
							 | 
						|
								       first.
							 | 
						|
								
							 | 
						|
								   If you run into problems and need to file a bug report, please use
							 | 
						|
								   the instructions in Section 1.7, "How to Report Bugs or Problems."
							 | 
						|
								
							 | 
						|
								   The basic commands that you must execute to install and use a
							 | 
						|
								   MySQL binary distribution are:
							 | 
						|
								shell> groupadd mysql
							 | 
						|
								shell> useradd -g mysql mysql
							 | 
						|
								shell> cd /usr/local
							 | 
						|
								shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
							 | 
						|
								shell> ln -s full-path-to-mysql-VERSION-OS mysql
							 | 
						|
								shell> cd mysql
							 | 
						|
								shell> chown -R mysql .
							 | 
						|
								shell> chgrp -R mysql .
							 | 
						|
								shell> scripts/mysql_install_db --user=mysql
							 | 
						|
								shell> chown -R root .
							 | 
						|
								shell> chown -R mysql data
							 | 
						|
								shell> bin/mysqld_safe --user=mysql &
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   This procedure does not set up any passwords for MySQL accounts.
							 | 
						|
								   After following the procedure, proceed to Section 2.13,
							 | 
						|
								   "Post-Installation Setup and Testing."
							 | 
						|
								
							 | 
						|
								   A more detailed version of the preceding description for
							 | 
						|
								   installing a binary distribution follows:
							 | 
						|
								
							 | 
						|
								    1. Add a login user and group for mysqld to run as:
							 | 
						|
								shell> groupadd mysql
							 | 
						|
								shell> useradd -g mysql mysql
							 | 
						|
								       These commands add the mysql group and the mysql user. The
							 | 
						|
								       syntax for useradd and groupadd may differ slightly on
							 | 
						|
								       different versions of Unix, or they may have different names
							 | 
						|
								       such as adduser and addgroup.
							 | 
						|
								       You might want to call the user and group something else
							 | 
						|
								       instead of mysql. If so, substitute the appropriate name in
							 | 
						|
								       the following steps.
							 | 
						|
								
							 | 
						|
								    2. Pick the directory under which you want to unpack the
							 | 
						|
								       distribution and change location into it. In the following
							 | 
						|
								       example, we unpack the distribution under /usr/local. (The
							 | 
						|
								       instructions, therefore, assume that you have permission to
							 | 
						|
								       create files and directories in /usr/local. If that directory
							 | 
						|
								       is protected, you must perform the installation as root.)
							 | 
						|
								shell> cd /usr/local
							 | 
						|
								
							 | 
						|
								    3. Obtain a distribution file using the instructions in Section
							 | 
						|
								       2.1.3, "How to Get MySQL." For a given release, binary
							 | 
						|
								       distributions for all platforms are built from the same MySQL
							 | 
						|
								       source distribution.
							 | 
						|
								
							 | 
						|
								    4. Unpack the distribution, which creates the installation
							 | 
						|
								       directory. Then create a symbolic link to that directory:
							 | 
						|
								shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
							 | 
						|
								shell> ln -s full-path-to-mysql-VERSION-OS mysql
							 | 
						|
								       The tar command creates a directory named mysql-VERSION-OS.
							 | 
						|
								       The ln command makes a symbolic link to that directory. This
							 | 
						|
								       lets you refer more easily to the installation directory as
							 | 
						|
								       /usr/local/mysql.
							 | 
						|
								       With GNU tar, no separate invocation of gunzip is necessary.
							 | 
						|
								       You can replace the first line with the following alternative
							 | 
						|
								       command to uncompress and extract the distribution:
							 | 
						|
								shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
							 | 
						|
								
							 | 
						|
								    5. Change location into the installation directory:
							 | 
						|
								shell> cd mysql
							 | 
						|
								       You will find several files and subdirectories in the mysql
							 | 
						|
								       directory. The most important for installation purposes are
							 | 
						|
								       the bin and scripts subdirectories:
							 | 
						|
								
							 | 
						|
								          + The bin directory contains client programs and the
							 | 
						|
								            server. You should add the full path name of this
							 | 
						|
								            directory to your PATH environment variable so that your
							 | 
						|
								            shell finds the MySQL programs properly. See Section
							 | 
						|
								            2.14, "Environment Variables."
							 | 
						|
								
							 | 
						|
								          + The scripts directory contains the mysql_install_db
							 | 
						|
								            script used to initialize the mysql database containing
							 | 
						|
								            the grant tables that store the server access
							 | 
						|
								            permissions.
							 | 
						|
								
							 | 
						|
								    6. Ensure that the distribution contents are accessible to mysql.
							 | 
						|
								       If you unpacked the distribution as mysql, no further action
							 | 
						|
								       is required. If you unpacked the distribution as root, its
							 | 
						|
								       contents will be owned by root. Change its ownership to mysql
							 | 
						|
								       by executing the following commands as root in the
							 | 
						|
								       installation directory:
							 | 
						|
								shell> chown -R mysql .
							 | 
						|
								shell> chgrp -R mysql .
							 | 
						|
								       The first command changes the owner attribute of the files to
							 | 
						|
								       the mysql user. The second changes the group attribute to the
							 | 
						|
								       mysql group.
							 | 
						|
								
							 | 
						|
								    7. If you have not installed MySQL before, you must create the
							 | 
						|
								       MySQL data directory and initialize the grant tables:
							 | 
						|
								shell> scripts/mysql_install_db --user=mysql
							 | 
						|
								       If you run the command as root, include the --user option as
							 | 
						|
								       shown. If you run the command while logged in as that user,
							 | 
						|
								       you can omit the --user option.
							 | 
						|
								       The command should create the data directory and its contents
							 | 
						|
								       with mysql as the owner.
							 | 
						|
								       After creating or updating the grant tables, you need to
							 | 
						|
								       restart the server manually.
							 | 
						|
								
							 | 
						|
								    8. Most of the MySQL installation can be owned by root if you
							 | 
						|
								       like. The exception is that the data directory must be owned
							 | 
						|
								       by mysql. To accomplish this, run the following commands as
							 | 
						|
								       root in the installation directory:
							 | 
						|
								shell> chown -R root .
							 | 
						|
								shell> chown -R mysql data
							 | 
						|
								
							 | 
						|
								    9. If you want MySQL to start automatically when you boot your
							 | 
						|
								       machine, you can copy support-files/mysql.server to the
							 | 
						|
								       location where your system has its startup files. More
							 | 
						|
								       information can be found in the support-files/mysql.server
							 | 
						|
								       script itself and in Section 2.13.1.2, "Starting and Stopping
							 | 
						|
								       MySQL Automatically."
							 | 
						|
								   10. You can set up new accounts using the bin/mysql_setpermission
							 | 
						|
								       script if you install the DBI and DBD::mysql Perl modules. See
							 | 
						|
								       Section 4.6.14, "mysql_setpermission --- Interactively Set
							 | 
						|
								       Permissions in Grant Tables." For Perl module installation
							 | 
						|
								       instructions, see Section 2.15, "Perl Installation Notes."
							 | 
						|
								   11. If you would like to use mysqlaccess and have the MySQL
							 | 
						|
								       distribution in some nonstandard location, you must change the
							 | 
						|
								       location where mysqlaccess expects to find the mysql client.
							 | 
						|
								       Edit the bin/mysqlaccess script at approximately line 18.
							 | 
						|
								       Search for a line that looks like this:
							 | 
						|
								$MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable
							 | 
						|
								       Change the path to reflect the location where mysql actually
							 | 
						|
								       is stored on your system. If you do not do this, a Broken pipe
							 | 
						|
								       error will occur when you run mysqlaccess.
							 | 
						|
								
							 | 
						|
								   After everything has been unpacked and installed, you should test
							 | 
						|
								   your distribution. To start the MySQL server, use the following
							 | 
						|
								   command:
							 | 
						|
								shell> bin/mysqld_safe --user=mysql &
							 | 
						|
								
							 | 
						|
								   If you run the command as root, you must use the --user option as
							 | 
						|
								   shown. The value of the option is the name of the login account
							 | 
						|
								   that you created in the first step to use for running the server.
							 | 
						|
								   If you run the command while logged in as mysql, you can omit the
							 | 
						|
								   --user option.
							 | 
						|
								
							 | 
						|
								   If the command fails immediately and prints mysqld ended, you can
							 | 
						|
								   find some information in the host_name.err file in the data
							 | 
						|
								   directory.
							 | 
						|
								
							 | 
						|
								   More information about mysqld_safe is given in Section 4.3.2,
							 | 
						|
								   "mysqld_safe --- MySQL Server Startup Script."
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   The accounts that are listed in the MySQL grant tables initially
							 | 
						|
								   have no passwords. After starting the server, you should set up
							 | 
						|
								   passwords for them using the instructions in Section 2.13,
							 | 
						|
								   "Post-Installation Setup and Testing."
							 | 
						|
								
							 | 
						|
								2.3. MySQL Installation Using a Source Distribution
							 | 
						|
								
							 | 
						|
								   Before you proceed with an installation from source, first check
							 | 
						|
								   whether our binary is available for your platform and whether it
							 | 
						|
								   works for you. We put a great deal of effort into ensuring that
							 | 
						|
								   our binaries are built with the best possible options.
							 | 
						|
								
							 | 
						|
								   To obtain a source distribution for MySQL, Section 2.1.3, "How to
							 | 
						|
								   Get MySQL." If you want to build MySQL from source on Windows, see
							 | 
						|
								   Section 2.5.10, "Installing MySQL from Source on Windows."
							 | 
						|
								
							 | 
						|
								   MySQL source distributions are provided as compressed tar archives
							 | 
						|
								   and have names of the form mysql-VERSION.tar.gz, where VERSION is
							 | 
						|
								   a number like 5.1.46.
							 | 
						|
								
							 | 
						|
								   You need the following tools to build and install MySQL from
							 | 
						|
								   source:
							 | 
						|
								
							 | 
						|
								     * GNU gunzip to uncompress the distribution.
							 | 
						|
								
							 | 
						|
								     * A reasonable tar to unpack the distribution. GNU tar is known
							 | 
						|
								       to work. Some operating systems come with a preinstalled
							 | 
						|
								       version of tar that is known to have problems. For example,
							 | 
						|
								       the tar provided with early versions of Mac OS X, SunOS 4.x,
							 | 
						|
								       Solaris 8, Solaris 9, Solaris 10 and OpenSolaris, and HP-UX
							 | 
						|
								       are known to have problems with long file names. On Mac OS X,
							 | 
						|
								       you can use the preinstalled gnutar program. On Solaris 10 and
							 | 
						|
								       OpenSolaris you can use the preinstalled gtar. On other
							 | 
						|
								       systems with a deficient tar, you should install GNU tar
							 | 
						|
								       first.
							 | 
						|
								
							 | 
						|
								     * A working ANSI C++ compiler. GCC 3.2 or later, Sun Studio 10
							 | 
						|
								       or later, Visual Studio 2005 or later, and many current
							 | 
						|
								       vendor-supplied compilers are known to work.
							 | 
						|
								
							 | 
						|
								     * A good make program. GNU make is always recommended and is
							 | 
						|
								       sometimes required. (BSD make fails, and vendor-provided make
							 | 
						|
								       implementations may fail as well.) If you have problems, use
							 | 
						|
								       GNU make 3.75 or newer.
							 | 
						|
								
							 | 
						|
								     * libtool 1.5.24 or later is also recommended.
							 | 
						|
								
							 | 
						|
								   If you are using a version of gcc recent enough to understand the
							 | 
						|
								   -fno-exceptions option, it is very important that you use this
							 | 
						|
								   option. Otherwise, you may compile a binary that crashes randomly.
							 | 
						|
								   Also use -felide-constructors and -fno-rtti along with
							 | 
						|
								   -fno-exceptions. When in doubt, do the following:
							 | 
						|
								CFLAGS="-O3" CXX=gcc CXXFLAGS="-O3 -felide-constructors \
							 | 
						|
								       -fno-exceptions -fno-rtti" ./configure \
							 | 
						|
								       --prefix=/usr/local/mysql --enable-assembler \
							 | 
						|
								       --with-mysqld-ldflags=-all-static
							 | 
						|
								
							 | 
						|
								   On most systems, this gives you a fast and stable binary.
							 | 
						|
								
							 | 
						|
								   If you run into problems and need to file a bug report, please use
							 | 
						|
								   the instructions in Section 1.7, "How to Report Bugs or Problems."
							 | 
						|
								
							 | 
						|
								2.3.1. Source Installation Overview
							 | 
						|
								
							 | 
						|
								   The basic commands that you must execute to install a MySQL source
							 | 
						|
								   distribution are:
							 | 
						|
								shell> groupadd mysql
							 | 
						|
								shell> useradd -g mysql mysql
							 | 
						|
								shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
							 | 
						|
								shell> cd mysql-VERSION
							 | 
						|
								shell> ./configure --prefix=/usr/local/mysql
							 | 
						|
								shell> make
							 | 
						|
								shell> make install
							 | 
						|
								shell> cp support-files/my-medium.cnf /etc/my.cnf
							 | 
						|
								shell> cd /usr/local/mysql
							 | 
						|
								shell> chown -R mysql .
							 | 
						|
								shell> chgrp -R mysql .
							 | 
						|
								shell> bin/mysql_install_db --user=mysql
							 | 
						|
								shell> chown -R root .
							 | 
						|
								shell> chown -R mysql var
							 | 
						|
								shell> bin/mysqld_safe --user=mysql &
							 | 
						|
								
							 | 
						|
								   If you start from a source RPM, do the following:
							 | 
						|
								shell> rpmbuild --rebuild --clean MySQL-VERSION.src.rpm
							 | 
						|
								
							 | 
						|
								   This makes a binary RPM that you can install. For older versions
							 | 
						|
								   of RPM, you may have to replace the command rpmbuild with rpm
							 | 
						|
								   instead.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   This procedure does not set up any passwords for MySQL accounts.
							 | 
						|
								   After following the procedure, proceed to Section 2.13,
							 | 
						|
								   "Post-Installation Setup and Testing," for post-installation setup
							 | 
						|
								   and testing.
							 | 
						|
								
							 | 
						|
								   A more detailed version of the preceding description for
							 | 
						|
								   installing MySQL from a source distribution follows:
							 | 
						|
								
							 | 
						|
								    1. Add a login user and group for mysqld to run as:
							 | 
						|
								shell> groupadd mysql
							 | 
						|
								shell> useradd -g mysql mysql
							 | 
						|
								       These commands add the mysql group and the mysql user. The
							 | 
						|
								       syntax for useradd and groupadd may differ slightly on
							 | 
						|
								       different versions of Unix, or they may have different names
							 | 
						|
								       such as adduser and addgroup.
							 | 
						|
								       You might want to call the user and group something else
							 | 
						|
								       instead of mysql. If so, substitute the appropriate name in
							 | 
						|
								       the following steps.
							 | 
						|
								
							 | 
						|
								    2. Perform the following steps as the mysql user, except as
							 | 
						|
								       noted.
							 | 
						|
								
							 | 
						|
								    3. Pick the directory under which you want to unpack the
							 | 
						|
								       distribution and change location into it.
							 | 
						|
								
							 | 
						|
								    4. Obtain a distribution file using the instructions in Section
							 | 
						|
								       2.1.3, "How to Get MySQL."
							 | 
						|
								
							 | 
						|
								    5. Unpack the distribution into the current directory:
							 | 
						|
								shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
							 | 
						|
								       This command creates a directory named mysql-VERSION.
							 | 
						|
								       With GNU tar, no separate invocation of gunzip is necessary.
							 | 
						|
								       You can use the following alternative command to uncompress
							 | 
						|
								       and extract the distribution:
							 | 
						|
								shell> tar zxvf /path/to/mysql-VERSION-OS.tar.gz
							 | 
						|
								
							 | 
						|
								    6. Change location into the top-level directory of the unpacked
							 | 
						|
								       distribution:
							 | 
						|
								shell> cd mysql-VERSION
							 | 
						|
								       Note that currently you must configure and build MySQL from
							 | 
						|
								       this top-level directory. You cannot build it in a different
							 | 
						|
								       directory.
							 | 
						|
								
							 | 
						|
								    7. Configure the release and compile everything:
							 | 
						|
								shell> ./configure --prefix=/usr/local/mysql
							 | 
						|
								shell> make
							 | 
						|
								       When you run configure, you might want to specify other
							 | 
						|
								       options. Run ./configure --help for a list of options. Section
							 | 
						|
								       2.3.2, "Typical configure Options," discusses some of the more
							 | 
						|
								       useful options.
							 | 
						|
								       If configure fails and you are going to send mail to a MySQL
							 | 
						|
								       mailing list to ask for assistance, please include any lines
							 | 
						|
								       from config.log that you think can help solve the problem.
							 | 
						|
								       Also include the last couple of lines of output from
							 | 
						|
								       configure. To file a bug report, please use the instructions
							 | 
						|
								       in Section 1.7, "How to Report Bugs or Problems."
							 | 
						|
								       If the compile fails, see Section 2.3.4, "Dealing with
							 | 
						|
								       Problems Compiling MySQL," for help.
							 | 
						|
								
							 | 
						|
								    8. Install the distribution:
							 | 
						|
								shell> make install
							 | 
						|
								       You might need to run this command as root.
							 | 
						|
								       If you want to set up an option file, use one of those present
							 | 
						|
								       in the support-files directory as a template. For example:
							 | 
						|
								shell> cp support-files/my-medium.cnf /etc/my.cnf
							 | 
						|
								       You might need to run this command as root.
							 | 
						|
								       If you want to configure support for InnoDB tables, you should
							 | 
						|
								       edit the /etc/my.cnf file, remove the # character before the
							 | 
						|
								       option lines that start with innodb_..., and modify the option
							 | 
						|
								       values to be what you want. See Section 4.2.3.3, "Using Option
							 | 
						|
								       Files," and Section 13.6.2, "InnoDB Configuration."
							 | 
						|
								
							 | 
						|
								    9. Change location into the installation directory:
							 | 
						|
								shell> cd /usr/local/mysql
							 | 
						|
								   10. If you ran the make install command as root, the installed
							 | 
						|
								       files will be owned by root. Ensure that the installation is
							 | 
						|
								       accessible to mysql by executing the following commands as
							 | 
						|
								       root in the installation directory:
							 | 
						|
								shell> chown -R mysql .
							 | 
						|
								shell> chgrp -R mysql .
							 | 
						|
								       The first command changes the owner attribute of the files to
							 | 
						|
								       the mysql user. The second changes the group attribute to the
							 | 
						|
								       mysql group.
							 | 
						|
								   11. If you have not installed MySQL before, you must create the
							 | 
						|
								       MySQL data directory and initialize the grant tables:
							 | 
						|
								shell> bin/mysql_install_db --user=mysql
							 | 
						|
								       If you run the command as root, include the --user option as
							 | 
						|
								       shown. If you run the command while logged in as mysql, you
							 | 
						|
								       can omit the --user option.
							 | 
						|
								       The command should create the data directory and its contents
							 | 
						|
								       with mysql as the owner.
							 | 
						|
								       After using mysql_install_db to create the grant tables for
							 | 
						|
								       MySQL, you must restart the server manually. The mysqld_safe
							 | 
						|
								       command to do this is shown in a later step.
							 | 
						|
								   12. Most of the MySQL installation can be owned by root if you
							 | 
						|
								       like. The exception is that the data directory must be owned
							 | 
						|
								       by mysql. To accomplish this, run the following commands as
							 | 
						|
								       root in the installation directory:
							 | 
						|
								shell> chown -R root .
							 | 
						|
								shell> chown -R mysql var
							 | 
						|
								   13. If you want MySQL to start automatically when you boot your
							 | 
						|
								       machine, you can copy support-files/mysql.server to the
							 | 
						|
								       location where your system has its startup files. More
							 | 
						|
								       information can be found in the support-files/mysql.server
							 | 
						|
								       script itself; see also Section 2.13.1.2, "Starting and
							 | 
						|
								       Stopping MySQL Automatically."
							 | 
						|
								   14. You can set up new accounts using the bin/mysql_setpermission
							 | 
						|
								       script if you install the DBI and DBD::mysql Perl modules. See
							 | 
						|
								       Section 4.6.14, "mysql_setpermission --- Interactively Set
							 | 
						|
								       Permissions in Grant Tables." For Perl module installation
							 | 
						|
								       instructions, see Section 2.15, "Perl Installation Notes."
							 | 
						|
								
							 | 
						|
								   After everything has been installed, you should test your
							 | 
						|
								   distribution. To start the MySQL server, use the following
							 | 
						|
								   command:
							 | 
						|
								shell> /usr/local/mysql/bin/mysqld_safe --user=mysql &
							 | 
						|
								
							 | 
						|
								   If you run the command as root, you should use the --user option
							 | 
						|
								   as shown. The value of the option is the name of the login account
							 | 
						|
								   that you created in the first step to use for running the server.
							 | 
						|
								   If you run the command while logged in as that user, you can omit
							 | 
						|
								   the --user option.
							 | 
						|
								
							 | 
						|
								   If the command fails immediately and prints mysqld ended, you can
							 | 
						|
								   find some information in the host_name.err file in the data
							 | 
						|
								   directory.
							 | 
						|
								
							 | 
						|
								   More information about mysqld_safe is given in Section 4.3.2,
							 | 
						|
								   "mysqld_safe --- MySQL Server Startup Script."
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   The accounts that are listed in the MySQL grant tables initially
							 | 
						|
								   have no passwords. After starting the server, you should set up
							 | 
						|
								   passwords for them using the instructions in Section 2.13,
							 | 
						|
								   "Post-Installation Setup and Testing."
							 | 
						|
								
							 | 
						|
								2.3.2. Typical configure Options
							 | 
						|
								
							 | 
						|
								   The configure script gives you a great deal of control over how
							 | 
						|
								   you configure a MySQL source distribution. Typically you do this
							 | 
						|
								   using options on the configure command line. You can also affect
							 | 
						|
								   configure using certain environment variables. See Section 2.14,
							 | 
						|
								   "Environment Variables." For a full list of options supported by
							 | 
						|
								   configure, run this command:
							 | 
						|
								shell> ./configure --help
							 | 
						|
								
							 | 
						|
								   A list of the available configure options is provided in the table
							 | 
						|
								   below.
							 | 
						|
								
							 | 
						|
								   Table 2.1. Build (configure) Reference
							 | 
						|
								   Formats Description Default Introduced Removed
							 | 
						|
								   --bindir=DIR User executables EPREFIX/bin
							 | 
						|
								   --build=BUILD Configure for building on BUILD guessed
							 | 
						|
								   --cache-file=FILE Cache test results in FILE disabled
							 | 
						|
								   -C Alias for `--cache-file=config.cache'
							 | 
						|
								   --config-cache
							 | 
						|
								   --datadir=DIR Read-only architecture-independent data PREFIX/share
							 | 
						|
								
							 | 
						|
								   --disable-FEATURE Do not include FEATURE
							 | 
						|
								   --disable-dependency-tracking Disable dependency tracking
							 | 
						|
								   --disable-grant-options Disable GRANT options
							 | 
						|
								   --disable-largefile Omit support for large files
							 | 
						|
								   --disable-libtool-lock Disable libtool lock
							 | 
						|
								   --disable-thread-safe-client Compile the client without threads
							 | 
						|
								   5.1.7
							 | 
						|
								   --enable-FEATURE Enable FEATURE
							 | 
						|
								   --enable-assembler Use assembler versions of some string functions
							 | 
						|
								   if available
							 | 
						|
								   --enable-debug-sync Compile in Debug Sync facility   5.1.41
							 | 
						|
								   --enable-dependency-tracking Do not reject slow dependency
							 | 
						|
								   extractors
							 | 
						|
								   --enable-fast-install Optimize for fast installation yes
							 | 
						|
								   --enable-local-infile Enable LOAD DATA LOCAL INFILE disabled
							 | 
						|
								   --enable-shared Build shared libraries yes
							 | 
						|
								   --enable-static Build static libraries yes
							 | 
						|
								   --enable-thread-safe-client Compile the client with threads
							 | 
						|
								   --exec-prefix=EPREFIX Install architecture-dependent files in
							 | 
						|
								   EPREFIX
							 | 
						|
								   -h Display this help and exit
							 | 
						|
								   --help
							 | 
						|
								   --help=short Display options specific to this package
							 | 
						|
								   --help=recursive Display the short help of all the included
							 | 
						|
								   packages
							 | 
						|
								   --host=HOST Cross-compile to build programs to run on HOST
							 | 
						|
								   --includedir=DIR C header files PREFIX/include
							 | 
						|
								   --infodir=DIR Info documentation PREFIX/info
							 | 
						|
								   --libdir=DIR Object code libraries EPREFIX/lib
							 | 
						|
								   --libexecdir=DIR Program executables EPREFIX/libexec
							 | 
						|
								   --localstatedir=DIR Modifiable single-machine data PREFIX/var
							 | 
						|
								   --mandir=DIR man documentation PREFIX/man
							 | 
						|
								   -n Do not create output files
							 | 
						|
								   --no-create
							 | 
						|
								   --oldincludedir=DIR C header files for non-gcc /usr/include
							 | 
						|
								   --prefix=PREFIX Install architecture-independent files in PREFIX
							 | 
						|
								
							 | 
						|
								   --program-prefix=PREFIX Prepend PREFIX to installed program names
							 | 
						|
								
							 | 
						|
								   --program-suffix=SUFFIX Append SUFFIX to installed program names
							 | 
						|
								
							 | 
						|
								   --program-transform-name=PROGRAM run sed PROGRAM on installed
							 | 
						|
								   program names
							 | 
						|
								   -q Do not print `checking...' messages
							 | 
						|
								   --quiet
							 | 
						|
								   --sbindir=DIR System admin executables EPREFIX/sbin
							 | 
						|
								   --sharedstatedir=DIR Modifiable architecture-independent data
							 | 
						|
								   PREFIX/com
							 | 
						|
								   --srcdir=DIR Find the sources in DIR configure directory or ..
							 | 
						|
								   --sysconfdir=DIR Read-only single-machine data PREFIX/etc
							 | 
						|
								   --target=TARGET Configure for building compilers for TARGET
							 | 
						|
								   -V Display version information and exit
							 | 
						|
								   --version
							 | 
						|
								   --with-PACKAGE Use PACKAGE
							 | 
						|
								   --with-archive-storage-engine Enable the Archive Storage Engine no
							 | 
						|
								
							 | 
						|
								   --with-atomic-ops Implement atomic operations using pthread
							 | 
						|
								   rwlocks or atomic CPU instructions for multi-processor   5.1.12
							 | 
						|
								   --with-berkeley-db Use BerkeleyDB located in DIR no
							 | 
						|
								   --with-berkeley-db-includes Find Berkeley DB headers in DIR
							 | 
						|
								   --with-berkeley-db-libs Find Berkeley DB libraries in DIR
							 | 
						|
								   --with-big-tables Support tables with more than 4 G rows even on
							 | 
						|
								   32 bit platforms
							 | 
						|
								   --with-blackhole-storage-engine Enable the Blackhole Storage
							 | 
						|
								   Engine no
							 | 
						|
								   --with-charset Default character set
							 | 
						|
								   --with-client-ldflags Extra linking arguments for clients
							 | 
						|
								   --with-collation Default collation
							 | 
						|
								   --with-comment Comment about compilation environment
							 | 
						|
								   --with-csv-storage-engine Enable the CSV Storage Engine yes
							 | 
						|
								   --with-darwin-mwcc Use Metrowerks CodeWarrior wrappers on OS
							 | 
						|
								   X/Darwin
							 | 
						|
								   --with-debug Add debug code   5.1.7
							 | 
						|
								   --with-debug=full Add debug code (adds memory checker, very slow)
							 | 
						|
								
							 | 
						|
								   --with-embedded-privilege-control Build parts to check user's
							 | 
						|
								   privileges (only affects embedded library)
							 | 
						|
								   --with-embedded-server Build the embedded server
							 | 
						|
								   --with-error-inject Enable error injection in MySQL Server
							 | 
						|
								   5.1.11
							 | 
						|
								   --with-example-storage-engine Enable the Example Storage Engine no
							 | 
						|
								
							 | 
						|
								   --with-extra-charsets Use charsets in addition to default
							 | 
						|
								   --with-fast-mutexes Compile with fast mutexes enabled 5.1.5
							 | 
						|
								   --with-federated-storage-engine Enable federated storage engine no
							 | 
						|
								   5.1.3 5.1.9
							 | 
						|
								   --with-gnu-ld Assume the C compiler uses GNU ld no
							 | 
						|
								   --with-innodb Enable innobase storage engine no 5.1.3 5.1.9
							 | 
						|
								   --with-lib-ccflags Extra CC options for libraries
							 | 
						|
								   --with-libwrap=DIR Compile in libwrap (tcp_wrappers) support
							 | 
						|
								   --with-low-memory Try to use less memory to compile to avoid
							 | 
						|
								   memory limitations
							 | 
						|
								   --with-machine-type Set the machine type, like "powerpc"
							 | 
						|
								   --with-max-indexes=N Sets the maximum number of indexes per table
							 | 
						|
								   64
							 | 
						|
								   --with-mysqld-ldflags Extra linking arguments for mysqld
							 | 
						|
								   --with-mysqld-libs Extra libraries to link with for mysqld
							 | 
						|
								   --with-mysqld-user What user the mysqld daemon shall be run as
							 | 
						|
								
							 | 
						|
								   --with-mysqlmanager Build the mysqlmanager binary Build if server
							 | 
						|
								   is built
							 | 
						|
								   --with-named-curses-libs Use specified curses libraries
							 | 
						|
								   --with-named-thread-libs Use specified thread libraries
							 | 
						|
								   --with-ndb-ccflags Extra CC options for ndb compile
							 | 
						|
								   --with-ndb-docs Include the NDB Cluster ndbapi and mgmapi
							 | 
						|
								   documentation
							 | 
						|
								   --with-ndb-port Port for NDB Cluster management server
							 | 
						|
								   --with-ndb-port-base Port for NDB Cluster management server
							 | 
						|
								   --with-ndb-sci=DIR Provide MySQL with a custom location of sci
							 | 
						|
								   library
							 | 
						|
								   --with-ndb-test Include the NDB Cluster ndbapi test programs
							 | 
						|
								   --with-ndbcluster Include the NDB Cluster table handler no
							 | 
						|
								   --with-openssl=DIR Include the OpenSSL support
							 | 
						|
								   --with-openssl-includes Find OpenSSL headers in DIR
							 | 
						|
								   --with-openssl-libs Find OpenSSL libraries in DIR
							 | 
						|
								   --with-other-libc=DIR Link against libc and other standard
							 | 
						|
								   libraries installed in the specified nonstandard location
							 | 
						|
								   --with-pic Try to use only PIC/non-PIC objects Use both
							 | 
						|
								   --with-plugin-PLUGIN Forces the named plugin to be linked into
							 | 
						|
								   mysqld statically   5.1.11
							 | 
						|
								   --with-plugins Plugins to include in mysqld none 5.1.11
							 | 
						|
								   --with-pstack Use the pstack backtrace library
							 | 
						|
								   --with-pthread Force use of pthread library
							 | 
						|
								   --with-row-based-replication Include row-based replication   5.1.5
							 | 
						|
								   5.1.6
							 | 
						|
								   --with-server-suffix Append value to the version string
							 | 
						|
								   --with-ssl=DIR Include SSL support   5.1.11
							 | 
						|
								   --with-system-type Set the system type, like "sun-solaris10"
							 | 
						|
								   --with-tags Include additional configurations automatic
							 | 
						|
								   --with-tcp-port Which port to use for MySQL services 3306
							 | 
						|
								   --with-unix-socket-path Where to put the unix-domain socket
							 | 
						|
								   --with-yassl Include the yaSSL support
							 | 
						|
								   --with-zlib-dir=no|bundled|DIR Provide MySQL with a custom
							 | 
						|
								   location of compression library
							 | 
						|
								   --without-PACKAGE Do not use PACKAGE
							 | 
						|
								   --without-bench Skip building of the benchmark suite
							 | 
						|
								   --without-debug Build a production version without debugging code
							 | 
						|
								
							 | 
						|
								   --without-docs Skip building of the documentation
							 | 
						|
								   --without-extra-tools Skip building utilities in the tools
							 | 
						|
								   directory
							 | 
						|
								   --without-geometry Do not build geometry-related parts
							 | 
						|
								   --without-libedit Use system libedit instead of bundled copy
							 | 
						|
								   --without-man Skip building of the man pages
							 | 
						|
								   --without-ndb-binlog Disable ndb binlog   5.1.6
							 | 
						|
								   --without-ndb-debug Disable special ndb debug features
							 | 
						|
								   --without-plugin-PLUGIN Exclude PLUGIN   5.1.11
							 | 
						|
								   --without-query-cache Do not build query cache
							 | 
						|
								   --without-readline Use system readline instead of bundled copy
							 | 
						|
								
							 | 
						|
								   --without-row-based-replication Don't include row-based
							 | 
						|
								   replication   5.1.7 5.1.14
							 | 
						|
								   --without-server Only build the client
							 | 
						|
								   --without-uca Skip building of the national Unicode collations
							 | 
						|
								
							 | 
						|
								   Some of the configure options available are described here. For
							 | 
						|
								   options that may be of use if you have difficulties building
							 | 
						|
								   MySQL, see Section 2.3.4, "Dealing with Problems Compiling MySQL."
							 | 
						|
								
							 | 
						|
								     * To compile just the MySQL client libraries and client programs
							 | 
						|
								       and not the server, use the --without-server option:
							 | 
						|
								shell> ./configure --without-server
							 | 
						|
								       If you have no C++ compiler, some client programs such as
							 | 
						|
								       mysql cannot be compiled because they require C++.. In this
							 | 
						|
								       case, you can remove the code in configure that tests for the
							 | 
						|
								       C++ compiler and then run ./configure with the
							 | 
						|
								       --without-server option. The compile step should still try to
							 | 
						|
								       build all clients, but you can ignore any warnings about files
							 | 
						|
								       such as mysql.cc. (If make stops, try make -k to tell it to
							 | 
						|
								       continue with the rest of the build even if errors occur.)
							 | 
						|
								
							 | 
						|
								     * If you want to build the embedded MySQL library (libmysqld.a),
							 | 
						|
								       use the --with-embedded-server option.
							 | 
						|
								
							 | 
						|
								     * If you don't want your log files and database directories
							 | 
						|
								       located under /usr/local/var, use a configure command
							 | 
						|
								       something like one of these:
							 | 
						|
								shell> ./configure --prefix=/usr/local/mysql
							 | 
						|
								shell> ./configure --prefix=/usr/local \
							 | 
						|
								           --localstatedir=/usr/local/mysql/data
							 | 
						|
								       The first command changes the installation prefix so that
							 | 
						|
								       everything is installed under /usr/local/mysql rather than the
							 | 
						|
								       default of /usr/local. The second command preserves the
							 | 
						|
								       default installation prefix, but overrides the default
							 | 
						|
								       location for database directories (normally /usr/local/var)
							 | 
						|
								       and changes it to /usr/local/mysql/data.
							 | 
						|
								       You can also specify the installation directory and data
							 | 
						|
								       directory locations at server startup time by using the
							 | 
						|
								       --basedir and --datadir options. These can be given on the
							 | 
						|
								       command line or in an MySQL option file, although it is more
							 | 
						|
								       common to use an option file. See Section 4.2.3.3, "Using
							 | 
						|
								       Option Files."
							 | 
						|
								
							 | 
						|
								     * This option specifies the port number on which the server
							 | 
						|
								       listens for TCP/IP connections. The default is port 3306. To
							 | 
						|
								       listen on a different port, use a configure command like this:
							 | 
						|
								shell> ./configure --with-tcp-port=3307
							 | 
						|
								
							 | 
						|
								     * If you are using Unix and you want the MySQL socket file
							 | 
						|
								       location to be somewhere other than the default location
							 | 
						|
								       (normally in the directory /tmp or /var/run), use a configure
							 | 
						|
								       command like this:
							 | 
						|
								shell> ./configure \
							 | 
						|
								           --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
							 | 
						|
								       The socket file name must be an absolute path name. You can
							 | 
						|
								       also change the location of mysql.sock at server startup by
							 | 
						|
								       using a MySQL option file. See Section B.5.4.5, "How to
							 | 
						|
								       Protect or Change the MySQL Unix Socket File."
							 | 
						|
								
							 | 
						|
								     * If you want to compile statically linked programs (for
							 | 
						|
								       example, to make a binary distribution, to get better
							 | 
						|
								       performance, or to work around problems with some Red Hat
							 | 
						|
								       Linux distributions), run configure like this:
							 | 
						|
								shell> ./configure --with-client-ldflags=-all-static \
							 | 
						|
								           --with-mysqld-ldflags=-all-static
							 | 
						|
								
							 | 
						|
								     * If you are using gcc and don't have libg++ or libstdc++
							 | 
						|
								       installed, you can tell configure to use gcc as your C++
							 | 
						|
								       compiler:
							 | 
						|
								shell> CC=gcc CXX=gcc ./configure
							 | 
						|
								       When you use gcc as your C++ compiler, it does not attempt to
							 | 
						|
								       link in libg++ or libstdc++. This may be a good thing to do
							 | 
						|
								       even if you have those libraries installed. Some versions of
							 | 
						|
								       them have caused strange problems for MySQL users in the past.
							 | 
						|
								       The following list indicates some compilers and environment
							 | 
						|
								       variable settings that are commonly used with each one.
							 | 
						|
								
							 | 
						|
								          + gcc 2.7.2:
							 | 
						|
								CC=gcc CXX=gcc CXXFLAGS="-O3 -felide-constructors"
							 | 
						|
								
							 | 
						|
								          + gcc 2.95.2:
							 | 
						|
								CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \
							 | 
						|
								-felide-constructors -fno-exceptions -fno-rtti"
							 | 
						|
								
							 | 
						|
								          + pgcc 2.90.29 or newer:
							 | 
						|
								CFLAGS="-O3 -mpentiumpro -mstack-align-double" CXX=gcc \
							 | 
						|
								CXXFLAGS="-O3 -mpentiumpro -mstack-align-double \
							 | 
						|
								-felide-constructors -fno-exceptions -fno-rtti"
							 | 
						|
								       In most cases, you can get a reasonably optimized MySQL binary
							 | 
						|
								       by using the options from the preceding list and adding the
							 | 
						|
								       following options to the configure line:
							 | 
						|
								--prefix=/usr/local/mysql --enable-assembler \
							 | 
						|
								--with-mysqld-ldflags=-all-static
							 | 
						|
								       The full configure line would, in other words, be something
							 | 
						|
								       like the following for all recent gcc versions:
							 | 
						|
								CFLAGS="-O3 -mpentiumpro" CXX=gcc CXXFLAGS="-O3 -mpentiumpro \
							 | 
						|
								-felide-constructors -fno-exceptions -fno-rtti" ./configure \
							 | 
						|
								--prefix=/usr/local/mysql --enable-assembler \
							 | 
						|
								--with-mysqld-ldflags=-all-static
							 | 
						|
								       The binaries we provide on the MySQL Web site at
							 | 
						|
								       http://dev.mysql.com/downloads/ are all compiled with full
							 | 
						|
								       optimization and should be perfect for most users. See Section
							 | 
						|
								       2.2, "Installing MySQL from Generic Binaries on Unix/Linux."
							 | 
						|
								       There are some configuration settings you can tweak to build
							 | 
						|
								       an even faster binary, but these are only for advanced users.
							 | 
						|
								       See Section 7.5.1, "How Compiling and Linking Affects the
							 | 
						|
								       Speed of MySQL."
							 | 
						|
								       If the build fails and produces errors about your compiler or
							 | 
						|
								       linker not being able to create the shared library
							 | 
						|
								       libmysqlclient.so.N (where N is a version number), you can
							 | 
						|
								       work around this problem by giving the --disable-shared option
							 | 
						|
								       to configure. In this case, configure does not build a shared
							 | 
						|
								       libmysqlclient.so.N library.
							 | 
						|
								
							 | 
						|
								     * By default, MySQL uses the latin1 (cp1252 West European)
							 | 
						|
								       character set. To change the default set, use the
							 | 
						|
								       --with-charset option:
							 | 
						|
								shell> ./configure --with-charset=CHARSET
							 | 
						|
								       CHARSET may be one of binary, armscii8, ascii, big5, cp1250,
							 | 
						|
								       cp1251, cp1256, cp1257, cp850, cp852, cp866, cp932, dec8,
							 | 
						|
								       eucjpms, euckr, gb2312, gbk, geostd8, greek, hebrew, hp8,
							 | 
						|
								       keybcs2, koi8r, koi8u, latin1, latin2, latin5, latin7, macce,
							 | 
						|
								       macroman, sjis, swe7, tis620, ucs2, ujis, utf8. (Additional
							 | 
						|
								       character sets might be available. Check the output from
							 | 
						|
								       ./configure --help for the current list.)
							 | 
						|
								       The default collation may also be specified. MySQL uses the
							 | 
						|
								       latin1_swedish_ci collation by default. To change this, use
							 | 
						|
								       the --with-collation option:
							 | 
						|
								shell> ./configure --with-collation=COLLATION
							 | 
						|
								       To change both the character set and the collation, use both
							 | 
						|
								       the --with-charset and --with-collation options. The collation
							 | 
						|
								       must be a legal collation for the character set. (Use the SHOW
							 | 
						|
								       COLLATION statement to determine which collations are
							 | 
						|
								       available for each character set.)
							 | 
						|
								       With the configure option --with-extra-charsets=LIST, you can
							 | 
						|
								       define which additional character sets should be compiled into
							 | 
						|
								       the server. LIST is one of the following:
							 | 
						|
								
							 | 
						|
								          + A list of character set names separated by spaces
							 | 
						|
								
							 | 
						|
								          + complex to include all character sets that can't be
							 | 
						|
								            dynamically loaded
							 | 
						|
								
							 | 
						|
								          + all to include all character sets into the binaries
							 | 
						|
								       Clients that want to convert characters between the server and
							 | 
						|
								       the client should use the SET NAMES statement. See Section
							 | 
						|
								       5.1.5, "Session System Variables," and Section 9.1.4,
							 | 
						|
								       "Connection Character Sets and Collations."
							 | 
						|
								
							 | 
						|
								     * To configure MySQL with debugging code, use the --with-debug
							 | 
						|
								       option:
							 | 
						|
								shell> ./configure --with-debug
							 | 
						|
								       This causes a safe memory allocator to be included that can
							 | 
						|
								       find some errors and that provides output about what is
							 | 
						|
								       happening. See MySQL Internals: Porting
							 | 
						|
								       (http://forge.mysql.com/wiki/MySQL_Internals_Porting).
							 | 
						|
								       As of MySQL 5.1.12, using --with-debug to configure MySQL with
							 | 
						|
								       debugging support enables you to use the
							 | 
						|
								       --debug="d,parser_debug" option when you start the server.
							 | 
						|
								       This causes the Bison parser that is used to process SQL
							 | 
						|
								       statements to dump a parser trace to the server's standard
							 | 
						|
								       error output. Typically, this output is written to the error
							 | 
						|
								       log.
							 | 
						|
								
							 | 
						|
								     * To cause the Debug Sync facility to be compiled into the
							 | 
						|
								       server, use the --enable-debug-sync option. This facility is
							 | 
						|
								       used for testing and debugging. When compiled in, Debug Sync
							 | 
						|
								       is disabled by default. To enable it, start mysqld with the
							 | 
						|
								       --debug-sync-timeout=N option, where N is a timeout value
							 | 
						|
								       greater than 0. (The default value is 0, which disables Debug
							 | 
						|
								       Sync.) N becomes the default timeout for individual
							 | 
						|
								       synchronization points.
							 | 
						|
								       Debug Sync is also compiled in if you configure with the
							 | 
						|
								       --with-debug option (which implies --enable-debug-sync),
							 | 
						|
								       unless you also use the --disable-debug-sync option.
							 | 
						|
								       For a description of the Debug Sync facility and how to use
							 | 
						|
								       synchronization points, see MySQL Internals: Test
							 | 
						|
								       Synchronization
							 | 
						|
								       (http://forge.mysql.com/wiki/MySQL_Internals_Test_Synchronizat
							 | 
						|
								       ion).
							 | 
						|
								       The --enable-debug-sync and --disable-debug-sync options were
							 | 
						|
								       added in MySQL 5.1.41.
							 | 
						|
								
							 | 
						|
								     * If your client programs are using threads, you must compile a
							 | 
						|
								       thread-safe version of the MySQL client library with the
							 | 
						|
								       --enable-thread-safe-client configure option. This creates a
							 | 
						|
								       libmysqlclient_r library with which you should link your
							 | 
						|
								       threaded applications. See Section 21.9.16.2, "How to Make a
							 | 
						|
								       Threaded Client."
							 | 
						|
								
							 | 
						|
								     * Some features require that the server be built with
							 | 
						|
								       compression library support, such as the COMPRESS() and
							 | 
						|
								       UNCOMPRESS() functions, and compression of the client/server
							 | 
						|
								       protocol. The --with-zlib-dir=no|bundled|DIR option provides
							 | 
						|
								       control over compression library support. The value no
							 | 
						|
								       explicitly disables compression support. bundled causes the
							 | 
						|
								       zlib library bundled in the MySQL sources to be used. A DIR
							 | 
						|
								       path name specifies the directory in which to find the
							 | 
						|
								       compression library sources.
							 | 
						|
								
							 | 
						|
								     * It is possible to build MySQL with large table support using
							 | 
						|
								       the --with-big-tables option.
							 | 
						|
								       This option causes the variables that store table row counts
							 | 
						|
								       to be declared as unsigned long long rather than unsigned
							 | 
						|
								       long. This enables tables to hold up to approximately
							 | 
						|
								       1.844E+19 ((2^32)^2) rows rather than 2^32 (~4.295E+09) rows.
							 | 
						|
								       Previously it was necessary to pass -DBIG_TABLES to the
							 | 
						|
								       compiler manually in order to enable this feature.
							 | 
						|
								
							 | 
						|
								     * Run configure with the --disable-grant-options option to cause
							 | 
						|
								       the --bootstrap, --skip-grant-tables, and --init-file options
							 | 
						|
								       for mysqld to be disabled. For Windows, the configure.js
							 | 
						|
								       script recognizes the DISABLE_GRANT_OPTIONS flag, which has
							 | 
						|
								       the same effect. The capability is available as of MySQL
							 | 
						|
								       5.1.15.
							 | 
						|
								
							 | 
						|
								     * This option allows MySQL Community Server features to be
							 | 
						|
								       enabled. Additional options may be required for individual
							 | 
						|
								       features, such as --enable-profiling to enable statement
							 | 
						|
								       profiling. This option was added in MySQL 5.1.24. It is
							 | 
						|
								       enabled by default as of MySQL 5.1.28; to disable it, use
							 | 
						|
								       --disable-community-features.
							 | 
						|
								
							 | 
						|
								     * When given with --enable-community-features, the
							 | 
						|
								       --enable-profiling option enables the statement profiling
							 | 
						|
								       capability exposed by the SHOW PROFILE and SHOW PROFILES
							 | 
						|
								       statements. (See Section 12.4.5.33, "SHOW PROFILES Syntax.")
							 | 
						|
								       This option was added in MySQL 5.1.24. It is enabled by
							 | 
						|
								       default as of MySQL 5.1.28; to disable it, use
							 | 
						|
								       --disable-profiling.
							 | 
						|
								
							 | 
						|
								     * See Section 2.1, "General Installation Guidance," for options
							 | 
						|
								       that pertain to particular operating systems.
							 | 
						|
								
							 | 
						|
								     * See Section 5.5.6.2, "Using SSL Connections," for options that
							 | 
						|
								       pertain to configuring MySQL to support secure (encrypted)
							 | 
						|
								       connections.
							 | 
						|
								
							 | 
						|
								     * Several configure options apply to plugin selection and
							 | 
						|
								       building:
							 | 
						|
								--with-plugins=PLUGIN[,PLUGIN]...
							 | 
						|
								--with-plugins=GROUP
							 | 
						|
								--with-plugin-PLUGIN
							 | 
						|
								--without-plugin-PLUGIN
							 | 
						|
								       PLUGIN is an individual plugin name such as csv or archive.
							 | 
						|
								       As shorthand, GROUP is a configuration group name such as none
							 | 
						|
								       (select no plugins) or all (select all plugins).
							 | 
						|
								       You can build a plugin as static (compiled into the server) or
							 | 
						|
								       dynamic (built as a dynamic library that must be installed
							 | 
						|
								       using the INSTALL PLUGIN statement before it can be used).
							 | 
						|
								       Some plugins might not support static or dynamic build.
							 | 
						|
								       configure --help shows the following information pertaining to
							 | 
						|
								       plugins:
							 | 
						|
								
							 | 
						|
								          + The plugin-related options
							 | 
						|
								
							 | 
						|
								          + The names of all available plugins
							 | 
						|
								
							 | 
						|
								          + For each plugin, a description of its purpose, which
							 | 
						|
								            build types it supports (static or dynamic), and which
							 | 
						|
								            plugin groups it is a part of.
							 | 
						|
								       --with-plugins can take a list of one or more plugin names
							 | 
						|
								       separated by commas, or a plugin group name. The named plugins
							 | 
						|
								       are configured to be built as static plugins.
							 | 
						|
								       --with-plugin-PLUGIN configures the given plugin to be built
							 | 
						|
								       as a static plugin.
							 | 
						|
								       --without-plugin-PLUGIN disables the given plugin from being
							 | 
						|
								       built.
							 | 
						|
								       If a plugin is named both with a --with and --without option,
							 | 
						|
								       the result is undefined.
							 | 
						|
								       For any plugin that is not explicitly selected or disabled, it
							 | 
						|
								       is selected to be built dynamically if it supports dynamic
							 | 
						|
								       build, and not built if it does not support dynamic build.
							 | 
						|
								       (Thus, in the case that no plugin options are given, all
							 | 
						|
								       plugins that support dynamic build are selected to be built as
							 | 
						|
								       dynamic plugins. Plugins that do not support dynamic build are
							 | 
						|
								       not built.)
							 | 
						|
								
							 | 
						|
								2.3.3. Installing from the Development Source Tree
							 | 
						|
								
							 | 
						|
								Caution
							 | 
						|
								
							 | 
						|
								   You should read this section only if you are interested in helping
							 | 
						|
								   us test our new code. If you just want to get MySQL up and running
							 | 
						|
								   on your system, you should use a standard release distribution
							 | 
						|
								   (either a binary or source distribution).
							 | 
						|
								
							 | 
						|
								   To obtain the most recent development source tree, you must have
							 | 
						|
								   Bazaar installed. You can obtain Bazaar from the Bazaar VCS Web
							 | 
						|
								   site (http://bazaar-vcs.org). Bazaar is supported by any platform
							 | 
						|
								   that supports Python, and is therefore compatible with any Linux,
							 | 
						|
								   Unix, Windows or Mac OS X host. Instructions for downloading and
							 | 
						|
								   installing Bazaar on the different platforms are available on the
							 | 
						|
								   Bazaar Web site.
							 | 
						|
								
							 | 
						|
								   All MySQL projects are hosted on Launchpad
							 | 
						|
								   (http://launchpad.net/). MySQL projects, including MySQL server,
							 | 
						|
								   MySQL Workbench, and others are available from the Sun/MySQL
							 | 
						|
								   Engineering (http://launchpad.net/~mysql) page. For the
							 | 
						|
								   repositories related only to MySQL server, see the MySQL Server
							 | 
						|
								   (http://launchpad.net/mysql-server) page.
							 | 
						|
								
							 | 
						|
								   To build under Unix/Linux, you must have the following tools
							 | 
						|
								   installed:
							 | 
						|
								
							 | 
						|
								     * GNU make, available from http://www.gnu.org/software/make/.
							 | 
						|
								       Although some platforms come with their own make
							 | 
						|
								       implementations, it is highly recommended that you use GNU
							 | 
						|
								       make. It may already be available on your system as gmake.
							 | 
						|
								
							 | 
						|
								     * autoconf 2.58 (or newer), available from
							 | 
						|
								       http://www.gnu.org/software/autoconf/.
							 | 
						|
								
							 | 
						|
								     * automake 1.8.1, available from
							 | 
						|
								       http://www.gnu.org/software/automake/.
							 | 
						|
								
							 | 
						|
								     * libtool 1.5, available from
							 | 
						|
								       http://www.gnu.org/software/libtool/.
							 | 
						|
								
							 | 
						|
								     * m4, available from http://www.gnu.org/software/m4/.
							 | 
						|
								
							 | 
						|
								     * bison, available from http://www.gnu.org/software/bison/. You
							 | 
						|
								       should use the latest version of bison where possible. Version
							 | 
						|
								       1.75 and version 2.1 are known to work. There have been
							 | 
						|
								       reported problems with bison 1.875. If you experience
							 | 
						|
								       problems, upgrade to a later, rather than earlier, version.
							 | 
						|
								       Versions of bison older than 1.75 may report this error:
							 | 
						|
								sql_yacc.yy:#####: fatal error: maximum table size (32767) exceeded
							 | 
						|
								       The maximum table size is not actually exceeded; the error is
							 | 
						|
								       caused by bugs in older versions of bison.
							 | 
						|
								
							 | 
						|
								   To build under Windows you must have Microsoft Visual C++ 2005
							 | 
						|
								   Express Edition, Visual Studio .Net 2003 (7.1), or Visual Studio
							 | 
						|
								   2005 (8.0) compiler system.
							 | 
						|
								
							 | 
						|
								   Once the necessary tools are installed, you must create a local
							 | 
						|
								   branch of the MySQL source code on your machine:
							 | 
						|
								
							 | 
						|
								    1. To obtain a copy of the MySQL source code, you must create a
							 | 
						|
								       new Bazaar branch. If you do not already have a Bazaar
							 | 
						|
								       repository directory set up, you need to initialize a new
							 | 
						|
								       directory:
							 | 
						|
								shell> mkdir mysql-server
							 | 
						|
								shell> bzr init-repo --trees mysql-server
							 | 
						|
								
							 | 
						|
								    2. Once you have an initialized directory, you can branch from
							 | 
						|
								       the public MySQL server repositories to create a local source
							 | 
						|
								       tree. To create a branch of a specific version:
							 | 
						|
								shell> cd mysql-server
							 | 
						|
								shell> bzr branch lp:mysql-server/5.1 mysql-5.1
							 | 
						|
								
							 | 
						|
								    3. The initial download will take some time to complete,
							 | 
						|
								       depending on the speed of your connection. Please be patient.
							 | 
						|
								       Once you have downloaded the first tree, additional trees
							 | 
						|
								       should take significantly less time to download.
							 | 
						|
								
							 | 
						|
								    4. When building from the Bazaar branch, you may want to create a
							 | 
						|
								       copy of your active branch so that you can make configuration
							 | 
						|
								       and other changes without affecting the original branch
							 | 
						|
								       contents. You can achieve this by branching from the original
							 | 
						|
								       branch:
							 | 
						|
								shell> bzr branch mysql-5.1 mysql-5.1-build
							 | 
						|
								
							 | 
						|
								    5. To obtain changes made after you have set up the branch
							 | 
						|
								       initially, update it using the pull option periodically. Use
							 | 
						|
								       this command in the top-level directory of the local copy:
							 | 
						|
								shell> bzr pull
							 | 
						|
								       You can examine the changeset comments for the tree by using
							 | 
						|
								       the log option to bzr:
							 | 
						|
								shell> bzr log
							 | 
						|
								       You can also browse changesets, comments, and source code
							 | 
						|
								       online. To browse this information for MySQL 5.1, go to the
							 | 
						|
								       Launchpad MySQL Server (http://launchpad.net/mysql-server)
							 | 
						|
								       page.
							 | 
						|
								       If you see diffs (changes) or code that you have a question
							 | 
						|
								       about, do not hesitate to send email to the MySQL internals
							 | 
						|
								       mailing list. See Section 1.6.1, "MySQL Mailing Lists." Also,
							 | 
						|
								       if you think you have a better idea on how to do something,
							 | 
						|
								       send an email message to the list with a patch.
							 | 
						|
								
							 | 
						|
								   After you have the local branch, you can build MySQL server from
							 | 
						|
								   the source code. On Windows, the build process is different from
							 | 
						|
								   Unix/Linux: see Section 2.5.10, "Installing MySQL from Source on
							 | 
						|
								   Windows."
							 | 
						|
								
							 | 
						|
								   On Unix/Linux, use the autoconf system to create the configure
							 | 
						|
								   script so that you can configure the build environment before
							 | 
						|
								   building. The following example shows the typical commands
							 | 
						|
								   required to build MySQL from a source tree.
							 | 
						|
								
							 | 
						|
								    1. Change location to the top-level directory of the source tree;
							 | 
						|
								       replace mysql-5.1 with the appropriate directory name.
							 | 
						|
								shell> cd mysql-5.1
							 | 
						|
								
							 | 
						|
								    2. Prepare the source tree for configuration.
							 | 
						|
								       Prior to MySQL 5.1.12, you must separately configure the
							 | 
						|
								       InnoDB storage engine. Run the following command from the main
							 | 
						|
								       source directory:
							 | 
						|
								shell> (cd storage/innobase; autoreconf --force --install)
							 | 
						|
								       You can omit the previous command for MySQL 5.1.12 and later,
							 | 
						|
								       or if you do not require InnoDB support.
							 | 
						|
								       Prepare the remainder of the source tree:
							 | 
						|
								shell> autoreconf --force --install
							 | 
						|
								       As an alternative to the preceding autoreconf command, you can
							 | 
						|
								       use BUILD/autorun.sh, which acts as a shortcut for the
							 | 
						|
								       following sequence of commands:
							 | 
						|
								shell> aclocal; autoheader
							 | 
						|
								shell> libtoolize --automake --force
							 | 
						|
								shell> automake --force --add-missing; autoconf
							 | 
						|
								       If you get some strange errors during this stage, verify that
							 | 
						|
								       you have the correct version of libtool installed.
							 | 
						|
								
							 | 
						|
								    3. Configure the source tree and compile MySQL:
							 | 
						|
								shell> ./configure  # Add your favorite options here
							 | 
						|
								shell> make
							 | 
						|
								       For a description of some configure options, see Section
							 | 
						|
								       2.3.2, "Typical configure Options."
							 | 
						|
								       A collection of our standard configuration scripts is located
							 | 
						|
								       in the BUILD/ subdirectory. For example, you may find it more
							 | 
						|
								       convenient to use the BUILD/compile-pentium-debug script than
							 | 
						|
								       the preceding set of shell commands. To compile on a different
							 | 
						|
								       architecture, modify the script by removing flags that are
							 | 
						|
								       Pentium-specific, or use another script that may be more
							 | 
						|
								       appropriate. These scripts are provided on an "as-is" basis.
							 | 
						|
								       They are not officially maintained and their contents may
							 | 
						|
								       change from release to release.
							 | 
						|
								
							 | 
						|
								    4. When the build is done, run make install. Be careful with this
							 | 
						|
								       on a production machine; the command may overwrite your live
							 | 
						|
								       release installation. If you already have MySQL installed and
							 | 
						|
								       do not want to overwrite it, run ./configure with values for
							 | 
						|
								       the --prefix, --with-tcp-port, and --with-unix-socket-path
							 | 
						|
								       options different from those used for your production server.
							 | 
						|
								
							 | 
						|
								    5. Play hard with your new installation and try to make the new
							 | 
						|
								       features crash. Start by running make test. See Section
							 | 
						|
								       22.1.2, "MySQL Test Suite."
							 | 
						|
								
							 | 
						|
								    6. If you have gotten to the make stage, but the distribution
							 | 
						|
								       does not compile, please enter the problem into our bugs
							 | 
						|
								       database using the instructions given in Section 1.7, "How to
							 | 
						|
								       Report Bugs or Problems." If you have installed the latest
							 | 
						|
								       versions of the required GNU tools, and they crash trying to
							 | 
						|
								       process our configuration files, please report that also.
							 | 
						|
								       However, if you get a command not found error or a similar
							 | 
						|
								       problem for aclocal, configure, or other required tools, do
							 | 
						|
								       not report it. Instead, make sure that all the required tools
							 | 
						|
								       are installed and that your PATH variable is set correctly so
							 | 
						|
								       that your shell can find them.
							 | 
						|
								
							 | 
						|
								2.3.4. Dealing with Problems Compiling MySQL
							 | 
						|
								
							 | 
						|
								   All MySQL programs compile cleanly for us with no warnings on
							 | 
						|
								   Solaris or Linux using gcc. On other systems, warnings may occur
							 | 
						|
								   due to differences in system include files. See Section 2.3.5,
							 | 
						|
								   "MIT-pthreads Notes," for warnings that may occur when using
							 | 
						|
								   MIT-pthreads. For other problems, check the following list.
							 | 
						|
								
							 | 
						|
								   The solution to many problems involves reconfiguring. If you do
							 | 
						|
								   need to reconfigure, take note of the following:
							 | 
						|
								
							 | 
						|
								     * If configure is run after it has previously been run, it may
							 | 
						|
								       use information that was gathered during its previous
							 | 
						|
								       invocation. This information is stored in config.cache. When
							 | 
						|
								       configure starts up, it looks for that file and reads its
							 | 
						|
								       contents if it exists, on the assumption that the information
							 | 
						|
								       is still correct. That assumption is invalid when you
							 | 
						|
								       reconfigure.
							 | 
						|
								
							 | 
						|
								     * Each time you run configure, you must run make again to
							 | 
						|
								       recompile. However, you may want to remove old object files
							 | 
						|
								       from previous builds first because they were compiled using
							 | 
						|
								       different configuration options.
							 | 
						|
								
							 | 
						|
								   To prevent old configuration information or object files from
							 | 
						|
								   being used, run these commands before re-running configure:
							 | 
						|
								shell> rm config.cache
							 | 
						|
								shell> make clean
							 | 
						|
								
							 | 
						|
								   Alternatively, you can run make distclean.
							 | 
						|
								
							 | 
						|
								   The following list describes some of the problems when compiling
							 | 
						|
								   MySQL that have been found to occur most often:
							 | 
						|
								
							 | 
						|
								     * If you get errors such as the ones shown here when compiling
							 | 
						|
								       sql_yacc.cc, you probably have run out of memory or swap
							 | 
						|
								       space:
							 | 
						|
								Internal compiler error: program cc1plus got fatal signal 11
							 | 
						|
								Out of virtual memory
							 | 
						|
								Virtual memory exhausted
							 | 
						|
								       The problem is that gcc requires a huge amount of memory to
							 | 
						|
								       compile sql_yacc.cc with inline functions. Try running
							 | 
						|
								       configure with the --with-low-memory option:
							 | 
						|
								shell> ./configure --with-low-memory
							 | 
						|
								       This option causes -fno-inline to be added to the compile line
							 | 
						|
								       if you are using gcc and -O0 if you are using something else.
							 | 
						|
								       You should try the --with-low-memory option even if you have
							 | 
						|
								       so much memory and swap space that you think you can't
							 | 
						|
								       possibly have run out. This problem has been observed to occur
							 | 
						|
								       even on systems with generous hardware configurations, and the
							 | 
						|
								       --with-low-memory option usually fixes it.
							 | 
						|
								
							 | 
						|
								     * By default, configure picks c++ as the compiler name and GNU
							 | 
						|
								       c++ links with -lg++. If you are using gcc, that behavior can
							 | 
						|
								       cause problems during configuration such as this:
							 | 
						|
								configure: error: installation or configuration problem:
							 | 
						|
								C++ compiler cannot create executables.
							 | 
						|
								       You might also observe problems during compilation related to
							 | 
						|
								       g++, libg++, or libstdc++.
							 | 
						|
								       One cause of these problems is that you may not have g++, or
							 | 
						|
								       you may have g++ but not libg++, or libstdc++. Take a look at
							 | 
						|
								       the config.log file. It should contain the exact reason why
							 | 
						|
								       your C++ compiler didn't work. To work around these problems,
							 | 
						|
								       you can use gcc as your C++ compiler. Try setting the
							 | 
						|
								       environment variable CXX to "gcc -O3". For example:
							 | 
						|
								shell> CXX="gcc -O3" ./configure
							 | 
						|
								       This works because gcc compiles C++ source files as well as
							 | 
						|
								       g++ does, but does not link in libg++ or libstdc++ by default.
							 | 
						|
								       Another way to fix these problems is to install g++, libg++,
							 | 
						|
								       and libstdc++. However, do not use libg++ or libstdc++ with
							 | 
						|
								       MySQL because this only increases the binary size of mysqld
							 | 
						|
								       without providing any benefits. Some versions of these
							 | 
						|
								       libraries have also caused strange problems for MySQL users in
							 | 
						|
								       the past.
							 | 
						|
								
							 | 
						|
								     * If your compile fails with errors such as any of the
							 | 
						|
								       following, you must upgrade your version of make to GNU make:
							 | 
						|
								making all in mit-pthreads
							 | 
						|
								make: Fatal error in reader: Makefile, line 18:
							 | 
						|
								Badly formed macro assignment
							 | 
						|
								       Or:
							 | 
						|
								make: file `Makefile' line 18: Must be a separator (:
							 | 
						|
								       Or:
							 | 
						|
								pthread.h: No such file or directory
							 | 
						|
								       Solaris and FreeBSD are known to have troublesome make
							 | 
						|
								       programs.
							 | 
						|
								       GNU make 3.75 is known to work.
							 | 
						|
								
							 | 
						|
								     * If you want to define flags to be used by your C or C++
							 | 
						|
								       compilers, do so by adding the flags to the CFLAGS and
							 | 
						|
								       CXXFLAGS environment variables. You can also specify the
							 | 
						|
								       compiler names this way using CC and CXX. For example:
							 | 
						|
								shell> CC=gcc
							 | 
						|
								shell> CFLAGS=-O3
							 | 
						|
								shell> CXX=gcc
							 | 
						|
								shell> CXXFLAGS=-O3
							 | 
						|
								shell> export CC CFLAGS CXX CXXFLAGS
							 | 
						|
								       See Section 2.2, "Installing MySQL from Generic Binaries on
							 | 
						|
								       Unix/Linux," for a list of flag definitions that have been
							 | 
						|
								       found to be useful on various systems.
							 | 
						|
								
							 | 
						|
								     * If you get errors such as those shown here when compiling
							 | 
						|
								       mysqld, configure did not correctly detect the type of the
							 | 
						|
								       last argument to accept(), getsockname(), or getpeername():
							 | 
						|
								cxx: Error: mysqld.cc, line 645: In this statement, the referenced
							 | 
						|
								     type of the pointer value ''length'' is ''unsigned long'',
							 | 
						|
								     which is not compatible with ''int''.
							 | 
						|
								new_sock = accept(sock, (struct sockaddr *)&cAddr, &length);
							 | 
						|
								       To fix this, edit the config.h file (which is generated by
							 | 
						|
								       configure). Look for these lines:
							 | 
						|
								/* Define as the base type of the last arg to accept */
							 | 
						|
								#define SOCKET_SIZE_TYPE XXX
							 | 
						|
								       Change XXX to size_t or int, depending on your operating
							 | 
						|
								       system. (You must do this each time you run configure because
							 | 
						|
								       configure regenerates config.h.)
							 | 
						|
								
							 | 
						|
								     * The sql_yacc.cc file is generated from sql_yacc.yy. Normally,
							 | 
						|
								       the build process does not need to create sql_yacc.cc because
							 | 
						|
								       MySQL comes with a pre-generated copy. However, if you do need
							 | 
						|
								       to re-create it, you might encounter this error:
							 | 
						|
								"sql_yacc.yy", line xxx fatal: default action causes potential...
							 | 
						|
								       This is a sign that your version of yacc is deficient. You
							 | 
						|
								       probably need to install bison (the GNU version of yacc) and
							 | 
						|
								       use that instead.
							 | 
						|
								
							 | 
						|
								     * On Debian Linux 3.0, you need to install gawk instead of the
							 | 
						|
								       default mawk.
							 | 
						|
								
							 | 
						|
								     * If you need to debug mysqld or a MySQL client, run configure
							 | 
						|
								       with the --with-debug option, and then recompile and link your
							 | 
						|
								       clients with the new client library. See MySQL Internals:
							 | 
						|
								       Porting (http://forge.mysql.com/wiki/MySQL_Internals_Porting).
							 | 
						|
								
							 | 
						|
								     * If you get a compilation error on Linux (for example, SuSE
							 | 
						|
								       Linux 8.1 or Red Hat Linux 7.3) similar to the following one,
							 | 
						|
								       you probably do not have g++ installed:
							 | 
						|
								libmysql.c:1329: warning: passing arg 5 of `gethostbyname_r' from
							 | 
						|
								incompatible pointer type
							 | 
						|
								libmysql.c:1329: too few arguments to function `gethostbyname_r'
							 | 
						|
								libmysql.c:1329: warning: assignment makes pointer from integer
							 | 
						|
								without a cast
							 | 
						|
								make[2]: *** [libmysql.lo] Error 1
							 | 
						|
								       By default, the configure script attempts to determine the
							 | 
						|
								       correct number of arguments by using g++ (the GNU C++
							 | 
						|
								       compiler). This test yields incorrect results if g++ is not
							 | 
						|
								       installed. There are two ways to work around this problem:
							 | 
						|
								
							 | 
						|
								          + Make sure that the GNU C++ g++ is installed. On some
							 | 
						|
								            Linux distributions, the required package is called gpp;
							 | 
						|
								            on others, it is named gcc-c++.
							 | 
						|
								
							 | 
						|
								          + Use gcc as your C++ compiler by setting the CXX
							 | 
						|
								            environment variable to gcc:
							 | 
						|
								export CXX="gcc"
							 | 
						|
								       You must run configure again after making either of those
							 | 
						|
								       changes.
							 | 
						|
								
							 | 
						|
								2.3.5. MIT-pthreads Notes
							 | 
						|
								
							 | 
						|
								   This section describes some of the issues involved in using
							 | 
						|
								   MIT-pthreads.
							 | 
						|
								
							 | 
						|
								   On Linux, you should not use MIT-pthreads. Use the installed
							 | 
						|
								   LinuxThreads implementation instead. See Section 2.6, "Installing
							 | 
						|
								   MySQL on Linux."
							 | 
						|
								
							 | 
						|
								   If your system does not provide native thread support, you should
							 | 
						|
								   build MySQL using the MIT-pthreads package. This includes older
							 | 
						|
								   FreeBSD systems, SunOS 4.x, Solaris 2.4 and earlier, and some
							 | 
						|
								   others. See Section 2.1, "General Installation Guidance."
							 | 
						|
								
							 | 
						|
								   MIT-pthreads is not part of the MySQL 5.1 source distribution. If
							 | 
						|
								   you require this package, you need to download it separately from
							 | 
						|
								   http://dev.mysql.com/Downloads/Contrib/pthreads-1_60_beta6-mysql.t
							 | 
						|
								   ar.gz
							 | 
						|
								
							 | 
						|
								   After downloading, extract this source archive into the top level
							 | 
						|
								   of the MySQL source directory. It creates a new subdirectory named
							 | 
						|
								   mit-pthreads.
							 | 
						|
								
							 | 
						|
								     * On most systems, you can force MIT-pthreads to be used by
							 | 
						|
								       running configure with the --with-mit-threads option:
							 | 
						|
								shell> ./configure --with-mit-threads
							 | 
						|
								       Building in a nonsource directory is not supported when using
							 | 
						|
								       MIT-pthreads because we want to minimize our changes to this
							 | 
						|
								       code.
							 | 
						|
								
							 | 
						|
								     * The checks that determine whether to use MIT-pthreads occur
							 | 
						|
								       only during the part of the configuration process that deals
							 | 
						|
								       with the server code. If you have configured the distribution
							 | 
						|
								       using --without-server to build only the client code, clients
							 | 
						|
								       do not know whether MIT-pthreads is being used and use Unix
							 | 
						|
								       socket file connections by default. Because Unix socket files
							 | 
						|
								       do not work under MIT-pthreads on some platforms, this means
							 | 
						|
								       you need to use -h or --host with a value other than localhost
							 | 
						|
								       when you run client programs.
							 | 
						|
								
							 | 
						|
								     * When MySQL is compiled using MIT-pthreads, system locking is
							 | 
						|
								       disabled by default for performance reasons. You can tell the
							 | 
						|
								       server to use system locking with the --external-locking
							 | 
						|
								       option. This is needed only if you want to be able to run two
							 | 
						|
								       MySQL servers against the same data files, but that is not
							 | 
						|
								       recommended, anyway.
							 | 
						|
								
							 | 
						|
								     * Sometimes the pthread bind() command fails to bind to a socket
							 | 
						|
								       without any error message (at least on Solaris). The result is
							 | 
						|
								       that all connections to the server fail. For example:
							 | 
						|
								shell> mysqladmin version
							 | 
						|
								mysqladmin: connect to server at '' failed;
							 | 
						|
								error: 'Can't connect to mysql server on localhost (146)'
							 | 
						|
								       The solution to this problem is to kill the mysqld server and
							 | 
						|
								       restart it. This has happened to us only when we have forcibly
							 | 
						|
								       stopped the server and restarted it immediately.
							 | 
						|
								
							 | 
						|
								     * With MIT-pthreads, the sleep() system call isn't interruptible
							 | 
						|
								       with SIGINT (break). This is noticeable only when you run
							 | 
						|
								       mysqladmin --sleep. You must wait for the sleep() call to
							 | 
						|
								       terminate before the interrupt is served and the process
							 | 
						|
								       stops.
							 | 
						|
								
							 | 
						|
								     * When linking, you might receive warning messages like these
							 | 
						|
								       (at least on Solaris); they can be ignored:
							 | 
						|
								ld: warning: symbol `_iob' has differing sizes:
							 | 
						|
								    (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
							 | 
						|
								file /usr/lib/libc.so value=0x140);
							 | 
						|
								    /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
							 | 
						|
								ld: warning: symbol `__iob' has differing sizes:
							 | 
						|
								    (file /my/local/pthreads/lib/libpthread.a(findfp.o) value=0x4;
							 | 
						|
								file /usr/lib/libc.so value=0x140);
							 | 
						|
								    /my/local/pthreads/lib/libpthread.a(findfp.o) definition taken
							 | 
						|
								
							 | 
						|
								     * Some other warnings also can be ignored:
							 | 
						|
								implicit declaration of function `int strtoll(...)'
							 | 
						|
								implicit declaration of function `int strtoul(...)'
							 | 
						|
								
							 | 
						|
								     * We have not been able to make readline work with MIT-pthreads.
							 | 
						|
								       (This is not necessary, but may be of interest to some.)
							 | 
						|
								
							 | 
						|
								2.4. Upgrading or Downgrading MySQL
							 | 
						|
								
							 | 
						|
								2.4.1. Upgrading MySQL
							 | 
						|
								
							 | 
						|
								   As a general rule, to upgrade from one release series to another,
							 | 
						|
								   you should go to the next series rather than skipping a series. To
							 | 
						|
								   upgrade from a release series previous to MySQL 5.0, upgrade to
							 | 
						|
								   each successive release series in turn until you have reached
							 | 
						|
								   MySQL 5.0, and then proceed with the upgrade to MySQL 5.1. For
							 | 
						|
								   example, if you currently are running MySQL 4.0 and wish to
							 | 
						|
								   upgrade to a newer series, upgrade to MySQL 4.1 first before
							 | 
						|
								   upgrading to 5.0, and so forth. For information on upgrading to
							 | 
						|
								   MySQL 5.0, see the MySQL 5.0 Reference Manual; for earlier
							 | 
						|
								   releases, see the MySQL 3.23, 4.0, 4.1 Reference Manual.
							 | 
						|
								
							 | 
						|
								   If you perform a binary (in-place) upgrade without dumping and
							 | 
						|
								   reloading tables, you cannot upgrade directly from MySQL 4.1 to
							 | 
						|
								   5.1. This occurs due to an incompatible change in the MyISAM table
							 | 
						|
								   index format in MySQL 5.0. Upgrade from MySQL 4.1 to 5.0 and
							 | 
						|
								   repair all MyISAM tables (see Section 2.4.4, "Rebuilding or
							 | 
						|
								   Repairing Tables or Indexes"). Then upgrade from MySQL 5.0 to 5.1
							 | 
						|
								   and check and repair your tables.
							 | 
						|
								
							 | 
						|
								   To upgrade from MySQL 5.0 to 5.1, use the items in the following
							 | 
						|
								   checklist as a guide:
							 | 
						|
								
							 | 
						|
								     * Before any upgrade, back up your databases, including the
							 | 
						|
								       mysql database that contains the grant tables. See Section
							 | 
						|
								       6.2, "Database Backup Methods."
							 | 
						|
								
							 | 
						|
								     * Read all the notes in Section 2.4.1.1, "Upgrading from MySQL
							 | 
						|
								       5.0 to 5.1." These notes enable you to identify upgrade issues
							 | 
						|
								       that apply to your current MySQL installation. Some
							 | 
						|
								       incompatibilities discussed in that section require your
							 | 
						|
								       attention before upgrading. Others should be dealt with after
							 | 
						|
								       upgrading.
							 | 
						|
								
							 | 
						|
								     * Read Appendix C, "MySQL Change History" as well, which
							 | 
						|
								       provides information about features that are new in MySQL 5.1
							 | 
						|
								       or differ from those found in MySQL 5.0.
							 | 
						|
								
							 | 
						|
								     * After you upgrade to a new version of MySQL, run mysql_upgrade
							 | 
						|
								       (see Section 4.4.8, "mysql_upgrade --- Check Tables for MySQL
							 | 
						|
								       Upgrade"). This program checks your tables, and attempts to
							 | 
						|
								       repair them if necessary. It also updates your grant tables to
							 | 
						|
								       make sure that they have the current structure so that you can
							 | 
						|
								       take advantage of any new capabilities. (Some releases of
							 | 
						|
								       MySQL introduce changes to the structure of the grant tables
							 | 
						|
								       to add new privileges or features.)
							 | 
						|
								
							 | 
						|
								     * If you are running MySQL Server on Windows, see Section 2.5.7,
							 | 
						|
								       "Upgrading MySQL on Windows."
							 | 
						|
								
							 | 
						|
								     * If you are using replication, see Section 16.4.3, "Upgrading a
							 | 
						|
								       Replication Setup," for information on upgrading your
							 | 
						|
								       replication setup.
							 | 
						|
								
							 | 
						|
								     * If you are upgrading an installation originally produced by
							 | 
						|
								       installing multiple RPM packages, it is best to upgrade all
							 | 
						|
								       the packages, not just some. For example, if you previously
							 | 
						|
								       installed the server and client RPMs, do not upgrade just the
							 | 
						|
								       server RPM.
							 | 
						|
								
							 | 
						|
								     * As of MySQL 5.1.9, the mysqld-max server is included in binary
							 | 
						|
								       distributions. There is no separate MySQL-Max distribution. As
							 | 
						|
								       of MySQL 5.1.12, there is no mysqld-max server at all in
							 | 
						|
								       binary distributions. They contain a server that includes the
							 | 
						|
								       features previously included in mysqld-max.
							 | 
						|
								
							 | 
						|
								     * If you have created a user-defined function (UDF) with a given
							 | 
						|
								       name and upgrade MySQL to a version that implements a new
							 | 
						|
								       built-in function with the same name, the UDF becomes
							 | 
						|
								       inaccessible. To correct this, use DROP FUNCTION to drop the
							 | 
						|
								       UDF, and then use CREATE FUNCTION to re-create the UDF with a
							 | 
						|
								       different nonconflicting name. The same is true if the new
							 | 
						|
								       version of MySQL implements a built-in function with the same
							 | 
						|
								       name as an existing stored function. See Section 8.2.4,
							 | 
						|
								       "Function Name Parsing and Resolution," for the rules
							 | 
						|
								       describing how the server interprets references to different
							 | 
						|
								       kinds of functions.
							 | 
						|
								
							 | 
						|
								   You can always move the MySQL format files and data files between
							 | 
						|
								   different versions on systems with the same architecture as long
							 | 
						|
								   as you stay within versions for the same release series of MySQL.
							 | 
						|
								
							 | 
						|
								   If you are cautious about using new versions, you can always
							 | 
						|
								   rename your old mysqld before installing a newer one. For example,
							 | 
						|
								   if you are using MySQL 5.0.13 and want to upgrade to 5.1.10,
							 | 
						|
								   rename your current server from mysqld to mysqld-5.0.13. If your
							 | 
						|
								   new mysqld then does something unexpected, you can simply shut it
							 | 
						|
								   down and restart with your old mysqld.
							 | 
						|
								
							 | 
						|
								   If, after an upgrade, you experience problems with recompiled
							 | 
						|
								   client programs, such as Commands out of sync or unexpected core
							 | 
						|
								   dumps, you probably have used old header or library files when
							 | 
						|
								   compiling your programs. In this case, you should check the date
							 | 
						|
								   for your mysql.h file and libmysqlclient.a library to verify that
							 | 
						|
								   they are from the new MySQL distribution. If not, recompile your
							 | 
						|
								   programs with the new headers and libraries.
							 | 
						|
								
							 | 
						|
								   If problems occur, such as that the new mysqld server does not
							 | 
						|
								   start or that you cannot connect without a password, verify that
							 | 
						|
								   you do not have an old my.cnf file from your previous
							 | 
						|
								   installation. You can check this with the --print-defaults option
							 | 
						|
								   (for example, mysqld --print-defaults). If this command displays
							 | 
						|
								   anything other than the program name, you have an active my.cnf
							 | 
						|
								   file that affects server or client operation.
							 | 
						|
								
							 | 
						|
								   If your MySQL installation contains a large amount of data that
							 | 
						|
								   might take a long time to convert after an in-place upgrade, you
							 | 
						|
								   might find it useful to create a "dummy" database instance for
							 | 
						|
								   assessing what conversions might be needed and the work involved
							 | 
						|
								   to perform them. Make a copy of your MySQL instance that contains
							 | 
						|
								   a full copy of the mysql database, plus all other databases
							 | 
						|
								   without data. Run your upgrade procedure on this dummy instance to
							 | 
						|
								   see what actions might be needed so that you can better evaluate
							 | 
						|
								   the work involved when performing actual data conversion on your
							 | 
						|
								   original database instance.
							 | 
						|
								
							 | 
						|
								   It is a good idea to rebuild and reinstall the Perl DBD::mysql
							 | 
						|
								   module whenever you install a new release of MySQL. The same
							 | 
						|
								   applies to other MySQL interfaces as well, such as PHP mysql
							 | 
						|
								   extensions and the Python MySQLdb module.
							 | 
						|
								
							 | 
						|
								2.4.1.1. Upgrading from MySQL 5.0 to 5.1
							 | 
						|
								
							 | 
						|
								   After upgrading a 5.0 installation to 5.0.10 or above, it is
							 | 
						|
								   necessary to upgrade your grant tables. Otherwise, creating stored
							 | 
						|
								   procedures and functions might not work. To perform this upgrade,
							 | 
						|
								   run mysql_upgrade.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   It is good practice to back up your data before installing any new
							 | 
						|
								   version of software. Although MySQL works very hard to ensure a
							 | 
						|
								   high level of quality, you should protect your data by making a
							 | 
						|
								   backup.
							 | 
						|
								
							 | 
						|
								   To upgrade to 5.1 from any previous version, MySQL recommends that
							 | 
						|
								   you dump your tables with mysqldump before upgrading and reload
							 | 
						|
								   the dump file after upgrading.
							 | 
						|
								
							 | 
						|
								   If you perform a binary (in-place) upgrade without dumping and
							 | 
						|
								   reloading tables, you cannot upgrade directly from MySQL 4.1 to
							 | 
						|
								   5.1. This occurs due to an incompatible change in the MyISAM table
							 | 
						|
								   index format in MySQL 5.0. Upgrade from MySQL 4.1 to 5.0 and
							 | 
						|
								   repair all MyISAM tables (see Section 2.4.4, "Rebuilding or
							 | 
						|
								   Repairing Tables or Indexes"). Then upgrade from MySQL 5.0 to 5.1
							 | 
						|
								   and check and repair your tables.
							 | 
						|
								
							 | 
						|
								   In general, you should do the following when upgrading from MySQL
							 | 
						|
								   5.0 to 5.1:
							 | 
						|
								
							 | 
						|
								     * Read all the items in the following sections to see whether
							 | 
						|
								       any of them might affect your applications:
							 | 
						|
								
							 | 
						|
								          + Section 2.4.1, "Upgrading MySQL," has general update
							 | 
						|
								            information.
							 | 
						|
								
							 | 
						|
								          + The items in the change lists found later in this section
							 | 
						|
								            enable you to identify upgrade issues that apply to your
							 | 
						|
								            current MySQL installation.
							 | 
						|
								
							 | 
						|
								          + The MySQL 5.1 change history describes significant new
							 | 
						|
								            features you can use in 5.1 or that differ from those
							 | 
						|
								            found in MySQL 5.0. Some of these changes may result in
							 | 
						|
								            incompatibilities. See Section C.1, "Changes in Release
							 | 
						|
								            5.1.x (Production)."
							 | 
						|
								
							 | 
						|
								     * Note particularly any changes that are marked Known issue or
							 | 
						|
								       Incompatible change. These incompatibilities with earlier
							 | 
						|
								       versions of MySQL may require your attention before you
							 | 
						|
								       upgrade.
							 | 
						|
								       Our aim is to avoid these changes, but occasionally they are
							 | 
						|
								       necessary to correct problems that would be worse than an
							 | 
						|
								       incompatibility between releases. If any upgrade issue
							 | 
						|
								       applicable to your installation involves an incompatibility
							 | 
						|
								       that requires special handling, follow the instructions given
							 | 
						|
								       in the incompatibility description. Often this will involve a
							 | 
						|
								       dump and reload, or use of a statement such as CHECK TABLE or
							 | 
						|
								       REPAIR TABLE.
							 | 
						|
								       For dump and reload instructions, see Section 2.4.4,
							 | 
						|
								       "Rebuilding or Repairing Tables or Indexes." Any procedure
							 | 
						|
								       that involves REPAIR TABLE with the USE_FRM option must be
							 | 
						|
								       done before upgrading. Use of this statement with a version of
							 | 
						|
								       MySQL different from the one used to create the table (that
							 | 
						|
								       is, using it after upgrading) may damage the table. See
							 | 
						|
								       Section 12.4.2.6, "REPAIR TABLE Syntax."
							 | 
						|
								
							 | 
						|
								     * After you upgrade to a new version of MySQL, run mysql_upgrade
							 | 
						|
								       (see Section 4.4.8, "mysql_upgrade --- Check Tables for MySQL
							 | 
						|
								       Upgrade"). This program checks your tables, and attempts to
							 | 
						|
								       repair them if necessary. It also updates your grant tables to
							 | 
						|
								       make sure that they have the current structure so that you can
							 | 
						|
								       take advantage of any new capabilities. (Some releases of
							 | 
						|
								       MySQL introduce changes to the structure of the grant tables
							 | 
						|
								       to add new privileges or features.)
							 | 
						|
								
							 | 
						|
								     * Check Section 2.4.3, "Checking Whether Tables or Indexes Must
							 | 
						|
								       Be Rebuilt," to see whether changes to table formats or to
							 | 
						|
								       character sets or collations were made between your current
							 | 
						|
								       version of MySQL and the version to which you are upgrading.
							 | 
						|
								       If so and these changes result in an incompatibility between
							 | 
						|
								       MySQL versions, you will need to upgrade the affected tables
							 | 
						|
								       using the instructions in Section 2.4.4, "Rebuilding or
							 | 
						|
								       Repairing Tables or Indexes."
							 | 
						|
								
							 | 
						|
								     * If you are running MySQL Server on Windows, see Section 2.5.7,
							 | 
						|
								       "Upgrading MySQL on Windows."
							 | 
						|
								
							 | 
						|
								     * If you are using replication, see Section 16.4.3, "Upgrading a
							 | 
						|
								       Replication Setup," for information on upgrading your
							 | 
						|
								       replication setup.
							 | 
						|
								
							 | 
						|
								   If your MySQL installation contains a large amount of data that
							 | 
						|
								   might take a long time to convert after an in-place upgrade, you
							 | 
						|
								   might find it useful to create a "dummy" database instance for
							 | 
						|
								   assessing what conversions might be needed and the work involved
							 | 
						|
								   to perform them. Make a copy of your MySQL instance that contains
							 | 
						|
								   a full copy of the mysql database, plus all other databases
							 | 
						|
								   without data. Run your upgrade procedure on this dummy instance to
							 | 
						|
								   see what actions might be needed so that you can better evaluate
							 | 
						|
								   the work involved when performing actual data conversion on your
							 | 
						|
								   original database instance.
							 | 
						|
								
							 | 
						|
								   MySQL Enterprise MySQL Enterprise subscribers will find more
							 | 
						|
								   information about upgrading in the Knowledge Base articles found
							 | 
						|
								   at Upgrading
							 | 
						|
								   (https://kb.mysql.com/search.php?cat=search&category=41). Access
							 | 
						|
								   to the MySQL Knowledge Base collection of articles is one of the
							 | 
						|
								   advantages of subscribing to MySQL Enterprise. For more
							 | 
						|
								   information, see
							 | 
						|
								   http://www.mysql.com/products/enterprise/advisors.html.
							 | 
						|
								
							 | 
						|
								   The following lists describe changes that may affect applications
							 | 
						|
								   and that you should watch out for when upgrading to MySQL 5.1.
							 | 
						|
								
							 | 
						|
								   Configuration Changes:
							 | 
						|
								
							 | 
						|
								     * Before MySQL 5.1.11, to build MySQL from source with SSL
							 | 
						|
								       support enabled, you would invoke configure with either the
							 | 
						|
								       --with-openssl or --with-yassl option. In MySQL 5.1.11, those
							 | 
						|
								       options both have been replaced by the --with-ssl option. By
							 | 
						|
								       default, --with-ssl causes the bundled yaSSL library to be
							 | 
						|
								       used. To select OpenSSL instead, give the option as
							 | 
						|
								       --with-ssl=path, where path is the directory where the OpenSSL
							 | 
						|
								       header files and libraries are located.
							 | 
						|
								
							 | 
						|
								   Server Changes:
							 | 
						|
								
							 | 
						|
								     * Known issue: After a binary upgrade to MySQL 5.1 from a MySQL
							 | 
						|
								       5.0 installation that contains ARCHIVE tables, accessing those
							 | 
						|
								       tables will cause the server to crash, even if you have run
							 | 
						|
								       mysql_upgrade or CHECK TABLE ... FOR UPGRADE. To work around
							 | 
						|
								       this problem, use mysqldump to dump all ARCHIVE tables before
							 | 
						|
								       upgrading, and reload them into MySQL 5.1 after upgrading.
							 | 
						|
								
							 | 
						|
								     * Known issue: The fix for
							 | 
						|
								       Bug#23491: http://bugs.mysql.com/bug.php?id=23491 introduced a
							 | 
						|
								       problem with SHOW CREATE VIEW, which is used by mysqldump.
							 | 
						|
								       This causes an incompatibility when upgrading from versions
							 | 
						|
								       affected by that bug fix (MySQL 5.0.40 through 5.0.43, MySQL
							 | 
						|
								       5.1.18 through 5.1.19): If you use mysqldump before upgrading
							 | 
						|
								       from an affected version and reload the data after upgrading
							 | 
						|
								       to a higher version, you must drop and recreate your views.
							 | 
						|
								
							 | 
						|
								     * Known issue: Dumps performed by using mysqldump to generate a
							 | 
						|
								       dump file before the upgrade and reloading the file after
							 | 
						|
								       upgrading are subject to the following problem:
							 | 
						|
								       Before MySQL 5.0.40, mysqldump displays SPATIAL index
							 | 
						|
								       definitions using prefix lengths for the indexed columns.
							 | 
						|
								       These prefix lengths are accepted in MySQL 5.0, but not as of
							 | 
						|
								       MySQL 5.1. If you use mysqldump from versions of MySQL older
							 | 
						|
								       than 5.0.40, any table containing SPATIAL indexes will cause
							 | 
						|
								       an error when the dump file is reloaded into MySQL 5.1 or
							 | 
						|
								       higher.
							 | 
						|
								       For example, a table definition might look like this when
							 | 
						|
								       dumped in MySQL 5.0:
							 | 
						|
								CREATE TABLE `t` (
							 | 
						|
								 `g` geometry NOT NULL,
							 | 
						|
								 SPATIAL KEY `g` (`g`(32))
							 | 
						|
								) ENGINE=MyISAM DEFAULT CHARSET=latin1
							 | 
						|
								       The SPATIAL index definition will not be accepted in MySQL
							 | 
						|
								       5.1. To work around this, edit the dump file to remove the
							 | 
						|
								       prefix:
							 | 
						|
								CREATE TABLE `t` (
							 | 
						|
								 `g` geometry NOT NULL,
							 | 
						|
								 SPATIAL KEY `g` (`g`)
							 | 
						|
								) ENGINE=MyISAM DEFAULT CHARSET=latin1
							 | 
						|
								       Dump files can be large, so it may be preferable to dump table
							 | 
						|
								       definitions and data separately to make it easier to edit the
							 | 
						|
								       definitions:
							 | 
						|
								shell> mysqldump --no-data other_args > definitions.sql
							 | 
						|
								shell> mysqldump --no-create-info other_args > data.sql
							 | 
						|
								       Then edit definitions.sql before reloading definitions.sql and
							 | 
						|
								       data.sql, in that order.
							 | 
						|
								       If you upgrade to a version of MySQL 5.0 higher than 5.0.40
							 | 
						|
								       before upgrading to MySQL 5.1, this problem does not occur.
							 | 
						|
								
							 | 
						|
								     * Known issue: Before MySQL 5.1.30, the CHECK TABLE ... FOR
							 | 
						|
								       UPGRADE statement did not check for incompatible collation
							 | 
						|
								       changes made in MySQL 5.1.24. (This also affects mysqlcheck
							 | 
						|
								       and mysql_upgrade, which cause that statement to be executed.)
							 | 
						|
								       Prior to the fix made in 5.1.30, a binary upgrade (performed
							 | 
						|
								       without dumping tables with mysqldump before the upgrade and
							 | 
						|
								       reloading the dump file after the upgrade) would corrupt
							 | 
						|
								       tables. After the fix, CHECK TABLE ... FOR UPGRADE properly
							 | 
						|
								       detects the problem and warns about tables that need repair.
							 | 
						|
								       However, the fix is not backward compatible and can result in
							 | 
						|
								       a downgrading problem under these circumstances:
							 | 
						|
								
							 | 
						|
								         1. Perform a binary upgrade to a version of MySQL that
							 | 
						|
								            includes the fix.
							 | 
						|
								
							 | 
						|
								         2. Run CHECK TABLE ... FOR UPGRADE (or mysqlcheck or
							 | 
						|
								            mysql_upgrade) to upgrade tables.
							 | 
						|
								
							 | 
						|
								         3. Perform a binary downgrade to a version of MySQL that
							 | 
						|
								            does not include the fix.
							 | 
						|
								       The solution is to dump tables with mysqldump before the
							 | 
						|
								       downgrade and reload the dump file after the downgrade.
							 | 
						|
								       Alternatively, drop and recreate affected indexes.
							 | 
						|
								
							 | 
						|
								     * Known issue: MySQL introduces encoding for table names that
							 | 
						|
								       have non-ASCII characters (see Section 8.2.3, "Mapping of
							 | 
						|
								       Identifiers to File Names"). After a binary upgrade from MySQL
							 | 
						|
								       5.0 to 5.1 or higher, the server recognizes names that have
							 | 
						|
								       non-ASCII characters and adds a #mysql50# prefix to them.
							 | 
						|
								       As of MySQL 5.1.31, mysql_upgrade encodes these names by
							 | 
						|
								       executing the following command:
							 | 
						|
								mysqlcheck --all-databases --check-upgrade --fix-db-names --fix-table
							 | 
						|
								-names
							 | 
						|
								       Prior to MySQL 5.1.31, mysql_upgrade does not execute this
							 | 
						|
								       command, so you should execute it manually if you have
							 | 
						|
								       database or table names that contain nonalphanumeric
							 | 
						|
								       characters.
							 | 
						|
								       Prior to MySQL 5.1.23, the mysqlcheck command does not perform
							 | 
						|
								       the name encoding for views. To work around this problem, drop
							 | 
						|
								       each affected view and recreate it.
							 | 
						|
								       mysqlcheck cannot fix names that contain literal instances of
							 | 
						|
								       the @ character that is used for encoding special characters.
							 | 
						|
								       If you have databases or tables that contain this character,
							 | 
						|
								       use mysqldump to dump them before upgrading to MySQL 5.1, and
							 | 
						|
								       then reload the dump file after upgrading.
							 | 
						|
								
							 | 
						|
								     * Known issue: When upgrading from MySQL 5.0 to versions of 5.1
							 | 
						|
								       prior to 5.1.23, running mysqlcheck (or mysql_upgrade, which
							 | 
						|
								       runs mysqlcheck) to upgrade tables fails for names that must
							 | 
						|
								       be written as quoted identifiers. To work around this problem,
							 | 
						|
								       rename each affected table to a name that does not require
							 | 
						|
								       quoting:
							 | 
						|
								RENAME TABLE `tab``le_a` TO table_a;
							 | 
						|
								RENAME TABLE `table b` TO table_b;
							 | 
						|
								       After renaming the tables, run the mysql_upgrade program. Then
							 | 
						|
								       rename the tables back to their original names:
							 | 
						|
								RENAME TABLE table_a TO `tab``le_a`;
							 | 
						|
								RENAME TABLE table_b TO `table b`;
							 | 
						|
								
							 | 
						|
								     * Known issue: In connection with view creation, the server
							 | 
						|
								       created arc directories inside database directories and
							 | 
						|
								       maintained useless copies of .frm files there. Creation and
							 | 
						|
								       renaming procedures of those copies as well as creation of arc
							 | 
						|
								       directories has been discontinued in MySQL 5.1.29.
							 | 
						|
								       This change does cause a problem when downgrading to older
							 | 
						|
								       server versions which manifests itself under these
							 | 
						|
								       circumstances:
							 | 
						|
								
							 | 
						|
								         1. Create a view v_orig in MySQL 5.1.29 or higher.
							 | 
						|
								
							 | 
						|
								         2. Rename the view to v_new and then back to v_orig.
							 | 
						|
								
							 | 
						|
								         3. Downgrade to an older 5.1.x server and run mysql_upgrade.
							 | 
						|
								
							 | 
						|
								         4. Try to rename v_orig to v_new again. This operation
							 | 
						|
								            fails.
							 | 
						|
								       As a workaround to avoid this problem, use either of these
							 | 
						|
								       approaches:
							 | 
						|
								
							 | 
						|
								          + Dump your data using mysqldump before downgrading and
							 | 
						|
								            reload the dump file after downgrading.
							 | 
						|
								
							 | 
						|
								          + Instead of renaming a view after the downgrade, drop it
							 | 
						|
								            and recreate it.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: Character set or collation changes were
							 | 
						|
								       made in MySQL 5.1.21, 5.1.23, and 5.1.24 that may require
							 | 
						|
								       table indexes to be rebuilt. For details, see Section 2.4.3,
							 | 
						|
								       "Checking Whether Tables or Indexes Must Be Rebuilt."
							 | 
						|
								
							 | 
						|
								     * Incompatible change: MySQL 5.1 implements support for a plugin
							 | 
						|
								       API that allows the loading and unloading of components at
							 | 
						|
								       runtime, without restarting the server. Section 22.2, "The
							 | 
						|
								       MySQL Plugin API." The plugin API requires the mysql.plugin
							 | 
						|
								       table. After upgrading from an older version of MySQL, you
							 | 
						|
								       should run the mysql_upgrade command to create this table. See
							 | 
						|
								       Section 4.4.8, "mysql_upgrade --- Check Tables for MySQL
							 | 
						|
								       Upgrade."
							 | 
						|
								       Plugins are installed in the directory named by the plugin_dir
							 | 
						|
								       system variable. This variable also controls the location from
							 | 
						|
								       which the server loads user-defined functions (UDFs), which is
							 | 
						|
								       a change from earlier versions of MySQL. That is, all UDF
							 | 
						|
								       library files now must be installed in the plugin directory.
							 | 
						|
								       When upgrading from an older version of MySQL, you must
							 | 
						|
								       migrate your UDF files to the plugin directory.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: The table_cache system variable has been
							 | 
						|
								       renamed to table_open_cache. Any scripts that refer to
							 | 
						|
								       table_cache must be updated to use the new name.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: In MySQL 5.1.36, options for loading
							 | 
						|
								       plugins such as pluggable storage engines were changed from
							 | 
						|
								       boolean to tristate format. The implementations overlap, but
							 | 
						|
								       if you previously used options of the form --plugin_name=0 or
							 | 
						|
								       --plugin_name=1, you should instead use --plugin_name=OFF or
							 | 
						|
								       --plugin_name=ON, respectively. For details, see Section
							 | 
						|
								       5.1.3, "Server Options for Loading Plugins."
							 | 
						|
								
							 | 
						|
								     * Incompatible change: From MySQL 5.1.24 to 5.1.31, the UPDATE
							 | 
						|
								       statement was changed such that assigning NULL to a NOT NULL
							 | 
						|
								       column caused an error even when strict SQL mode was not
							 | 
						|
								       enabled. The original behavior before MySQL 5.1.24 was that
							 | 
						|
								       such assignments caused an error only in strict SQL mode, and
							 | 
						|
								       otherwise set the column to the implicit default value for the
							 | 
						|
								       column data type and generated a warning. (For information
							 | 
						|
								       about implicit default values, see Section 10.1.4, "Data Type
							 | 
						|
								       Default Values.")
							 | 
						|
								       The change caused compatibility problems for applications that
							 | 
						|
								       relied on the original behavior. It also caused replication
							 | 
						|
								       problems between servers that had the original behavior and
							 | 
						|
								       those that did not, for applications that assigned NULL to NOT
							 | 
						|
								       NULL columns in UPDATE statements without strict SQL mode
							 | 
						|
								       enabled. The change was reverted in MySQL 5.1.32 so that
							 | 
						|
								       UPDATE again had the original behavior. Problems can still
							 | 
						|
								       occur if you replicate between servers that have the modified
							 | 
						|
								       UPDATE behavior and those that do not.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: As of MySQL 5.1.29, the default binary
							 | 
						|
								       logging mode has been changed from MIXED to STATEMENT for
							 | 
						|
								       compatibility with MySQL 5.0.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: In MySQL 5.1.25, a change was made to the
							 | 
						|
								       way that the server handles prepared statements. This affects
							 | 
						|
								       prepared statements processed at the SQL level (using the
							 | 
						|
								       PREPARE statement) and those processed using the binary
							 | 
						|
								       client-server protocol (using the mysql_stmt_prepare() C API
							 | 
						|
								       function).
							 | 
						|
								       Previously, changes to metadata of tables or views referred to
							 | 
						|
								       in a prepared statement could cause a server crash when the
							 | 
						|
								       statement was next executed, or perhaps an error at execute
							 | 
						|
								       time with a crash occurring later. For example, this could
							 | 
						|
								       happen after dropping a table and recreating it with a
							 | 
						|
								       different definition.
							 | 
						|
								       Now metadata changes to tables or views referred to by
							 | 
						|
								       prepared statements are detected and cause automatic
							 | 
						|
								       repreparation of the statement when it is next executed.
							 | 
						|
								       Metadata changes occur for DDL statements such as those that
							 | 
						|
								       create, drop, alter, rename, or truncate tables, or that
							 | 
						|
								       analyze, optimize, or repair tables. Repreparation also occurs
							 | 
						|
								       after referenced tables or views are flushed from the table
							 | 
						|
								       definition cache, either implicitly to make room for new
							 | 
						|
								       entries in the cache, or explicitly due to FLUSH TABLES.
							 | 
						|
								       Repreparation is automatic, but to the extent that it occurs,
							 | 
						|
								       performance of prepared statements is diminished.
							 | 
						|
								       Table content changes (for example, with INSERT or UPDATE) do
							 | 
						|
								       not cause repreparation, nor do SELECT statements.
							 | 
						|
								       An incompatibility with previous versions of MySQL is that a
							 | 
						|
								       prepared statement may now return a different set of columns
							 | 
						|
								       or different column types from one execution to the next. For
							 | 
						|
								       example, if the prepared statement is SELECT * FROM t1,
							 | 
						|
								       altering t1 to contain a different number of columns causes
							 | 
						|
								       the next execution to return a number of columns different
							 | 
						|
								       from the previous execution.
							 | 
						|
								       Older versions of the client library cannot handle this change
							 | 
						|
								       in behavior. For applications that use prepared statements
							 | 
						|
								       with the new server, an upgrade to the new client library is
							 | 
						|
								       strongly recommended.
							 | 
						|
								       Along with this change to statement repreparation, the default
							 | 
						|
								       value of the table_definition_cache system variable has been
							 | 
						|
								       increased from 128 to 256. The purpose of this increase is to
							 | 
						|
								       lessen the chance that prepared statements will need
							 | 
						|
								       repreparation due to referred-to tables/views having been
							 | 
						|
								       flushed from the cache to make room for new entries.
							 | 
						|
								       A new status variable, Com_stmt_reprepare, has been introduced
							 | 
						|
								       to track the number of repreparations.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: As of MySQL 5.1.23, within a stored
							 | 
						|
								       routine, it is no longer allowable to declare a cursor for a
							 | 
						|
								       SHOW or DESCRIBE statement. This happened to work in some
							 | 
						|
								       instances, but is no longer supported. In many cases, a
							 | 
						|
								       workaround for this change is to use the cursor with a SELECT
							 | 
						|
								       query to read from an INFORMATION_SCHEMA table that produces
							 | 
						|
								       the same information as the SHOW statement.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: SHOW CREATE VIEW displays view
							 | 
						|
								       definitions using an AS alias_name clause for each column. If
							 | 
						|
								       a column is created from an expression, the default alias is
							 | 
						|
								       the expression text, which can be quite long. As of MySQL
							 | 
						|
								       5.1.23, aliases for column names in CREATE VIEW statements are
							 | 
						|
								       checked against the maximum column length of 64 characters
							 | 
						|
								       (not the maximum alias length of 256 characters). As a result,
							 | 
						|
								       views created from the output of SHOW CREATE VIEW fail if any
							 | 
						|
								       column alias exceeds 64 characters. This can cause problems
							 | 
						|
								       for replication or loading dump files. For additional
							 | 
						|
								       information and workarounds, see Section D.4, "Restrictions on
							 | 
						|
								       Views."
							 | 
						|
								
							 | 
						|
								     * Incompatible change: Several issues were identified for stored
							 | 
						|
								       programs (stored procedures and functions, triggers, and
							 | 
						|
								       events) and views containing non-ASCII symbols. These issues
							 | 
						|
								       involved conversion errors due to incomplete character set
							 | 
						|
								       information when translating these objects to and from stored
							 | 
						|
								       format.
							 | 
						|
								       To address these problems, the representation for these
							 | 
						|
								       objects was changed in MySQL 5.1.21. However, the fixes affect
							 | 
						|
								       all stored programs and views. (For example, you will see
							 | 
						|
								       warnings about "no creation context.") To avoid warnings from
							 | 
						|
								       the server about the use of old definitions from any release
							 | 
						|
								       prior to 5.1.21, you should dump stored programs and views
							 | 
						|
								       with mysqldump after upgrading to 5.1.21 or higher, and then
							 | 
						|
								       reload them to recreate them with new definitions. Invoke
							 | 
						|
								       mysqldump with a --default-character-set option that names the
							 | 
						|
								       non-ASCII character set that was used for the definitions when
							 | 
						|
								       the objects were originally defined.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: As of MySQL 5.1.20, mysqld_safe supports
							 | 
						|
								       error logging to syslog on systems that support the logger
							 | 
						|
								       command. The new --syslog and --skip-syslog options can be
							 | 
						|
								       used instead of the --log-error option to control logging
							 | 
						|
								       behavior, as described in Section 4.3.2, "mysqld_safe ---
							 | 
						|
								       MySQL Server Startup Script."
							 | 
						|
								       In 5.1.21 and up, the default is --skip-syslog, which is
							 | 
						|
								       compatible with the default behavior of writing an error log
							 | 
						|
								       file for releases prior to 5.1.20.
							 | 
						|
								       In 5.1.20 only, the following conditions apply: 1) The default
							 | 
						|
								       is to use syslog, which is not compatible with releases prior
							 | 
						|
								       to 5.1.20. 2) Logging to syslog may fail to operate correctly
							 | 
						|
								       in some cases. For these reasons, avoid using MySQL 5.1.20.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: As of MySQL 5.1.18, the plugin interface
							 | 
						|
								       and its handling of system variables was changed. Command-line
							 | 
						|
								       options such as --skip-innodb now cause an error if InnoDB is
							 | 
						|
								       not built-in or plugin-loaded. You should use
							 | 
						|
								       --loose-skip-innodb if you do not want any error even if
							 | 
						|
								       InnoDB is not available. The --loose prefix modifier should be
							 | 
						|
								       used for all command-line options where you are uncertain
							 | 
						|
								       whether the plugin exists and when you want the operation to
							 | 
						|
								       proceed even if the option is necessarily ignored due to the
							 | 
						|
								       absence of the plugin. (For a desecription of how --loose
							 | 
						|
								       works, see Section 4.2.3.1, "Using Options on the Command
							 | 
						|
								       Line.")
							 | 
						|
								
							 | 
						|
								     * Incompatible change: As of MySQL 5.1.15, InnoDB rolls back
							 | 
						|
								       only the last statement on a transaction timeout. A new
							 | 
						|
								       option, --innodb_rollback_on_timeout, causes InnoDB to abort
							 | 
						|
								       and roll back the entire transaction if a transaction timeout
							 | 
						|
								       occurs (the same behavior as in MySQL 4.1).
							 | 
						|
								
							 | 
						|
								     * Incompatible change: As of MySQL 5.1.15, the following
							 | 
						|
								       conditions apply to enabling the read_only system variable:
							 | 
						|
								
							 | 
						|
								          + If you attempt to enable read_only while you have any
							 | 
						|
								            explicit locks (acquired with LOCK TABLES or have a
							 | 
						|
								            pending transaction, an error will occur.
							 | 
						|
								
							 | 
						|
								          + If other clients hold explicit table locks or have
							 | 
						|
								            pending transactions, the attempt to enable read_only
							 | 
						|
								            blocks until the locks are released and the transactions
							 | 
						|
								            end. While the attempt to enable read_only is pending,
							 | 
						|
								            requests by other clients for table locks or to begin
							 | 
						|
								            transactions also block until read_only has been set.
							 | 
						|
								
							 | 
						|
								          + read_only can be enabled while you hold a global read
							 | 
						|
								            lock (acquired with FLUSH TABLES WITH READ LOCK) because
							 | 
						|
								            that does not involve table locks.
							 | 
						|
								       Previously, the attempt to enable read_only would return
							 | 
						|
								       immediately even if explicit locks or transactions were
							 | 
						|
								       pending, so some data changes could occur for statements
							 | 
						|
								       executing in the server at the same time.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: The number of function names affected by
							 | 
						|
								       IGNORE_SPACE was reduced significantly in MySQL 5.1.13, from
							 | 
						|
								       about 200 to about 30. (For details about IGNORE_SPACE, see
							 | 
						|
								       Section 8.2.4, "Function Name Parsing and Resolution.") This
							 | 
						|
								       change improves the consistency of parser operation. However,
							 | 
						|
								       it also introduces the possibility of incompatibility for old
							 | 
						|
								       SQL code that relies on the following conditions:
							 | 
						|
								
							 | 
						|
								          + IGNORE_SPACE is disabled.
							 | 
						|
								
							 | 
						|
								          + The presence or absence of whitespace following a
							 | 
						|
								            function name is used to distinguish between a built-in
							 | 
						|
								            function and stored function that have the same name (for
							 | 
						|
								            example, PI() versus PI ()).
							 | 
						|
								       For functions that are no longer affected by IGNORE_SPACE as
							 | 
						|
								       of MySQL 5.1.13, that strategy no longer works. Either of the
							 | 
						|
								       following approaches can be used if you have code that is
							 | 
						|
								       subject to the preceding incompatibility:
							 | 
						|
								
							 | 
						|
								          + If a stored function has a name that conflicts with a
							 | 
						|
								            built-in function, refer to the stored function with a
							 | 
						|
								            schema name qualifier, regardless of whether whitespace
							 | 
						|
								            is present. For example, write schema_name.PI() or
							 | 
						|
								            schema_name.PI ().
							 | 
						|
								
							 | 
						|
								          + Alternatively, rename the stored function to use a
							 | 
						|
								            nonconflicting name and change invocations of the
							 | 
						|
								            function to use the new name.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: For utf8 columns, the full-text parser
							 | 
						|
								       incorrectly considered several nonword punctuation and
							 | 
						|
								       whitespace characters as word characters, causing some
							 | 
						|
								       searches to return incorrect results. The fix involves a
							 | 
						|
								       change to the full-text parser in MySQL 5.1.12, so as of
							 | 
						|
								       5.1.12, any tables that have FULLTEXT indexes on utf8 columns
							 | 
						|
								       must be repaired with REPAIR TABLE:
							 | 
						|
								REPAIR TABLE tbl_name QUICK;
							 | 
						|
								
							 | 
						|
								     * Incompatible change: Storage engines can be pluggable at
							 | 
						|
								       runtime, so the distinction between disabled and invalid
							 | 
						|
								       storage engines no longer applies. As of MySQL 5.1.12, this
							 | 
						|
								       affects the NO_ENGINE_SUBSTITUTION SQL mode, as described in
							 | 
						|
								       Section 5.1.8, "Server SQL Modes."
							 | 
						|
								
							 | 
						|
								     * Incompatible change: The structure of FULLTEXT indexes has
							 | 
						|
								       been changed in MySQL 5.1.6. After upgrading to MySQL 5.1.6 or
							 | 
						|
								       greater, any tables that have FULLTEXT indexes must be
							 | 
						|
								       repaired with REPAIR TABLE:
							 | 
						|
								REPAIR TABLE tbl_name QUICK;
							 | 
						|
								
							 | 
						|
								     * Incompatible change: In MySQL 5.1.6, when log tables were
							 | 
						|
								       implemented, the default log destination for the general query
							 | 
						|
								       and slow query log was TABLE. As of MySQL 5.1.21, this default
							 | 
						|
								       has been changed to FILE, which is compatible with MySQL 5.0,
							 | 
						|
								       but incompatible with earlier releases of MySQL 5.1. If you
							 | 
						|
								       are upgrading from MySQL 5.0 to 5.1.21 or higher, no logging
							 | 
						|
								       option changes should be necessary. However, if you are
							 | 
						|
								       upgrading from 5.1.6 through 5.1.20 to 5.1.21 or higher and
							 | 
						|
								       were using TABLE logging, use the --log-output=TABLE option
							 | 
						|
								       explicitly to preserve your server's table-logging behavior.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: For ENUM columns that had enumeration
							 | 
						|
								       values containing commas, the commas were mapped to 0xff
							 | 
						|
								       internally. However, this rendered the commas
							 | 
						|
								       indistinguishable from true 0xff characters in the values.
							 | 
						|
								       This no longer occurs. However, the fix requires that you dump
							 | 
						|
								       and reload any tables that have ENUM columns containing true
							 | 
						|
								       0xff in their values: Dump the tables using mysqldump with the
							 | 
						|
								       current server before upgrading from a version of MySQL 5.1
							 | 
						|
								       older than 5.1.15 to version 5.1.15 or newer.
							 | 
						|
								
							 | 
						|
								     * As of MySQL 5.1.12, the lc_time_names system variable
							 | 
						|
								       specifies the locale that controls the language used to
							 | 
						|
								       display day and month names and abbreviations. This variable
							 | 
						|
								       affects the output from the DATE_FORMAT(), DAYNAME() and
							 | 
						|
								       MONTHNAME() functions. See Section 9.7, "MySQL Server Locale
							 | 
						|
								       Support."
							 | 
						|
								
							 | 
						|
								     * As of MySQL 5.1.9, mysqld_safe no longer implicitly invokes
							 | 
						|
								       mysqld-max if it exists. Instead, it invokes mysqld unless a
							 | 
						|
								       --mysqld or --mysqld-version option is given to specify
							 | 
						|
								       another server explicitly. If you previously relied on the
							 | 
						|
								       implicit invocation of mysqld-max, you should use an
							 | 
						|
								       appropriate option now. As of MySQL 5.1.12, there is no longer
							 | 
						|
								       any separate mysqld-max server, so no change should be
							 | 
						|
								       necessary.
							 | 
						|
								
							 | 
						|
								   SQL Changes:
							 | 
						|
								
							 | 
						|
								     * Known issue: Prior to MySQL 5.1.17, the parser accepted
							 | 
						|
								       invalid code in SQL condition handlers, leading to server
							 | 
						|
								       crashes or unexpected execution behavior in stored programs.
							 | 
						|
								       Specifically, the parser allowed a condition handler to refer
							 | 
						|
								       to labels for blocks that enclose the handler declaration.
							 | 
						|
								       This was incorrect because block label scope does not include
							 | 
						|
								       the code for handlers declared within the labeled block.
							 | 
						|
								       As of 5.1.17, the parser rejects this invalid construct, but
							 | 
						|
								       if you perform a binary upgrade (without dumping and reloading
							 | 
						|
								       your databases), existing handlers that contain the construct
							 | 
						|
								       still are invalid and should be rewritten even if they appear
							 | 
						|
								       to function as you expect.
							 | 
						|
								       To find affected handlers, use mysqldump to dump all stored
							 | 
						|
								       procedures and functions, triggers, and events. Then attempt
							 | 
						|
								       to reload them into an upgraded server. Handlers that contain
							 | 
						|
								       illegal label references will be rejected.
							 | 
						|
								       For more information about condition handlers and writing them
							 | 
						|
								       to avoid invalid jumps, see Section 12.7.4.2, "DECLARE for
							 | 
						|
								       Handlers."
							 | 
						|
								
							 | 
						|
								     * Incompatible change: The parser accepted statements that
							 | 
						|
								       contained /* ... */ that were not properly closed with */,
							 | 
						|
								       such as SELECT 1 /* + 2. As of MySQL 5.1.23, statements that
							 | 
						|
								       contain unclosed /*-comments now are rejected with a syntax
							 | 
						|
								       error.
							 | 
						|
								       This fix has the potential to cause incompatibilities. Because
							 | 
						|
								       of Bug#26302: http://bugs.mysql.com/bug.php?id=26302, which
							 | 
						|
								       caused the trailing */ to be truncated from comments in views,
							 | 
						|
								       stored routines, triggers, and events, it is possible that
							 | 
						|
								       objects of those types may have been stored with definitions
							 | 
						|
								       that now will be rejected as syntactically invalid. Such
							 | 
						|
								       objects should be dropped and re-created so that their
							 | 
						|
								       definitions do not contain truncated comments.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: Multiple-table DELETE statements
							 | 
						|
								       containing ambiguous aliases could have unintended side
							 | 
						|
								       effects such as deleting rows from the wrong table. Example:
							 | 
						|
								DELETE FROM t1 AS a2 USING t1 AS a1 INNER JOIN t2 AS a2;
							 | 
						|
								       As of MySQL 5.1.23, alias declarations can be declared only in
							 | 
						|
								       the table_references part. Elsewhere in the statement, alias
							 | 
						|
								       references are allowed but not alias declarations. Statements
							 | 
						|
								       containing aliases that are no longer allowed must be
							 | 
						|
								       rewritten.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: As of MySQL 5.1.8, TYPE = engine_name is
							 | 
						|
								       still accepted as a synonym for the ENGINE = engine_name table
							 | 
						|
								       option but generates a warning. You should note that this
							 | 
						|
								       option is not available in MySQL 5.1.7, and is removed
							 | 
						|
								       altogether as of MySQL 5.4 and produces a syntax error.
							 | 
						|
								       TYPE has been deprecated since MySQL 4.0.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: The namespace for triggers changed in
							 | 
						|
								       MySQL 5.0.10. Previously, trigger names had to be unique per
							 | 
						|
								       table. Now they must be unique within the schema (database).
							 | 
						|
								       An implication of this change is that DROP TRIGGER syntax now
							 | 
						|
								       uses a schema name instead of a table name (schema name is
							 | 
						|
								       optional and, if omitted, the current schema will be used).
							 | 
						|
								       When upgrading from a version of MySQL 5 older than 5.0.10 to
							 | 
						|
								       MySQL 5.0.10 or newer, you must drop all triggers and
							 | 
						|
								       re-create them or DROP TRIGGER will not work after the
							 | 
						|
								       upgrade. Here is a suggested procedure for doing this:
							 | 
						|
								
							 | 
						|
								         1. Upgrade to MySQL 5.0.10 or later to be able to access
							 | 
						|
								            trigger information in the INFORMATION_SCHEMA.TRIGGERS
							 | 
						|
								            table. (This should work even for pre-5.0.10 triggers.)
							 | 
						|
								
							 | 
						|
								         2. Dump all trigger definitions using the following SELECT
							 | 
						|
								            statement:
							 | 
						|
								SELECT CONCAT('CREATE TRIGGER ', t.TRIGGER_SCHEMA, '.', t.TRIGGER_NAM
							 | 
						|
								E,
							 | 
						|
								              ' ', t.ACTION_TIMING, ' ', t.EVENT_MANIPULATION, ' ON '
							 | 
						|
								,
							 | 
						|
								              t.EVENT_OBJECT_SCHEMA, '.', t.EVENT_OBJECT_TABLE,
							 | 
						|
								              ' FOR EACH ROW ', t.ACTION_STATEMENT, '//' )
							 | 
						|
								INTO OUTFILE '/tmp/triggers.sql'
							 | 
						|
								FROM INFORMATION_SCHEMA.TRIGGERS AS t;
							 | 
						|
								            The statement uses INTO OUTFILE, so you must have the
							 | 
						|
								            FILE privilege. The file will be created on the server
							 | 
						|
								            host. Use a different file name if you like. To be 100%
							 | 
						|
								            safe, inspect the trigger definitions in the triggers.sql
							 | 
						|
								            file, and perhaps make a backup of the file.
							 | 
						|
								
							 | 
						|
								         3. Stop the server and drop all triggers by removing all
							 | 
						|
								            .TRG files in your database directories. Change location
							 | 
						|
								            to your data directory and issue this command:
							 | 
						|
								shell> rm */*.TRG
							 | 
						|
								
							 | 
						|
								         4. Start the server and re-create all triggers using the
							 | 
						|
								            triggers.sql file:
							 | 
						|
								mysql> delimiter // ;
							 | 
						|
								mysql> source /tmp/triggers.sql //
							 | 
						|
								
							 | 
						|
								         5. Check that all triggers were successfully created using
							 | 
						|
								            the SHOW TRIGGERS statement.
							 | 
						|
								
							 | 
						|
								     * Incompatible change: MySQL 5.1.6 introduces the TRIGGER
							 | 
						|
								       privilege. Previously, the SUPER privilege was needed to
							 | 
						|
								       create or drop triggers. Now those operations require the
							 | 
						|
								       TRIGGER privilege. This is a security improvement because you
							 | 
						|
								       no longer need to grant users the SUPER privilege to enable
							 | 
						|
								       them to create triggers. However, the requirement that the
							 | 
						|
								       account named in a trigger's DEFINER clause must have the
							 | 
						|
								       SUPER privilege has changed to a requirement for the TRIGGER
							 | 
						|
								       privilege. When upgrading from a previous version of MySQL 5.0
							 | 
						|
								       or 5.1 to MySQL 5.1.6 or newer, be sure to update your grant
							 | 
						|
								       tables by running mysql_upgrade. This will assign the TRIGGER
							 | 
						|
								       privilege to all accounts that had the SUPER privilege. If you
							 | 
						|
								       fail to update the grant tables, triggers may fail when
							 | 
						|
								       activated. After updating the grant tables, you can revoke the
							 | 
						|
								       SUPER privilege from those accounts that no longer otherwise
							 | 
						|
								       require it.
							 | 
						|
								
							 | 
						|
								     * Some keywords may be reserved in MySQL 5.1 that were not
							 | 
						|
								       reserved in MySQL 5.0. See Section 8.3, "Reserved Words."
							 | 
						|
								
							 | 
						|
								     * The BACKUP TABLE, and RESTORE TABLE statements are deprecated.
							 | 
						|
								       mysqldump or mysqlhotcopy can be used as alternatives.
							 | 
						|
								
							 | 
						|
								     * The LOAD DATA FROM MASTER and LOAD TABLE FROM MASTER
							 | 
						|
								       statements are deprecated. See Section 12.5.2.2, "LOAD DATA
							 | 
						|
								       FROM MASTER Syntax," for recommended alternatives.
							 | 
						|
								
							 | 
						|
								     * The INSTALL PLUGIN and UNINSTALL PLUGIN statements that are
							 | 
						|
								       used for the plugin API are new. So is the WITH PARSER clause
							 | 
						|
								       for FULLTEXT index creation that associates a parser plugin
							 | 
						|
								       with a full-text index. Section 22.2, "The MySQL Plugin API."
							 | 
						|
								
							 | 
						|
								   C API Changes:
							 | 
						|
								
							 | 
						|
								     * Incompatible change: As of MySQL 5.1.7, the
							 | 
						|
								       mysql_stmt_attr_get() C API function returns a boolean rather
							 | 
						|
								       than an unsigned int for STMT_ATTR_UPDATE_MAX_LENGTH.
							 | 
						|
								       (Bug#16144: http://bugs.mysql.com/bug.php?id=16144)
							 | 
						|
								
							 | 
						|
								2.4.2. Downgrading MySQL
							 | 
						|
								
							 | 
						|
								   This section describes what you should do to downgrade to an older
							 | 
						|
								   MySQL version in the unlikely case that the previous version
							 | 
						|
								   worked better than the new one.
							 | 
						|
								
							 | 
						|
								   If you are downgrading within the same release series (for
							 | 
						|
								   example, from 5.0.13 to 5.0.12) the general rule is that you just
							 | 
						|
								   have to install the new binaries on top of the old ones. There is
							 | 
						|
								   no need to do anything with the databases. As always, however, it
							 | 
						|
								   is always a good idea to make a backup.
							 | 
						|
								
							 | 
						|
								   The following items form a checklist of things you should do
							 | 
						|
								   whenever you perform a downgrade:
							 | 
						|
								
							 | 
						|
								     * Read the upgrading section for the release series from which
							 | 
						|
								       you are downgrading to be sure that it does not have any
							 | 
						|
								       features you really need. See Section 2.4.1, "Upgrading
							 | 
						|
								       MySQL."
							 | 
						|
								
							 | 
						|
								     * If there is a downgrading section for that version, you should
							 | 
						|
								       read that as well.
							 | 
						|
								
							 | 
						|
								     * To see which new features were added between the version to
							 | 
						|
								       which you are downgrading and your current version, see the
							 | 
						|
								       change logs (Appendix C, "MySQL Change History").
							 | 
						|
								
							 | 
						|
								     * Check Section 2.4.3, "Checking Whether Tables or Indexes Must
							 | 
						|
								       Be Rebuilt," to see whether changes to table formats or to
							 | 
						|
								       character sets or collations were made between your current
							 | 
						|
								       version of MySQL and the version to which you are downgrading.
							 | 
						|
								       If so and these changes result in an incompatibility between
							 | 
						|
								       MySQL versions, you will need to downgrade the affected tables
							 | 
						|
								       using the instructions in Section 2.4.4, "Rebuilding or
							 | 
						|
								       Repairing Tables or Indexes."
							 | 
						|
								
							 | 
						|
								   In most cases, you can move the MySQL format files and data files
							 | 
						|
								   between different versions on the same architecture as long as you
							 | 
						|
								   stay within versions for the same release series of MySQL.
							 | 
						|
								
							 | 
						|
								   If you downgrade from one release series to another, there may be
							 | 
						|
								   incompatibilities in table storage formats. In this case, use
							 | 
						|
								   mysqldump to dump your tables before downgrading. After
							 | 
						|
								   downgrading, reload the dump file using mysql or mysqlimport to
							 | 
						|
								   re-create your tables. For examples, see Section 2.4.5, "Copying
							 | 
						|
								   MySQL Databases to Another Machine."
							 | 
						|
								
							 | 
						|
								   A typical symptom of a downward-incompatible table format change
							 | 
						|
								   when you downgrade is that you cannot open tables. In that case,
							 | 
						|
								   use the following procedure:
							 | 
						|
								
							 | 
						|
								    1. Stop the older MySQL server that you are downgrading to.
							 | 
						|
								
							 | 
						|
								    2. Restart the newer MySQL server you are downgrading from.
							 | 
						|
								
							 | 
						|
								    3. Dump any tables that were inaccessible to the older server by
							 | 
						|
								       using mysqldump to create a dump file.
							 | 
						|
								
							 | 
						|
								    4. Stop the newer MySQL server and restart the older one.
							 | 
						|
								
							 | 
						|
								    5. Reload the dump file into the older server. Your tables should
							 | 
						|
								       be accessible.
							 | 
						|
								
							 | 
						|
								   It might also be the case that system tables in the mysql database
							 | 
						|
								   have changed and that downgrading introduces some loss of
							 | 
						|
								   functionality or requires some adjustments. Here are some
							 | 
						|
								   examples:
							 | 
						|
								
							 | 
						|
								     * Trigger creation requires the TRIGGER privilege as of MySQL
							 | 
						|
								       5.1. In MySQL 5.0, there is no TRIGGER privilege and SUPER is
							 | 
						|
								       required instead. If you downgrade from MySQL 5.1 to 5.0, you
							 | 
						|
								       will need to give the SUPER privilege to those accounts that
							 | 
						|
								       had the TRIGGER privilege in 5.1.
							 | 
						|
								
							 | 
						|
								     * Triggers were added in MySQL 5.0, so if you downgrade from 5.0
							 | 
						|
								       to 4.1, you cannot use triggers at all.
							 | 
						|
								
							 | 
						|
								     * The mysql.proc.comment column definition changed between MySQL
							 | 
						|
								       5.1 and 5.5. After a downgrade from 5.5 to 5.1, this table is
							 | 
						|
								       seen as corrupt and in need of repair. To workaround this
							 | 
						|
								       problem, execute mysql_upgrade from the version of MySQL to
							 | 
						|
								       which you downgraded.
							 | 
						|
								
							 | 
						|
								2.4.2.1. Downgrading to MySQL 5.0
							 | 
						|
								
							 | 
						|
								   When downgrading to MySQL 5.0 from MySQL 5.1, you should keep in
							 | 
						|
								   mind the following issues relating to features found in MySQL 5.1,
							 | 
						|
								   but not in MySQL 5.0:
							 | 
						|
								
							 | 
						|
								     * Partitioning.  MySQL 5.0 does not support user-defined
							 | 
						|
								       partitioning. If a table was created as a partitioned table in
							 | 
						|
								       5.1 (or if an table created in a previous version of MySQL was
							 | 
						|
								       altered to include partitions after an upgrade to 5.1), the
							 | 
						|
								       table is accessible after downgrade only if you do one of the
							 | 
						|
								       following:
							 | 
						|
								
							 | 
						|
								          + Export the table using mysqldump and then drop it in
							 | 
						|
								            MySQL 5.1; import the table again following the downgrade
							 | 
						|
								            to MySQL 5.0.
							 | 
						|
								
							 | 
						|
								          + Prior to the downgrade, remove the table's partitioning
							 | 
						|
								            using ALTER TABLE table_name REMOVE PARTITIONING.
							 | 
						|
								
							 | 
						|
								     * Event Scheduler.  MySQL 5.0 does not support scheduled events.
							 | 
						|
								       If your databases contain scheduled event definitions, you
							 | 
						|
								       should prevent them from being dumped when you use mysqldump
							 | 
						|
								       by using the --skip-events option. (See Section 4.5.4,
							 | 
						|
								       "mysqldump --- A Database Backup Program.")
							 | 
						|
								
							 | 
						|
								     * Stored routines.  MySQL 5.1.21 added a number of new columns
							 | 
						|
								       to the mysql.proc table in which stored routine definitions
							 | 
						|
								       are stored. If you are downgrading from MySQL 5.1.21 or later
							 | 
						|
								       to MySQL 5.0, you cannot import the MySQL 5.1 routine
							 | 
						|
								       definitions into MySQL 5.0.46 or earlier using the dump of
							 | 
						|
								       mysql.proc created by mysqldump (such as when using the
							 | 
						|
								       --all-databases option). Instead, you should run mysqldump
							 | 
						|
								       --routines prior to performing the downgrade and run the
							 | 
						|
								       stored routines DDL statements following the downgrade.
							 | 
						|
								       See Bug#11986: http://bugs.mysql.com/bug.php?id=11986,
							 | 
						|
								       Bug#30029: http://bugs.mysql.com/bug.php?id=30029, and
							 | 
						|
								       Bug#30660: http://bugs.mysql.com/bug.php?id=30660, for more
							 | 
						|
								       information.
							 | 
						|
								
							 | 
						|
								     * Triggers.  Trigger creation requires the TRIGGER privilege as
							 | 
						|
								       of MySQL 5.1. In MySQL 5.0, there is no TRIGGER privilege and
							 | 
						|
								       SUPER is required instead. If you downgrade from MySQL 5.1 to
							 | 
						|
								       5.0, you will need to give the SUPER privilege to those
							 | 
						|
								       accounts that had the TRIGGER privilege in 5.1.
							 | 
						|
								
							 | 
						|
								2.4.3. Checking Whether Tables or Indexes Must Be Rebuilt
							 | 
						|
								
							 | 
						|
								   A binary upgrade or downgrade is one that installs one version of
							 | 
						|
								   MySQL "in place" over an existing version, without dumping and
							 | 
						|
								   reloading tables:
							 | 
						|
								
							 | 
						|
								    1. Stop the server for the existing version if it is running.
							 | 
						|
								
							 | 
						|
								    2. Install a different version of MySQL. This is an upgrade if
							 | 
						|
								       the new version is higher than the original version, a
							 | 
						|
								       downgrade if the version is lower.
							 | 
						|
								
							 | 
						|
								    3. Start the server for the new version.
							 | 
						|
								
							 | 
						|
								   In many cases, the tables from the previous version of MySQL can
							 | 
						|
								   be used without problem by the new version. However, sometimes
							 | 
						|
								   changes occur that require tables or table indexes to be rebuilt,
							 | 
						|
								   as described in this section. If you have tables that are affected
							 | 
						|
								   by any of the issues described here, rebuild the tables or indexes
							 | 
						|
								   as necessary using the instructions given in Section 2.4.4,
							 | 
						|
								   "Rebuilding or Repairing Tables or Indexes."
							 | 
						|
								
							 | 
						|
								   Table Incompatibilities
							 | 
						|
								
							 | 
						|
								   After a binary upgrade to MySQL 5.1 from a MySQL 5.0 installation
							 | 
						|
								   that contains ARCHIVE tables, accessing those tables causes the
							 | 
						|
								   server to crash, even if you have run mysql_upgrade or CHECK TABLE
							 | 
						|
								   ... FOR UPGRADE. To work around this problem, use mysqldump to
							 | 
						|
								   dump all ARCHIVE tables before upgrading, and reload them into
							 | 
						|
								   MySQL 5.1 after upgrading. The same problem occurs for binary
							 | 
						|
								   downgrades from MySQL 5.1 to 5.0.
							 | 
						|
								
							 | 
						|
								   Index Incompatibilities
							 | 
						|
								
							 | 
						|
								   If you perform a binary upgrade without dumping and reloading
							 | 
						|
								   tables, you cannot upgrade directly from MySQL 4.1 to 5.1 or
							 | 
						|
								   higher. This occurs due to an incompatible change in the MyISAM
							 | 
						|
								   table index format in MySQL 5.0. Upgrade from MySQL 4.1 to 5.0 and
							 | 
						|
								   repair all MyISAM tables. Then upgrade from MySQL 5.0 to 5.1 and
							 | 
						|
								   check and repair your tables.
							 | 
						|
								
							 | 
						|
								   Modifications to the handling of character sets or collations
							 | 
						|
								   might change the character sort order, which causes the ordering
							 | 
						|
								   of entries in any index that uses an affected character set or
							 | 
						|
								   collation to be incorrect. Such changes result in several possible
							 | 
						|
								   problems:
							 | 
						|
								
							 | 
						|
								     * Comparison results that differ from previous results
							 | 
						|
								
							 | 
						|
								     * Inability to find some index values due to misordered index
							 | 
						|
								       entries
							 | 
						|
								
							 | 
						|
								     * Misordered ORDER BY results
							 | 
						|
								
							 | 
						|
								     * Tables that CHECK TABLE reports as being in need of repair
							 | 
						|
								
							 | 
						|
								   The solution to these problems is to rebuild any indexes that use
							 | 
						|
								   an affected character set or collation, either by dropping and
							 | 
						|
								   re-creating the indexes, or by dumping and reloading the entire
							 | 
						|
								   table. For information about rebuilding indexes, see Section
							 | 
						|
								   2.4.4, "Rebuilding or Repairing Tables or Indexes."
							 | 
						|
								
							 | 
						|
								   To check whether a table has indexes that must be rebuilt, consult
							 | 
						|
								   the following list. It indicates which versions of MySQL
							 | 
						|
								   introduced character set or collation changes that require indexes
							 | 
						|
								   to be rebuilt. Each entry indicates the version in which the
							 | 
						|
								   change occurred and the character sets or collations that the
							 | 
						|
								   change affects. If the change is associated with a particular bug
							 | 
						|
								   report, the bug number is given.
							 | 
						|
								
							 | 
						|
								   The list applies both for binary upgrades and downgrades. For
							 | 
						|
								   example, Bug#27877: http://bugs.mysql.com/bug.php?id=27877 was
							 | 
						|
								   fixed in MySQL 5.1.24 and 5.4.0, so it applies to upgrades from
							 | 
						|
								   versions older than 5.1.24 to 5.1.24 or newer, and to downgrades
							 | 
						|
								   from 5.1.24 or newer to versions older than 5.1.24.
							 | 
						|
								
							 | 
						|
								   In many cases, you can use CHECK TABLE ... FOR UPGRADE to identify
							 | 
						|
								   tables for which index rebuilding is required. (It will report:
							 | 
						|
								   Table upgrade required. Please do "REPAIR TABLE `tbl_name`" or
							 | 
						|
								   dump/reload to fix it!) In these cases, you can also use
							 | 
						|
								   mysqlcheck --check-upgrade or mysql_upgrade, which execute CHECK
							 | 
						|
								   TABLE. However, the use of CHECK TABLE applies only after
							 | 
						|
								   upgrades, not downgrades. Also, CHECK TABLE is not applicable to
							 | 
						|
								   all storage engines. For details about which storage engines CHECK
							 | 
						|
								   TABLE supports, see Section 12.4.2.3, "CHECK TABLE Syntax."
							 | 
						|
								
							 | 
						|
								   Changes that cause index rebuilding to be necessary:
							 | 
						|
								
							 | 
						|
								     * MySQL 5.0.48, 5.1.21
							 | 
						|
								       (Bug#29461: http://bugs.mysql.com/bug.php?id=29461)
							 | 
						|
								       Affects indexes for columns that use any of these character
							 | 
						|
								       sets: eucjpms, euc_kr, gb2312, latin7, macce, ujis
							 | 
						|
								       Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
							 | 
						|
								       as of MySQL 5.1.29, 5.4.0 (see
							 | 
						|
								       Bug#39585: http://bugs.mysql.com/bug.php?id=39585).
							 | 
						|
								
							 | 
						|
								     * MySQL 5.0.48, 5.1.23
							 | 
						|
								       (Bug#27562: http://bugs.mysql.com/bug.php?id=27562)
							 | 
						|
								       Affects indexes that use the ascii_general_ci collation for
							 | 
						|
								       columns that contain any of these characters: '`' GRAVE
							 | 
						|
								       ACCENT, '[' LEFT SQUARE BRACKET, '\' REVERSE SOLIDUS, ']'
							 | 
						|
								       RIGHT SQUARE BRACKET, '~' TILDE
							 | 
						|
								       Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
							 | 
						|
								       as of MySQL 5.1.29, 5.4.0 (see
							 | 
						|
								       Bug#39585: http://bugs.mysql.com/bug.php?id=39585).
							 | 
						|
								
							 | 
						|
								     * MySQL 5.1.24, 5.4.0
							 | 
						|
								       (Bug#27877: http://bugs.mysql.com/bug.php?id=27877)
							 | 
						|
								       Affects indexes that use the utf8_general_ci or
							 | 
						|
								       ucs2_general_ci collation for columns that contain 'ß' LATIN
							 | 
						|
								       SMALL LETTER SHARP S (German).
							 | 
						|
								       Affected tables can be detected by CHECK TABLE ... FOR UPGRADE
							 | 
						|
								       as of MySQL 5.1.30, 5.4.0 (see
							 | 
						|
								       Bug#40053: http://bugs.mysql.com/bug.php?id=40053).
							 | 
						|
								
							 | 
						|
								2.4.4. Rebuilding or Repairing Tables or Indexes
							 | 
						|
								
							 | 
						|
								   This section describes how to rebuild a table. This can be
							 | 
						|
								   necessitated by changes to MySQL such as how data types are
							 | 
						|
								   handled or changes to character set handling. For example, an
							 | 
						|
								   error in a collation might have been corrected, necessitating a
							 | 
						|
								   table rebuild to update the indexes for character columns that use
							 | 
						|
								   the collation. (For examples, see Section 2.4.3, "Checking Whether
							 | 
						|
								   Tables or Indexes Must Be Rebuilt.") It might also be that a table
							 | 
						|
								   repair or upgrade should be done as indicated by a table check
							 | 
						|
								   operation such as that performed by CHECK TABLE, mysqlcheck, or
							 | 
						|
								   mysql_upgrade.
							 | 
						|
								
							 | 
						|
								   Methods for rebuilding a table include dumping and reloading it,
							 | 
						|
								   or using ALTER TABLE or REPAIR TABLE.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   If you are rebuilding tables because a different version of MySQL
							 | 
						|
								   will not handle them after a binary (in-place) upgrade or
							 | 
						|
								   downgrade, you must use the dump-and-reload method. Dump the
							 | 
						|
								   tables before upgrading or downgrading using your original version
							 | 
						|
								   of MySQL. Then reload the tables after upgrading or downgrading.
							 | 
						|
								
							 | 
						|
								   If you use the dump-and-reload method of rebuilding tables only
							 | 
						|
								   for the purpose of rebuilding indexes, you can perform the dump
							 | 
						|
								   either before or after upgrading or downgrading. Reloading still
							 | 
						|
								   must be done afterward.
							 | 
						|
								
							 | 
						|
								   To rebuild a table by dumping and reloading it, use mysqldump to
							 | 
						|
								   create a dump file and mysql to reload the file:
							 | 
						|
								shell> mysqldump db_name t1 > dump.sql
							 | 
						|
								shell> mysql db_name < dump.sql
							 | 
						|
								
							 | 
						|
								   To rebuild all the tables in a single database, specify the
							 | 
						|
								   database name without any following table name:
							 | 
						|
								shell> mysqldump db_name > dump.sql
							 | 
						|
								shell> mysql db_name < dump.sql
							 | 
						|
								
							 | 
						|
								   To rebuild all tables in all databases, use the --all-databases
							 | 
						|
								   option:
							 | 
						|
								shell> mysqldump --all-databases > dump.sql
							 | 
						|
								shell> mysql < dump.sql
							 | 
						|
								
							 | 
						|
								   To rebuild a table with ALTER TABLE, use a "null" alteration; that
							 | 
						|
								   is, an ALTER TABLE statement that "changes" the table to use the
							 | 
						|
								   storage engine that it already has. For example, if t1 is a MyISAM
							 | 
						|
								   table, use this statement:
							 | 
						|
								mysql> ALTER TABLE t1 ENGINE = MyISAM;
							 | 
						|
								
							 | 
						|
								   If you are not sure which storage engine to specify in the ALTER
							 | 
						|
								   TABLE statement, use SHOW CREATE TABLE to display the table
							 | 
						|
								   definition.
							 | 
						|
								
							 | 
						|
								   If you must rebuild a table because a table checking operation
							 | 
						|
								   indicates that the table is corrupt or needs an upgrade, you can
							 | 
						|
								   use REPAIR TABLE if that statement supports the table's storage
							 | 
						|
								   engine. For example, to repair a MyISAM table, use this statement:
							 | 
						|
								mysql> REPAIR TABLE t1;
							 | 
						|
								
							 | 
						|
								   For storage engines such as InnoDB that REPAIR TABLE does not
							 | 
						|
								   support, use mysqldump to create a dump file and mysql to reload
							 | 
						|
								   the file, as described earlier.
							 | 
						|
								
							 | 
						|
								   For specifics about which storage engines REPAIR TABLE supports,
							 | 
						|
								   see Section 12.4.2.6, "REPAIR TABLE Syntax."
							 | 
						|
								
							 | 
						|
								   mysqlcheck --repair provides command-line access to the REPAIR
							 | 
						|
								   TABLE statement. This can be a more convenient means of repairing
							 | 
						|
								   tables because you can use the --databases or --all-databases
							 | 
						|
								   option to repair all tables in specific databases or all
							 | 
						|
								   databases, respectively:
							 | 
						|
								shell> mysqlcheck --repair --databases db_name ...
							 | 
						|
								shell> mysqlcheck --repair --all-databases
							 | 
						|
								
							 | 
						|
								2.4.5. Copying MySQL Databases to Another Machine
							 | 
						|
								
							 | 
						|
								   You can copy the .frm, .MYI, and .MYD files for MyISAM tables
							 | 
						|
								   between different architectures that support the same
							 | 
						|
								   floating-point format. (MySQL takes care of any byte-swapping
							 | 
						|
								   issues.) See Section 13.5, "The MyISAM Storage Engine."
							 | 
						|
								
							 | 
						|
								   In cases where you need to transfer databases between different
							 | 
						|
								   architectures, you can use mysqldump to create a file containing
							 | 
						|
								   SQL statements. You can then transfer the file to the other
							 | 
						|
								   machine and feed it as input to the mysql client.
							 | 
						|
								
							 | 
						|
								   Use mysqldump --help to see what options are available.
							 | 
						|
								
							 | 
						|
								   The easiest (although not the fastest) way to move a database
							 | 
						|
								   between two machines is to run the following commands on the
							 | 
						|
								   machine on which the database is located:
							 | 
						|
								shell> mysqladmin -h 'other_hostname' create db_name
							 | 
						|
								shell> mysqldump db_name | mysql -h 'other_hostname' db_name
							 | 
						|
								
							 | 
						|
								   If you want to copy a database from a remote machine over a slow
							 | 
						|
								   network, you can use these commands:
							 | 
						|
								shell> mysqladmin create db_name
							 | 
						|
								shell> mysqldump -h 'other_hostname' --compress db_name | mysql db_na
							 | 
						|
								me
							 | 
						|
								
							 | 
						|
								   You can also store the dump in a file, transfer the file to the
							 | 
						|
								   target machine, and then load the file into the database there.
							 | 
						|
								   For example, you can dump a database to a compressed file on the
							 | 
						|
								   source machine like this:
							 | 
						|
								shell> mysqldump --quick db_name | gzip > db_name.gz
							 | 
						|
								
							 | 
						|
								   Transfer the file containing the database contents to the target
							 | 
						|
								   machine and run these commands there:
							 | 
						|
								shell> mysqladmin create db_name
							 | 
						|
								shell> gunzip < db_name.gz | mysql db_name
							 | 
						|
								
							 | 
						|
								   You can also use mysqldump and mysqlimport to transfer the
							 | 
						|
								   database. For large tables, this is much faster than simply using
							 | 
						|
								   mysqldump. In the following commands, DUMPDIR represents the full
							 | 
						|
								   path name of the directory you use to store the output from
							 | 
						|
								   mysqldump.
							 | 
						|
								
							 | 
						|
								   First, create the directory for the output files and dump the
							 | 
						|
								   database:
							 | 
						|
								shell> mkdir DUMPDIR
							 | 
						|
								shell> mysqldump --tab=DUMPDIR db_name
							 | 
						|
								
							 | 
						|
								   Then transfer the files in the DUMPDIR directory to some
							 | 
						|
								   corresponding directory on the target machine and load the files
							 | 
						|
								   into MySQL there:
							 | 
						|
								shell> mysqladmin create db_name           # create database
							 | 
						|
								shell> cat DUMPDIR/*.sql | mysql db_name   # create tables in databas
							 | 
						|
								e
							 | 
						|
								shell> mysqlimport db_name DUMPDIR/*.txt   # load data into tables
							 | 
						|
								
							 | 
						|
								   Do not forget to copy the mysql database because that is where the
							 | 
						|
								   grant tables are stored. You might have to run commands as the
							 | 
						|
								   MySQL root user on the new machine until you have the mysql
							 | 
						|
								   database in place.
							 | 
						|
								
							 | 
						|
								   After you import the mysql database on the new machine, execute
							 | 
						|
								   mysqladmin flush-privileges so that the server reloads the grant
							 | 
						|
								   table information.
							 | 
						|
								
							 | 
						|
								2.5. Installing MySQL on Windows
							 | 
						|
								
							 | 
						|
								   This section describes the process for installing MySQL on
							 | 
						|
								   Windows.
							 | 
						|
								
							 | 
						|
								   To run MySQL on Windows, you need the following:
							 | 
						|
								
							 | 
						|
								     * A Windows operating system such as Windows 2000, Windows XP,
							 | 
						|
								       Windows Vista, Windows Server 2003, or Windows Server 2008.
							 | 
						|
								       Both 32-bit and 64-bit versions are supported.
							 | 
						|
								       In addition to running MySQL as a standard application, you
							 | 
						|
								       can also run the MySQL server as a Windows service. By using a
							 | 
						|
								       service you can monitor and control the operation of the
							 | 
						|
								       server through the standard Windows service management tools.
							 | 
						|
								       For more information, see Section 2.5.5.6, "Starting MySQL as
							 | 
						|
								       a Windows Service."
							 | 
						|
								       Generally, you should install MySQL on Windows using an
							 | 
						|
								       account that has administrator rights. Otherwise, you may
							 | 
						|
								       encounter problems with certain operations such as editing the
							 | 
						|
								       PATH environment variable or accessing the Service Control
							 | 
						|
								       Manager. Once installed, MySQL does not need to be executed
							 | 
						|
								       using a user with Administrator privileges.
							 | 
						|
								
							 | 
						|
								     * TCP/IP protocol support.
							 | 
						|
								
							 | 
						|
								     * Enough space on the hard drive to unpack, install, and create
							 | 
						|
								       the databases in accordance with your requirements (generally
							 | 
						|
								       a minimum of 200 megabytes is recommended.)
							 | 
						|
								
							 | 
						|
								   For a list of limitations within the Windows version of MySQL, see
							 | 
						|
								   Section D.7.3, "Windows Platform Limitations."
							 | 
						|
								
							 | 
						|
								   In addition to the MySQL Server package, you may need or want
							 | 
						|
								   additional components to use MySQL with your application or
							 | 
						|
								   development environment. These include, but are not limited to:
							 | 
						|
								
							 | 
						|
								     * If you plan to connect to the MySQL server via ODBC, you need
							 | 
						|
								       a Connector/ODBC driver. For more information, including
							 | 
						|
								       installation and configuration instructions, see Section 21.1,
							 | 
						|
								       "MySQL Connector/ODBC."
							 | 
						|
								
							 | 
						|
								     * If you plan to use MySQL server with .NET applications, you
							 | 
						|
								       need the Connector/NET driver. For more information, including
							 | 
						|
								       installation and configuration instructions, see Section 21.2,
							 | 
						|
								       "MySQL Connector/NET."
							 | 
						|
								
							 | 
						|
								   MySQL distributions for Windows can be downloaded from
							 | 
						|
								   http://dev.mysql.com/downloads/. See Section 2.1.3, "How to Get
							 | 
						|
								   MySQL."
							 | 
						|
								
							 | 
						|
								   MySQL for Windows is available in several distribution formats,
							 | 
						|
								   detailed below. Generally speaking, you should use a binary
							 | 
						|
								   distribution that includes an installer. It is simpler to use than
							 | 
						|
								   the others, and you need no additional tools to get MySQL up and
							 | 
						|
								   running. The installer for the Windows version of MySQL, combined
							 | 
						|
								   with a GUI Config Wizard, automatically installs MySQL, creates an
							 | 
						|
								   option file, starts the server, and secures the default user
							 | 
						|
								   accounts.
							 | 
						|
								
							 | 
						|
								     * Binary installer distribution. The installable distribution
							 | 
						|
								       comes packaged as a Microsoft Windows Installer (MSI) package
							 | 
						|
								       that you can install manually or automatically on your
							 | 
						|
								       systems. Two formats are available, an essentials package that
							 | 
						|
								       contains all the files you need to install and configure
							 | 
						|
								       MySQL, but no additional components, and a complete package
							 | 
						|
								       that includes MySQL, configuration tools, benchmarks and other
							 | 
						|
								       components. For more information on the specific differences,
							 | 
						|
								       see Section 2.5.2, "Choosing An Installation Package"
							 | 
						|
								       For instructions on installing MySQL using one of the MSI
							 | 
						|
								       installation packages, see Section 2.5.3, "Installing MySQL
							 | 
						|
								       with the MSI Package."
							 | 
						|
								
							 | 
						|
								     * Standard binary distribution format packaged as a Zip file
							 | 
						|
								       containing all of the necessary files that you unpack into
							 | 
						|
								       your chosen location. This package contains all of the files
							 | 
						|
								       in the full Windows MSI Installer package, but does not
							 | 
						|
								       including an installation program.
							 | 
						|
								       For instructions on installing MySQL using the Zip file, see
							 | 
						|
								       Section 2.5.5, "Installing MySQL from a noinstall Zip
							 | 
						|
								       Archive."
							 | 
						|
								
							 | 
						|
								     * The source distribution contains all the code and support
							 | 
						|
								       files for building the executables using the Visual Studio
							 | 
						|
								       compiler system.
							 | 
						|
								       For instructions on building MySQL from source on Windows, see
							 | 
						|
								       Section 2.5.10, "Installing MySQL from Source on Windows."
							 | 
						|
								
							 | 
						|
								   MySQL on Windows considerations:
							 | 
						|
								
							 | 
						|
								     * Large Table Support
							 | 
						|
								       If you need tables with a size larger than 4GB, install MySQL
							 | 
						|
								       on an NTFS or newer file system. Don't forget to use MAX_ROWS
							 | 
						|
								       and AVG_ROW_LENGTH when you create tables. See Section
							 | 
						|
								       12.1.17, "CREATE TABLE Syntax."
							 | 
						|
								
							 | 
						|
								     * MySQL and Virus Checking Software
							 | 
						|
								       Using virus scanning software such as Norton/Symantec
							 | 
						|
								       Anti-Virus on directories containing MySQL data and temporary
							 | 
						|
								       tables can cause issues, both in terms of the performance of
							 | 
						|
								       MySQL and the virus-scanning software mis-identifying the
							 | 
						|
								       contents of the files as containing spam. This is because of
							 | 
						|
								       the fingerprinting mechanism used by the virus scanning
							 | 
						|
								       software, and the way in which MySQL rapidly updates different
							 | 
						|
								       files, which may be identified as a potential security risk.
							 | 
						|
								       After installing MySQL Server, it is recommended that you
							 | 
						|
								       disable virus scanning on the main directory (datadir) being
							 | 
						|
								       used to store your MySQL table data. There is usually a system
							 | 
						|
								       built into the virus scanning software to allow certain
							 | 
						|
								       directories to be specifically ignored during virus scanning.
							 | 
						|
								       In addition, by default, MySQL creates temporary files in the
							 | 
						|
								       standard Windows temporary directory. To prevent the temporary
							 | 
						|
								       files also being scanned, you should configure a separate
							 | 
						|
								       temporary directory for MySQL temporary files and add this to
							 | 
						|
								       the virus scanning exclusion list. To do this, add a
							 | 
						|
								       configuration option for the tmpdir parameter to your my.ini
							 | 
						|
								       configuration file. For more information, see Section 2.5.5.2,
							 | 
						|
								       "Creating an Option File."
							 | 
						|
								
							 | 
						|
								2.5.1. Windows Installation Layout
							 | 
						|
								
							 | 
						|
								   For MySQL 5.1 on Windows, the default installation directory is
							 | 
						|
								   C:\Program Files\MySQL\MySQL Server 5.1. Some Windows users prefer
							 | 
						|
								   to install in C:\mysql, the directory that formerly was used as
							 | 
						|
								   the default. However, the layout of the subdirectories remains the
							 | 
						|
								   same.
							 | 
						|
								
							 | 
						|
								   For MySQL 5.1.23 and earlier, all of the files are located within
							 | 
						|
								   this parent directory, using the following structure:
							 | 
						|
								
							 | 
						|
								   Table 2.2. Installation Layout for Windows using MySQL 5.1.23 and
							 | 
						|
								   earlier
							 | 
						|
								   Directory         Contents of Directory
							 | 
						|
								   bin       Client programs and the mysqld server
							 | 
						|
								   data      Log files, databases
							 | 
						|
								   Docs      Manual in CHM format
							 | 
						|
								   examples  Example programs and scripts
							 | 
						|
								   include   Include (header) files
							 | 
						|
								   lib       Libraries
							 | 
						|
								   scripts   Utility scripts
							 | 
						|
								   share     Error message files
							 | 
						|
								
							 | 
						|
								   For MySQL 5.1.24 and later, the default location of data directory
							 | 
						|
								   was changed. The remainder of the directory structure remains the
							 | 
						|
								   same:
							 | 
						|
								
							 | 
						|
								   Table 2.3. Installation Layout for Windows using MySQL 5.1.24 and
							 | 
						|
								   later
							 | 
						|
								   Directory Contents of Directory
							 | 
						|
								   bin Client programs and the mysqld server
							 | 
						|
								   C:\Documents and Settings\All Users\Application Data\MySQL Log
							 | 
						|
								   files, databases
							 | 
						|
								   Docs Manual in CHM format
							 | 
						|
								   examples Example programs and scripts
							 | 
						|
								   include Include (header) files
							 | 
						|
								   lib Libraries
							 | 
						|
								   scripts Utility scripts
							 | 
						|
								   share Error message files
							 | 
						|
								
							 | 
						|
								2.5.2. Choosing An Installation Package
							 | 
						|
								
							 | 
						|
								   For MySQL 5.1, there are three installation packages to choose
							 | 
						|
								   from when installing MySQL on Windows:
							 | 
						|
								     Packaging
							 | 
						|
								   Feature Essentials Complete Zip (No-install)
							 | 
						|
								   Installer Yes Yes No
							 | 
						|
								   Directory-only
							 | 
						|
								   MySQL Server Instance Config Wizard Yes Yes No
							 | 
						|
								   Test Suite No Yes Yes
							 | 
						|
								   MySQL Server Yes Yes Yes
							 | 
						|
								   MySQL Client Programs Yes Yes Yes
							 | 
						|
								   C Headers/Libraries Yes Yes Yes
							 | 
						|
								   Embedded Server No Optional Yes
							 | 
						|
								   Scripts and Examples No Optional Yes
							 | 
						|
								
							 | 
						|
								   In the above table:
							 | 
						|
								
							 | 
						|
								     * Yes indiciates that the component is installed by default.
							 | 
						|
								
							 | 
						|
								     * No indicates that the component is not installed or included.
							 | 
						|
								
							 | 
						|
								     * Optional indicates that the component is included with the
							 | 
						|
								       package, but not installed unless explicitly requested using
							 | 
						|
								       the Custom installation mode.
							 | 
						|
								
							 | 
						|
								   The workflow for installing using the MSI installer is shown
							 | 
						|
								   below:
							 | 
						|
								
							 | 
						|
								   Figure 2.1. Installation Workflow for Windows using MSI
							 | 
						|
								   Installation Workflow for Windows using MSI
							 | 
						|
								
							 | 
						|
								   The workflow for installing using the MSI installer is shown
							 | 
						|
								   below:
							 | 
						|
								
							 | 
						|
								   Figure 2.2. Installation Workflow for Windows using Zip
							 | 
						|
								   Installation Workflow for Windows using Zip
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   For the Essentials and Complete packages in the MSI installer, you
							 | 
						|
								   can select individual components to be installed by using the
							 | 
						|
								   Custom mode, including disable the components confiurated for
							 | 
						|
								   installation by default.
							 | 
						|
								
							 | 
						|
								   Full details on the components are suggested uses are provided
							 | 
						|
								   below for reference:
							 | 
						|
								
							 | 
						|
								     * Windows Essentials --- this package has a file name similar to
							 | 
						|
								       mysql-essential-5.1.46-win32.msi and is supplied as a
							 | 
						|
								       Microsoft Installer (MSI) package. The package includes the
							 | 
						|
								       minimum set of files needed to install MySQL on Windows,
							 | 
						|
								       including the MySQL Server Instance Config Wizard. This
							 | 
						|
								       package does not include optional components such as the
							 | 
						|
								       embedded server, developer headers and libraries or benchmark
							 | 
						|
								       suite.
							 | 
						|
								       To install using this package, see Section 2.5.3, "Installing
							 | 
						|
								       MySQL with the MSI Package."
							 | 
						|
								
							 | 
						|
								     * Windows MSI Installer (Complete) --- this package has a file
							 | 
						|
								       name similar to mysql-5.1.46-win32.zip and contains all files
							 | 
						|
								       needed for a complete Windows installation, including the
							 | 
						|
								       MySQL Server Instance Config Wizard. This package includes
							 | 
						|
								       optional components such as the embedded server and benchmark
							 | 
						|
								       suite.
							 | 
						|
								       To install using this package, see Section 2.5.3, "Installing
							 | 
						|
								       MySQL with the MSI Package."
							 | 
						|
								
							 | 
						|
								     * Without installer --- this package has a file name similar to
							 | 
						|
								       mysql-noinstall-5.1.46-win32.zip and contains all the files
							 | 
						|
								       found in the Complete install package, with the exception of
							 | 
						|
								       the MySQL Server Instance Config Wizard. This package does not
							 | 
						|
								       include an automated installer, and must be manually installed
							 | 
						|
								       and configured.
							 | 
						|
								
							 | 
						|
								   The Essentials package is recommended for most users. Both the
							 | 
						|
								   Essentials and Complete distributions are available as an .msi
							 | 
						|
								   file for use with the Windows Installer. The Noinstall
							 | 
						|
								   distribution is packaged as Zip archives. To use Zip archives, you
							 | 
						|
								   must have a tool that can unpack .zip files.
							 | 
						|
								
							 | 
						|
								   When using the MSI installers you can automate the installation
							 | 
						|
								   process. For more information, see Section 2.5.3.2, "Installing
							 | 
						|
								   MySQL Automatically using MSI." To automate the creation of a
							 | 
						|
								   MySQL instance, see Section 2.5.4.13, "Creating an Instance from
							 | 
						|
								   the Command Line."
							 | 
						|
								
							 | 
						|
								   Your choice of install package affects the installation process
							 | 
						|
								   you must follow. If you choose to install either the Essentials or
							 | 
						|
								   Complete install packages, see Section 2.5.3, "Installing MySQL
							 | 
						|
								   with the MSI Package." If you choose to install MySQL from the
							 | 
						|
								   Noinstall archive, see Section 2.5.5, "Installing MySQL from a
							 | 
						|
								   noinstall Zip Archive."
							 | 
						|
								
							 | 
						|
								2.5.3. Installing MySQL with the MSI Package
							 | 
						|
								
							 | 
						|
								   The MSI package are designed to install and configure MySQL in
							 | 
						|
								   such a way that you can immediately get started using MySQL.
							 | 
						|
								
							 | 
						|
								   The MySQL Installation Wizard and MySQL Config Wizard are
							 | 
						|
								   available in the Essentials and Complete install packages. They
							 | 
						|
								   are recommended for most standard MySQL installations. Exceptions
							 | 
						|
								   include users who need to install multiple instances of MySQL on a
							 | 
						|
								   single server host and advanced users who want complete control of
							 | 
						|
								   server configuration.
							 | 
						|
								
							 | 
						|
								     * For information on installing using the GUI MSI installer
							 | 
						|
								       process, see Section 2.5.3, "Installing MySQL with the MSI
							 | 
						|
								       Package."
							 | 
						|
								
							 | 
						|
								     * For information on installing using the command line using the
							 | 
						|
								       MSI package, see Section 2.5.3.2, "Installing MySQL
							 | 
						|
								       Automatically using MSI."
							 | 
						|
								
							 | 
						|
								     * If you have previously installed MySQL using the MSI package
							 | 
						|
								       and want to remove MySQL, see Section 2.5.3.3, "Removing MySQL
							 | 
						|
								       Installed from the MSI Package."
							 | 
						|
								
							 | 
						|
								   The workflow sequence for using the installer is shown in the
							 | 
						|
								   figure below:
							 | 
						|
								
							 | 
						|
								   Figure 2.3. Installation Workflow for Windows using MSI Installer
							 | 
						|
								   Installation Workflow for Windows using MSI Installer
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   Microsoft Windows XP and later include a firewall which
							 | 
						|
								   specifically blocks ports. If you plan on using MySQL through a
							 | 
						|
								   network port then you should open and create an exception for this
							 | 
						|
								   port before performing the installation. To check and if necessary
							 | 
						|
								   add an exception to the firewall settings:
							 | 
						|
								
							 | 
						|
								    1. First ensure that you are logged in as an Administrator or a
							 | 
						|
								       user with Administrator privileges.
							 | 
						|
								
							 | 
						|
								    2. Go to the Control Panel, and double click the Windows Firewall
							 | 
						|
								       icon.
							 | 
						|
								
							 | 
						|
								    3. Choose the Allow a program through Windows Firewall option and
							 | 
						|
								       click the Add port button.
							 | 
						|
								
							 | 
						|
								    4. Enter MySQL into the Name text box and 3306 (or the port of
							 | 
						|
								       your choice) into the Port number text box.
							 | 
						|
								
							 | 
						|
								    5. Also ensure that the TCP protocol radio button is selected.
							 | 
						|
								
							 | 
						|
								    6. If you wish, you can also limit access to the MySQL server by
							 | 
						|
								       choosing the Change scope button.
							 | 
						|
								
							 | 
						|
								    7. Confirm your choices by clicking the OK button.
							 | 
						|
								
							 | 
						|
								   Additionally, when running the MySQL Installation Wizard on
							 | 
						|
								   Windows Vista, ensure that you are logged in as a user with
							 | 
						|
								   administrative rights.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   When using Windows Vista, you may want to disable User Account
							 | 
						|
								   Control (UAC) before performing the installation. If you do not do
							 | 
						|
								   so, then MySQL may be identified as a security risk, which will
							 | 
						|
								   mean that you need to enable MySQL. You can disable the security
							 | 
						|
								   checking by following these instructions:
							 | 
						|
								
							 | 
						|
								    1. Open Control Panel.
							 | 
						|
								
							 | 
						|
								    2. Under the User Accounts and Family Safety, select Add or
							 | 
						|
								       remove user accounts.
							 | 
						|
								
							 | 
						|
								    3. Click on the Got to the main User Accounts page link.
							 | 
						|
								
							 | 
						|
								    4. Click on Turn User Account Control on or off. You may be
							 | 
						|
								       prompted to provide permission to change this setting. Click
							 | 
						|
								       Continue.
							 | 
						|
								
							 | 
						|
								    5. Deselect or unceck the checkbox next to Use User Account
							 | 
						|
								       Control (UAC) to help protect your computer. Click OK to save
							 | 
						|
								       the setting.
							 | 
						|
								
							 | 
						|
								   You will need to restart to complete the process. Click Restart
							 | 
						|
								   Now to reboot the machine and apply the changes. You can then
							 | 
						|
								   follow the instructions below for installing Windows.
							 | 
						|
								
							 | 
						|
								2.5.3.1. Using the MySQL Installation Wizard
							 | 
						|
								
							 | 
						|
								   MySQL Installation Wizard is an installer for the MySQL server
							 | 
						|
								   that uses the latest installer technologies for Microsoft Windows.
							 | 
						|
								   The MySQL Installation Wizard, in combination with the MySQL
							 | 
						|
								   Config Wizard, allows a user to install and configure a MySQL
							 | 
						|
								   server that is ready for use immediately after installation.
							 | 
						|
								
							 | 
						|
								   The MySQL Installation Wizard uses the standard Microsoft
							 | 
						|
								   Installer Engine (MSI) system is the standard installer for all
							 | 
						|
								   MySQL server distributions, version 4.1.5 and higher. Users of
							 | 
						|
								   previous versions of MySQL need to shut down and remove their
							 | 
						|
								   existing MySQL installations manually before installing MySQL with
							 | 
						|
								   the MySQL Installation Wizard. See Section 2.5.3.1.6, "Upgrading
							 | 
						|
								   MySQL with the Installation Wizard," for more information on
							 | 
						|
								   upgrading from a previous version.
							 | 
						|
								
							 | 
						|
								   If you are upgrading an installation from MySQL 5.1.31 or earlier
							 | 
						|
								   to MySQL 5.1.32 or later, read the notes provided in Section
							 | 
						|
								   2.5.3.1.6, "Upgrading MySQL with the Installation Wizard."
							 | 
						|
								
							 | 
						|
								   The Microsoft Windows Installer Engine was updated with the
							 | 
						|
								   release of Windows XP; those using a previous version of Windows
							 | 
						|
								   can reference this Microsoft Knowledge Base article
							 | 
						|
								   (http://support.microsoft.com/default.aspx?scid=kb;EN-US;292539)
							 | 
						|
								   for information on upgrading to the latest version of the Windows
							 | 
						|
								   Installer Engine.
							 | 
						|
								
							 | 
						|
								   In addition, Microsoft has introduced the WiX (Windows Installer
							 | 
						|
								   XML) toolkit. This is the first highly acknowledged Open Source
							 | 
						|
								   project from Microsoft. We have switched to WiX because it is an
							 | 
						|
								   Open Source project and it allows us to handle the complete
							 | 
						|
								   Windows installation process in a flexible manner using scripts.
							 | 
						|
								
							 | 
						|
								   Improving the MySQL Installation Wizard depends on the support and
							 | 
						|
								   feedback of users like you. If you find that the MySQL
							 | 
						|
								   Installation Wizard is lacking some feature important to you, or
							 | 
						|
								   if you discover a bug, please report it in our bugs database using
							 | 
						|
								   the instructions given in Section 1.7, "How to Report Bugs or
							 | 
						|
								   Problems."
							 | 
						|
								
							 | 
						|
								2.5.3.1.1. Downloading and Starting the MySQL Installation Wizard
							 | 
						|
								
							 | 
						|
								   The MySQL installation packages can be downloaded from
							 | 
						|
								   http://dev.mysql.com/downloads/. If the package you download is
							 | 
						|
								   contained within a Zip archive, you need to extract the archive
							 | 
						|
								   first.
							 | 
						|
								
							 | 
						|
								   The process for starting the wizard depends on the contents of the
							 | 
						|
								   installation package you download. If there is a setup.exe file
							 | 
						|
								   present, double-click it to start the installation process. If
							 | 
						|
								   there is an .msi file present, double-click it to start the
							 | 
						|
								   installation process.
							 | 
						|
								
							 | 
						|
								2.5.3.1.2. Choosing an Install Type
							 | 
						|
								
							 | 
						|
								   There are three installation types available: Typical, Complete,
							 | 
						|
								   and Custom.
							 | 
						|
								
							 | 
						|
								   The Typical installation type installs the MySQL server, the mysql
							 | 
						|
								   command-line client, and the command-line utilities. The
							 | 
						|
								   command-line clients and utilities include mysqldump, myisamchk,
							 | 
						|
								   and several other tools to help you manage the MySQL server.
							 | 
						|
								
							 | 
						|
								   The Complete installation type installs all components included in
							 | 
						|
								   the installation package. The full installation package includes
							 | 
						|
								   components such as the embedded server library, the benchmark
							 | 
						|
								   suite, support scripts, and documentation.
							 | 
						|
								
							 | 
						|
								   The Custom installation type gives you complete control over which
							 | 
						|
								   packages you wish to install and the installation path that is
							 | 
						|
								   used. See Section 2.5.3.1.3, "The Custom Install Dialog," for more
							 | 
						|
								   information on performing a custom install.
							 | 
						|
								
							 | 
						|
								   If you choose the Typical or Complete installation types and click
							 | 
						|
								   the Next button, you advance to the confirmation screen to verify
							 | 
						|
								   your choices and begin the installation. If you choose the Custom
							 | 
						|
								   installation type and click the Next button, you advance to the
							 | 
						|
								   custom installation dialog, described in Section 2.5.3.1.3, "The
							 | 
						|
								   Custom Install Dialog."
							 | 
						|
								
							 | 
						|
								2.5.3.1.3. The Custom Install Dialog
							 | 
						|
								
							 | 
						|
								   If you wish to change the installation path or the specific
							 | 
						|
								   components that are installed by the MySQL Installation Wizard,
							 | 
						|
								   choose the Custom installation type.
							 | 
						|
								
							 | 
						|
								   A tree view on the left side of the custom install dialog lists
							 | 
						|
								   all available components. Components that are not installed have a
							 | 
						|
								   red X icon; components that are installed have a gray icon. To
							 | 
						|
								   change whether a component is installed, click on that component's
							 | 
						|
								   icon and choose a new option from the drop-down list that appears.
							 | 
						|
								
							 | 
						|
								   You can change the default installation path by clicking the
							 | 
						|
								   Change... button to the right of the displayed installation path.
							 | 
						|
								
							 | 
						|
								   After choosing your installation components and installation path,
							 | 
						|
								   click the Next button to advance to the confirmation dialog.
							 | 
						|
								
							 | 
						|
								2.5.3.1.4. The Confirmation Dialog
							 | 
						|
								
							 | 
						|
								   Once you choose an installation type and optionally choose your
							 | 
						|
								   installation components, you advance to the confirmation dialog.
							 | 
						|
								   Your installation type and installation path are displayed for you
							 | 
						|
								   to review.
							 | 
						|
								
							 | 
						|
								   To install MySQL if you are satisfied with your settings, click
							 | 
						|
								   the Install button. To change your settings, click the Back
							 | 
						|
								   button. To exit the MySQL Installation Wizard without installing
							 | 
						|
								   MySQL, click the Cancel button.
							 | 
						|
								
							 | 
						|
								   After installation is complete, you have the option of registering
							 | 
						|
								   with the MySQL web site. Registration gives you access to post in
							 | 
						|
								   the MySQL forums at forums.mysql.com (http://forums.mysql.com),
							 | 
						|
								   along with the ability to report bugs at bugs.mysql.com
							 | 
						|
								   (http://bugs.mysql.com) and to subscribe to our newsletter. The
							 | 
						|
								   final screen of the installer provides a summary of the
							 | 
						|
								   installation and gives you the option to launch the MySQL Config
							 | 
						|
								   Wizard, which you can use to create a configuration file, install
							 | 
						|
								   the MySQL service, and configure security settings.
							 | 
						|
								
							 | 
						|
								2.5.3.1.5. Changes Made by MySQL Installation Wizard
							 | 
						|
								
							 | 
						|
								   Once you click the Install button, the MySQL Installation Wizard
							 | 
						|
								   begins the installation process and makes certain changes to your
							 | 
						|
								   system which are described in the sections that follow.
							 | 
						|
								
							 | 
						|
								   Changes to the Registry
							 | 
						|
								
							 | 
						|
								   The MySQL Installation Wizard creates one Windows registry key in
							 | 
						|
								   a typical install situation, located in
							 | 
						|
								   HKEY_LOCAL_MACHINE\SOFTWARE\MySQL AB.
							 | 
						|
								
							 | 
						|
								   The MySQL Installation Wizard creates a key named after the major
							 | 
						|
								   version of the server that is being installed, such as MySQL
							 | 
						|
								   Server 5.1. It contains two string values, Location and Version.
							 | 
						|
								   The Location string contains the path to the installation
							 | 
						|
								   directory. In a default installation it contains C:\Program
							 | 
						|
								   Files\MySQL\MySQL Server 5.1\. The Version string contains the
							 | 
						|
								   release number. For example, for an installation of MySQL Server
							 | 
						|
								   5.1.46, the key contains a value of 5.1.46.
							 | 
						|
								
							 | 
						|
								   These registry keys are used to help external tools identify the
							 | 
						|
								   installed location of the MySQL server, preventing a complete scan
							 | 
						|
								   of the hard-disk to determine the installation path of the MySQL
							 | 
						|
								   server. The registry keys are not required to run the server, and
							 | 
						|
								   if you install MySQL using the noinstall Zip archive, the registry
							 | 
						|
								   keys are not created.
							 | 
						|
								
							 | 
						|
								   Changes to the Start Menu
							 | 
						|
								
							 | 
						|
								   The MySQL Installation Wizard creates a new entry in the Windows
							 | 
						|
								   Start menu under a common MySQL menu heading named after the major
							 | 
						|
								   version of MySQL that you have installed. For example, if you
							 | 
						|
								   install MySQL 5.1, the MySQL Installation Wizard creates a MySQL
							 | 
						|
								   Server 5.1 section in the Start menu.
							 | 
						|
								
							 | 
						|
								   The following entries are created within the new Start menu
							 | 
						|
								   section:
							 | 
						|
								
							 | 
						|
								     * MySQL Command Line Client: This is a shortcut to the mysql
							 | 
						|
								       command-line client and is configured to connect as the root
							 | 
						|
								       user. The shortcut prompts for a root user password when you
							 | 
						|
								       connect.
							 | 
						|
								
							 | 
						|
								     * MySQL Server Instance Config Wizard: This is a shortcut to the
							 | 
						|
								       MySQL Config Wizard. Use this shortcut to configure a newly
							 | 
						|
								       installed server, or to reconfigure an existing server.
							 | 
						|
								
							 | 
						|
								     * MySQL Documentation: This is a link to the MySQL server
							 | 
						|
								       documentation that is stored locally in the MySQL server
							 | 
						|
								       installation directory. This option is not available when the
							 | 
						|
								       MySQL server is installed using the Essentials installation
							 | 
						|
								       package.
							 | 
						|
								
							 | 
						|
								   Changes to the File System
							 | 
						|
								
							 | 
						|
								   The MySQL Installation Wizard by default installs the MySQL 5.1
							 | 
						|
								   server to C:\Program Files\MySQL\MySQL Server 5.1, where Program
							 | 
						|
								   Files is the default location for applications in your system, and
							 | 
						|
								   5.1 is the major version of your MySQL server. This is the
							 | 
						|
								   recommended location for the MySQL server, replacing the former
							 | 
						|
								   default location C:\mysql.
							 | 
						|
								
							 | 
						|
								   By default, all MySQL applications are stored in a common
							 | 
						|
								   directory at C:\Program Files\MySQL, where Program Files is the
							 | 
						|
								   default location for applications in your Windows installation. A
							 | 
						|
								   typical MySQL installation on a developer machine might look like
							 | 
						|
								   this:
							 | 
						|
								C:\Program Files\MySQL\MySQL Server 5.1
							 | 
						|
								C:\Program Files\MySQL\MySQL Workbench 5.1 OSS
							 | 
						|
								
							 | 
						|
								   This approach makes it easier to manage and maintain all MySQL
							 | 
						|
								   applications installed on a particular system.
							 | 
						|
								
							 | 
						|
								   In MySQL 5.1.23 and earlier, the default location for the data
							 | 
						|
								   files used by MySQL is located within the corresponding MySQL
							 | 
						|
								   Server installation directory. For MySQL 5.1.24 and later, the
							 | 
						|
								   default location of the data directory is the AppData directory
							 | 
						|
								   configured for the user that installed the MySQL application.
							 | 
						|
								
							 | 
						|
								2.5.3.1.6. Upgrading MySQL with the Installation Wizard
							 | 
						|
								
							 | 
						|
								   The MySQL Installation Wizard can perform server upgrades
							 | 
						|
								   automatically using the upgrade capabilities of MSI. That means
							 | 
						|
								   you do not need to remove a previous installation manually before
							 | 
						|
								   installing a new release. The installer automatically shuts down
							 | 
						|
								   and removes the previous MySQL service before installing the new
							 | 
						|
								   version.
							 | 
						|
								
							 | 
						|
								   Automatic upgrades are available only when upgrading between
							 | 
						|
								   installations that have the same major and minor version numbers.
							 | 
						|
								   For example, you can upgrade automatically from MySQL 5.1.34 to
							 | 
						|
								   MySQL 5.1.37, but not from MySQL 5.0 to MySQL 5.1.
							 | 
						|
								
							 | 
						|
								   In MySQL 5.1.32 and later, the EXE version of the MSI installer
							 | 
						|
								   packages were removed. When upgrading an existing MySQL
							 | 
						|
								   installation from the old EXE based installer to the MSI based
							 | 
						|
								   installer, please keep the following notes in mind:
							 | 
						|
								
							 | 
						|
								     * The MSI installer will not identify an existing installation
							 | 
						|
								       that was installed using the old EXE installer. This means
							 | 
						|
								       that the installer will not stop the existing server, or
							 | 
						|
								       detect that the existing password is required before
							 | 
						|
								       installing the new version. To work around this:
							 | 
						|
								
							 | 
						|
								         1. Stop the current server manually using net stop or
							 | 
						|
								            mysqladmin shutdown.
							 | 
						|
								
							 | 
						|
								         2. Remove the existing installation manually by using the
							 | 
						|
								            Add/Remove Programs control panel. This will keep the
							 | 
						|
								            existing configuration and data files, as these are not
							 | 
						|
								            removed automatically.
							 | 
						|
								
							 | 
						|
								         3. Install the new version of MySQL using the MSI installer.
							 | 
						|
								            When running the installation, skip updating the security
							 | 
						|
								            by deselecting the checkbox on the security screen.
							 | 
						|
								
							 | 
						|
								         4. Complete the installation, and then start the server
							 | 
						|
								            again. You should be able to login with your existing
							 | 
						|
								            user and password credentials.
							 | 
						|
								
							 | 
						|
								     * You can only upgrade the version and release using the MSI
							 | 
						|
								       installer. For example, you can upgrade an open source
							 | 
						|
								       installation with an open source installer. You cannot upgrade
							 | 
						|
								       an open source installation using the enterprise installer.
							 | 
						|
								
							 | 
						|
								   See Section 2.5.7, "Upgrading MySQL on Windows."
							 | 
						|
								
							 | 
						|
								2.5.3.2. Installing MySQL Automatically using MSI
							 | 
						|
								
							 | 
						|
								   The Microsoft Installer (MSI) supports a both a quiet and a
							 | 
						|
								   passive mode that can be used to install MySQL automatically
							 | 
						|
								   without requireing intervention. You can use this either in
							 | 
						|
								   scripts to automatically install MySQL or through a terminal
							 | 
						|
								   connection such as Telnet where you do not have access to the
							 | 
						|
								   standard Windows user interface. The MSI packages can also be used
							 | 
						|
								   in combination with Microsoft's Group Policy system (part of
							 | 
						|
								   Windows Server 2003 and Windows Server 2008) to install MySQL
							 | 
						|
								   across multiple machines.
							 | 
						|
								
							 | 
						|
								   To install MySQL from one of the MSI packages automatically from
							 | 
						|
								   the command line (or within a script), you need to use the
							 | 
						|
								   msiexec.exe tool. For example, to perform a quiet installation
							 | 
						|
								   (which shows no dialog boxes or progress):
							 | 
						|
								shell> msiexec /i /quiet mysql-5.1.39.msi
							 | 
						|
								
							 | 
						|
								   The /i indicates that you want to perform an installation. The
							 | 
						|
								   /quiet option indicates that you want no interactive elements.
							 | 
						|
								
							 | 
						|
								   To provide a dialog box showing the progress during installation,
							 | 
						|
								   and the dialog boxes providing information on the installation and
							 | 
						|
								   registration of MySQL, use /passive mode instead of /quiet:
							 | 
						|
								shell> msiexec /i /passive mysql-5.1.39.msi
							 | 
						|
								
							 | 
						|
								   Regardless of the mode of the installation, installing the package
							 | 
						|
								   in this manner performs a 'Typical' installation, and installs the
							 | 
						|
								   default components into the standard location.
							 | 
						|
								
							 | 
						|
								   You can also use this method to uninstall MySQL by using the
							 | 
						|
								   /uninstall or /x options:
							 | 
						|
								shell> msiexec /x /quiet mysql-5.1.39.msi
							 | 
						|
								
							 | 
						|
								   To install MySQL and configure a MySQL instance from the command
							 | 
						|
								   line, see Section 2.5.4.13, "Creating an Instance from the Command
							 | 
						|
								   Line."
							 | 
						|
								
							 | 
						|
								   For information on using MSI packages to install software
							 | 
						|
								   automatically using Group Policy, see How to use Group Policy to
							 | 
						|
								   remotely install software in Windows Server 2003
							 | 
						|
								   (http://support.microsoft.com/kb/816102).
							 | 
						|
								
							 | 
						|
								2.5.3.3. Removing MySQL Installed from the MSI Package
							 | 
						|
								
							 | 
						|
								   To uninstall a MySQL where you have used the MSI packages, you
							 | 
						|
								   must use the Add/Remove Programs tool within Control Panel. To do
							 | 
						|
								   this:
							 | 
						|
								
							 | 
						|
								    1. Right click on the start menu and choose Control Panel.
							 | 
						|
								
							 | 
						|
								    2. If the Control Panel is set to category mode (you will see
							 | 
						|
								       Pick a category at the top of the Control Panel window),
							 | 
						|
								       double click on Add or Remove Programs. If the Control is set
							 | 
						|
								       to classic mode, doubgle click on the Add or Remove Programs
							 | 
						|
								       icon.
							 | 
						|
								
							 | 
						|
								    3. Find MySQL in the list of installed software. MySQL Server is
							 | 
						|
								       installed against major version numbers (MySQL 5.0, MySQL 5.1,
							 | 
						|
								       etc.). Select the version that you want to remove and click
							 | 
						|
								       Remove.
							 | 
						|
								
							 | 
						|
								    4. You will be prompted to confirm the removal. Click Yes to
							 | 
						|
								       remove MySQL.
							 | 
						|
								
							 | 
						|
								   When MySQL is removed using this method, only the installed
							 | 
						|
								   components are removed. Any database information (including the
							 | 
						|
								   tables and data), import or export files, log files, and binary
							 | 
						|
								   logs produced during execution are kept in their configured
							 | 
						|
								   location.
							 | 
						|
								
							 | 
						|
								2.5.4. MySQL Server Instance Config Wizard
							 | 
						|
								
							 | 
						|
								   The MySQL Server Instance Config Wizard helps automate the process
							 | 
						|
								   of configuring your server. It creates a custom MySQL
							 | 
						|
								   configuration file (my.ini or my.cnf) by asking you a series of
							 | 
						|
								   questions and then applying your responses to a template to
							 | 
						|
								   generate the configuration file that is tuned to your
							 | 
						|
								   installation.
							 | 
						|
								
							 | 
						|
								   The complete and essential MSI installation packages include the
							 | 
						|
								   MySQL Server Instance Config Wizard in the MySQL 5.1 server. The
							 | 
						|
								   MySQL Server Instance Config Wizard is only available for Windows.
							 | 
						|
								
							 | 
						|
								   The workflow sequence for using the MySQL Server Instance Config
							 | 
						|
								   Wizard is shown in the figure below:
							 | 
						|
								
							 | 
						|
								   Figure 2.4. MySQL Server Instance Config Wizard Workflow
							 | 
						|
								   MySQL Server Instance Config Wizard Workflow
							 | 
						|
								
							 | 
						|
								2.5.4.1. Starting the MySQL Server Instance Config Wizard
							 | 
						|
								
							 | 
						|
								   The MySQL Server Instance Config Wizard is normally started as
							 | 
						|
								   part of the installation process. You should only need to run the
							 | 
						|
								   MySQL Server Instance Config Wizard again when you need to change
							 | 
						|
								   the configuration parameters of your server.
							 | 
						|
								
							 | 
						|
								   If you chose not to open a port prior to installing MySQL on
							 | 
						|
								   Windows Vista, you can choose to use the MySQL Server Instance
							 | 
						|
								   Config Wizard after installation. However, you must open a port in
							 | 
						|
								   the Windows Firewall. To do this see the instructions given in
							 | 
						|
								   Section 2.5.3.1.1, "Downloading and Starting the MySQL
							 | 
						|
								   Installation Wizard." Rather than opening a port, you also have
							 | 
						|
								   the option of adding MySQL as a program that bypasses the Windows
							 | 
						|
								   Firewall. One or the other option is sufficient --- you need not
							 | 
						|
								   do both. Additionally, when running the MySQL Server Config Wizard
							 | 
						|
								   on Windows Vista ensure that you are logged in as a user with
							 | 
						|
								   administrative rights.
							 | 
						|
								   MySQL Server Instance Config Wizard
							 | 
						|
								
							 | 
						|
								   You can launch the MySQL Config Wizard by clicking the MySQL
							 | 
						|
								   Server Instance Config Wizard entry in the MySQL section of the
							 | 
						|
								   Windows Start menu.
							 | 
						|
								
							 | 
						|
								   Alternatively, you can navigate to the bin directory of your MySQL
							 | 
						|
								   installation and launch the MySQLInstanceConfig.exe file directly.
							 | 
						|
								
							 | 
						|
								   The MySQL Server Instance Config Wizard places the my.ini file in
							 | 
						|
								   the installation directory for the MySQL server. This helps
							 | 
						|
								   associate configuration files with particular server instances.
							 | 
						|
								
							 | 
						|
								   To ensure that the MySQL server knows where to look for the my.ini
							 | 
						|
								   file, an argument similar to this is passed to the MySQL server as
							 | 
						|
								   part of the service installation:
							 | 
						|
								--defaults-file="C:\Program Files\MySQL\MySQL Server 5.1\my.ini"
							 | 
						|
								
							 | 
						|
								   Here, C:\Program Files\MySQL\MySQL Server 5.1 is replaced with the
							 | 
						|
								   installation path to the MySQL Server. The --defaults-file option
							 | 
						|
								   instructs the MySQL server to read the specified file for
							 | 
						|
								   configuration options when it starts.
							 | 
						|
								
							 | 
						|
								   Apart from making changes to the my.ini file by running the MySQL
							 | 
						|
								   Server Instance Config Wizard again, you can modify it by opening
							 | 
						|
								   it with a text editor and making any necessary changes. You can
							 | 
						|
								   also modify the server configuration with the
							 | 
						|
								   http://www.mysql.com/products/administrator/ utility. For more
							 | 
						|
								   information about server configuration, see Section 5.1.2, "Server
							 | 
						|
								   Command Options."
							 | 
						|
								
							 | 
						|
								   MySQL clients and utilities such as the mysql and mysqldump
							 | 
						|
								   command-line clients are not able to locate the my.ini file
							 | 
						|
								   located in the server installation directory. To configure the
							 | 
						|
								   client and utility applications, create a new my.ini file in the
							 | 
						|
								   Windows installation directory (for example, C:\WINDOWS).
							 | 
						|
								
							 | 
						|
								   Under Windows Server 2003, Windows Server 2000, Windows XP, and
							 | 
						|
								   Windows Vista MySQL Server Instance Config Wizard will configure
							 | 
						|
								   MySQL to work as a Windows service. To start and stop MySQL you
							 | 
						|
								   use the Services application that is supplied as part of the
							 | 
						|
								   Windows Administrator Tools.
							 | 
						|
								
							 | 
						|
								2.5.4.2. Choosing a Maintenance Option
							 | 
						|
								
							 | 
						|
								   If the MySQL Server Instance Config Wizard detects an existing
							 | 
						|
								   configuration file, you have the option of either reconfiguring
							 | 
						|
								   your existing server, or removing the server instance by deleting
							 | 
						|
								   the configuration file and stopping and removing the MySQL
							 | 
						|
								   service.
							 | 
						|
								
							 | 
						|
								   To reconfigure an existing server, choose the Re-configure
							 | 
						|
								   Instance option and click the Next button. Any existing
							 | 
						|
								   configuration file is not overwritten, but renamed (within the
							 | 
						|
								   same directory) using a timestamp (Windows) or sequential number
							 | 
						|
								   (Linux). To remove the existing server instance, choose the Remove
							 | 
						|
								   Instance option and click the Next button.
							 | 
						|
								
							 | 
						|
								   If you choose the Remove Instance option, you advance to a
							 | 
						|
								   confirmation window. Click the Execute button. The MySQL Server
							 | 
						|
								   Config Wizard stops and removes the MySQL service, and then
							 | 
						|
								   deletes the configuration file. The server installation and its
							 | 
						|
								   data folder are not removed.
							 | 
						|
								
							 | 
						|
								   If you choose the Re-configure Instance option, you advance to the
							 | 
						|
								   Configuration Type dialog where you can choose the type of
							 | 
						|
								   installation that you wish to configure.
							 | 
						|
								
							 | 
						|
								2.5.4.3. Choosing a Configuration Type
							 | 
						|
								
							 | 
						|
								   When you start the MySQL Server Instance Config Wizard for a new
							 | 
						|
								   MySQL installation, or choose the Re-configure Instance option for
							 | 
						|
								   an existing installation, you advance to the Configuration Type
							 | 
						|
								   dialog.
							 | 
						|
								   MySQL Server Instance Config Wizard: Configuration Type
							 | 
						|
								
							 | 
						|
								   There are two configuration types available: Detailed
							 | 
						|
								   Configuration and Standard Configuration. The Standard
							 | 
						|
								   Configuration option is intended for new users who want to get
							 | 
						|
								   started with MySQL quickly without having to make many decisions
							 | 
						|
								   about server configuration. The Detailed Configuration option is
							 | 
						|
								   intended for advanced users who want more fine-grained control
							 | 
						|
								   over server configuration.
							 | 
						|
								
							 | 
						|
								   If you are new to MySQL and need a server configured as a
							 | 
						|
								   single-user developer machine, the Standard Configuration should
							 | 
						|
								   suit your needs. Choosing the Standard Configuration option causes
							 | 
						|
								   the MySQL Config Wizard to set all configuration options
							 | 
						|
								   automatically with the exception of Service Options and Security
							 | 
						|
								   Options.
							 | 
						|
								
							 | 
						|
								   The Standard Configuration sets options that may be incompatible
							 | 
						|
								   with systems where there are existing MySQL installations. If you
							 | 
						|
								   have an existing MySQL installation on your system in addition to
							 | 
						|
								   the installation you wish to configure, the Detailed Configuration
							 | 
						|
								   option is recommended.
							 | 
						|
								
							 | 
						|
								   To complete the Standard Configuration, please refer to the
							 | 
						|
								   sections on Service Options and Security Options in Section
							 | 
						|
								   2.5.4.10, "The Service Options Dialog," and Section 2.5.4.11, "The
							 | 
						|
								   Security Options Dialog," respectively.
							 | 
						|
								
							 | 
						|
								2.5.4.4. The Server Type Dialog
							 | 
						|
								
							 | 
						|
								   There are three different server types available to choose from.
							 | 
						|
								   The server type that you choose affects the decisions that the
							 | 
						|
								   MySQL Server Instance Config Wizard makes with regard to memory,
							 | 
						|
								   disk, and processor usage.
							 | 
						|
								   MySQL Server Instance Config Wizard: Server Type
							 | 
						|
								
							 | 
						|
								     * Developer Machine: Choose this option for a typical desktop
							 | 
						|
								       workstation where MySQL is intended only for personal use. It
							 | 
						|
								       is assumed that many other desktop applications are running.
							 | 
						|
								       The MySQL server is configured to use minimal system
							 | 
						|
								       resources.
							 | 
						|
								
							 | 
						|
								     * Server Machine: Choose this option for a server machine where
							 | 
						|
								       the MySQL server is running alongside other server
							 | 
						|
								       applications such as FTP, email, and Web servers. The MySQL
							 | 
						|
								       server is configured to use a moderate portion of the system
							 | 
						|
								       resources.
							 | 
						|
								
							 | 
						|
								     * Dedicated MySQL Server Machine: Choose this option for a
							 | 
						|
								       server machine that is intended to run only the MySQL server.
							 | 
						|
								       It is assumed that no other applications are running. The
							 | 
						|
								       MySQL server is configured to use all available system
							 | 
						|
								       resources.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   By selecting one of the preconfigured configurations, the values
							 | 
						|
								   and settings of various options in your my.cnf or my.ini will be
							 | 
						|
								   altered accordingly. The default values and options as described
							 | 
						|
								   in the reference manual may therefore be different to the options
							 | 
						|
								   and values that were created during the execution of the Config
							 | 
						|
								   Wizard.
							 | 
						|
								
							 | 
						|
								2.5.4.5. The Database Usage Dialog
							 | 
						|
								
							 | 
						|
								   The Database Usage dialog allows you to indicate the storage
							 | 
						|
								   engines that you expect to use when creating MySQL tables. The
							 | 
						|
								   option you choose determines whether the InnoDB storage engine is
							 | 
						|
								   available and what percentage of the server resources are
							 | 
						|
								   available to InnoDB.
							 | 
						|
								   MySQL Server Instance Config Wizard: Usage Dialog
							 | 
						|
								
							 | 
						|
								     * Multifunctional Database: This option enables both the InnoDB
							 | 
						|
								       and MyISAM storage engines and divides resources evenly
							 | 
						|
								       between the two. This option is recommended for users who use
							 | 
						|
								       both storage engines on a regular basis.
							 | 
						|
								
							 | 
						|
								     * Transactional Database Only: This option enables both the
							 | 
						|
								       InnoDB and MyISAM storage engines, but dedicates most server
							 | 
						|
								       resources to the InnoDB storage engine. This option is
							 | 
						|
								       recommended for users who use InnoDB almost exclusively and
							 | 
						|
								       make only minimal use of MyISAM.
							 | 
						|
								
							 | 
						|
								     * Non-Transactional Database Only: This option disables the
							 | 
						|
								       InnoDB storage engine completely and dedicates all server
							 | 
						|
								       resources to the MyISAM storage engine. This option is
							 | 
						|
								       recommended for users who do not use InnoDB.
							 | 
						|
								
							 | 
						|
								   The Config Wizard uses a template to generate the server
							 | 
						|
								   configuration file. The Database Usage dialog sets one of the
							 | 
						|
								   following option strings:
							 | 
						|
								Multifunctional Database:        MIXED
							 | 
						|
								Transactional Database Only:     INNODB
							 | 
						|
								Non-Transactional Database Only: MYISAM
							 | 
						|
								
							 | 
						|
								   When these options are processed through the default template
							 | 
						|
								   (my-template.ini) the result is:
							 | 
						|
								Multifunctional Database:
							 | 
						|
								default-storage-engine=InnoDB
							 | 
						|
								_myisam_pct=50
							 | 
						|
								
							 | 
						|
								Transactional Database Only:
							 | 
						|
								default-storage-engine=InnoDB
							 | 
						|
								_myisam_pct=5
							 | 
						|
								
							 | 
						|
								Non-Transactional Database Only:
							 | 
						|
								default-storage-engine=MyISAM
							 | 
						|
								_myisam_pct=100
							 | 
						|
								skip-innodb
							 | 
						|
								
							 | 
						|
								   The _myisam_pct value is used to calculate the percentage of
							 | 
						|
								   resources dedicated to MyISAM. The remaining resources are
							 | 
						|
								   allocated to InnoDB.
							 | 
						|
								
							 | 
						|
								2.5.4.6. The InnoDB Tablespace Dialog
							 | 
						|
								
							 | 
						|
								   Some users may want to locate the InnoDB tablespace files in a
							 | 
						|
								   different location than the MySQL server data directory. Placing
							 | 
						|
								   the tablespace files in a separate location can be desirable if
							 | 
						|
								   your system has a higher capacity or higher performance storage
							 | 
						|
								   device available, such as a RAID storage system.
							 | 
						|
								   MySQL Server Instance Config Wizard: InnoDB Data Tablespace
							 | 
						|
								
							 | 
						|
								   To change the default location for the InnoDB tablespace files,
							 | 
						|
								   choose a new drive from the drop-down list of drive letters and
							 | 
						|
								   choose a new path from the drop-down list of paths. To create a
							 | 
						|
								   custom path, click the ... button.
							 | 
						|
								
							 | 
						|
								   If you are modifying the configuration of an existing server, you
							 | 
						|
								   must click the Modify button before you change the path. In this
							 | 
						|
								   situation you must move the existing tablespace files to the new
							 | 
						|
								   location manually before starting the server.
							 | 
						|
								
							 | 
						|
								2.5.4.7. The Concurrent Connections Dialog
							 | 
						|
								
							 | 
						|
								   To prevent the server from running out of resources, it is
							 | 
						|
								   important to limit the number of concurrent connections to the
							 | 
						|
								   MySQL server that can be established. The Concurrent Connections
							 | 
						|
								   dialog allows you to choose the expected usage of your server, and
							 | 
						|
								   sets the limit for concurrent connections accordingly. It is also
							 | 
						|
								   possible to set the concurrent connection limit manually.
							 | 
						|
								   MySQL Server Instance Config Wizard: Connections
							 | 
						|
								
							 | 
						|
								     * Decision Support (DSS)/OLAP: Choose this option if your server
							 | 
						|
								       does not require a large number of concurrent connections. The
							 | 
						|
								       maximum number of connections is set at 100, with an average
							 | 
						|
								       of 20 concurrent connections assumed.
							 | 
						|
								
							 | 
						|
								     * Online Transaction Processing (OLTP): Choose this option if
							 | 
						|
								       your server requires a large number of concurrent connections.
							 | 
						|
								       The maximum number of connections is set at 500.
							 | 
						|
								
							 | 
						|
								     * Manual Setting: Choose this option to set the maximum number
							 | 
						|
								       of concurrent connections to the server manually. Choose the
							 | 
						|
								       number of concurrent connections from the drop-down box
							 | 
						|
								       provided, or enter the maximum number of connections into the
							 | 
						|
								       drop-down box if the number you desire is not listed.
							 | 
						|
								
							 | 
						|
								2.5.4.8. The Networking and Strict Mode Options Dialog
							 | 
						|
								
							 | 
						|
								   Use the Networking Options dialog to enable or disable TCP/IP
							 | 
						|
								   networking and to configure the port number that is used to
							 | 
						|
								   connect to the MySQL server.
							 | 
						|
								   MySQL Server Instance Config Wizard: Network Configuration
							 | 
						|
								
							 | 
						|
								   TCP/IP networking is enabled by default. To disable TCP/IP
							 | 
						|
								   networking, uncheck the box next to the Enable TCP/IP Networking
							 | 
						|
								   option.
							 | 
						|
								
							 | 
						|
								   Port 3306 is used by default. To change the port used to access
							 | 
						|
								   MySQL, choose a new port number from the drop-down box or type a
							 | 
						|
								   new port number directly into the drop-down box. If the port
							 | 
						|
								   number you choose is in use, you are prompted to confirm your
							 | 
						|
								   choice of port number.
							 | 
						|
								
							 | 
						|
								   Set the Server SQL Mode to either enable or disable strict mode.
							 | 
						|
								   Enabling strict mode (default) makes MySQL behave more like other
							 | 
						|
								   database management systems. If you run applications that rely on
							 | 
						|
								   MySQL's old "forgiving" behavior, make sure to either adapt those
							 | 
						|
								   applications or to disable strict mode. For more information about
							 | 
						|
								   strict mode, see Section 5.1.8, "Server SQL Modes."
							 | 
						|
								
							 | 
						|
								2.5.4.9. The Character Set Dialog
							 | 
						|
								
							 | 
						|
								   The MySQL server supports multiple character sets and it is
							 | 
						|
								   possible to set a default server character set that is applied to
							 | 
						|
								   all tables, columns, and databases unless overridden. Use the
							 | 
						|
								   Character Set dialog to change the default character set of the
							 | 
						|
								   MySQL server.
							 | 
						|
								   MySQL Server Instance Config Wizard: Character Set
							 | 
						|
								
							 | 
						|
								     * Standard Character Set: Choose this option if you want to use
							 | 
						|
								       latin1 as the default server character set. latin1 is used for
							 | 
						|
								       English and many Western European languages.
							 | 
						|
								
							 | 
						|
								     * Best Support For Multilingualism: Choose this option if you
							 | 
						|
								       want to use utf8 as the default server character set. This is
							 | 
						|
								       a Unicode character set that can store characters from many
							 | 
						|
								       different languages.
							 | 
						|
								
							 | 
						|
								     * Manual Selected Default Character Set / Collation: Choose this
							 | 
						|
								       option if you want to pick the server's default character set
							 | 
						|
								       manually. Choose the desired character set from the provided
							 | 
						|
								       drop-down list.
							 | 
						|
								
							 | 
						|
								2.5.4.10. The Service Options Dialog
							 | 
						|
								
							 | 
						|
								   On Windows platforms, the MySQL server can be installed as a
							 | 
						|
								   Windows service. When installed this way, the MySQL server can be
							 | 
						|
								   started automatically during system startup, and even restarted
							 | 
						|
								   automatically by Windows in the event of a service failure.
							 | 
						|
								
							 | 
						|
								   The MySQL Server Instance Config Wizard installs the MySQL server
							 | 
						|
								   as a service by default, using the service name MySQL. If you do
							 | 
						|
								   not wish to install the service, uncheck the box next to the
							 | 
						|
								   Install As Windows Service option. You can change the service name
							 | 
						|
								   by picking a new service name from the drop-down box provided or
							 | 
						|
								   by entering a new service name into the drop-down box.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   Service names can include any legal character except forward (/)
							 | 
						|
								   or backward (\) slashes, and must be less than 256 characters
							 | 
						|
								   long.
							 | 
						|
								
							 | 
						|
								Warning
							 | 
						|
								
							 | 
						|
								   If you are installing multiple versions of MySQL onto the same
							 | 
						|
								   machine, you must choose a different service name for each version
							 | 
						|
								   that you install. If you do not choose a different service for
							 | 
						|
								   each installed version then the service manager information will
							 | 
						|
								   be inconsistent and this will cause problems when you try to
							 | 
						|
								   uninstall a previous version.
							 | 
						|
								
							 | 
						|
								   If you have already installed multiple versions using the same
							 | 
						|
								   service name, you must manually edit the contents of the
							 | 
						|
								   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services parameters
							 | 
						|
								   within the Windows registry to update the association of the
							 | 
						|
								   service name with the correct server version.
							 | 
						|
								
							 | 
						|
								   Typically, when installing multiple versions you create a service
							 | 
						|
								   name based on the version information. For example, you might
							 | 
						|
								   install MySQL 5.x as mysql5, or specific versions such as MySQL
							 | 
						|
								   5.1.30 as mysql50130.
							 | 
						|
								
							 | 
						|
								   To install the MySQL server as a service but not have it started
							 | 
						|
								   automatically at startup, uncheck the box next to the Launch the
							 | 
						|
								   MySQL Server Automatically option.
							 | 
						|
								
							 | 
						|
								2.5.4.11. The Security Options Dialog
							 | 
						|
								
							 | 
						|
								   The content of the security options portion of the MySQL Server
							 | 
						|
								   Instance Configuration Wizard will depend on whether this is a new
							 | 
						|
								   installation, or modifying an existing installation.
							 | 
						|
								
							 | 
						|
								     * Setting the root password for a new installation
							 | 
						|
								       It is strongly recommended that you set a root password for
							 | 
						|
								       your MySQL server, and the MySQL Server Instance Config Wizard
							 | 
						|
								       requires by default that you do so. If you do not wish to set
							 | 
						|
								       a root password, uncheck the box next to the Modify Security
							 | 
						|
								       Settings option.
							 | 
						|
								       MySQL Server Instance Config Wizard: Security
							 | 
						|
								
							 | 
						|
								     * To set the root password, enter the desired password into both
							 | 
						|
								       the New root password and Confirm boxes.
							 | 
						|
								       Setting the root password for an existing installation
							 | 
						|
								       If you are modifying the configuration of an existing
							 | 
						|
								       configuration, or you are installing an upgrade and the MySQL
							 | 
						|
								       Server Instance Configuration Wizard has detected an existing
							 | 
						|
								       MySQL system, then you must enter the existing password for
							 | 
						|
								       root before changing the configuration information.
							 | 
						|
								       MySQL Server Instance Config Wizard: Security (Existing
							 | 
						|
								       Installation)
							 | 
						|
								       If you want to change the current root password, enter the
							 | 
						|
								       desired new password into both the New root password and
							 | 
						|
								       Confirm boxes.
							 | 
						|
								
							 | 
						|
								   To allow root logins from across the network, check the box next
							 | 
						|
								   to the Enable root access from remote machines option. This
							 | 
						|
								   decreases the security of your root account.
							 | 
						|
								
							 | 
						|
								   To create an anonymous user account, check the box next to the
							 | 
						|
								   Create An Anonymous Account option. Creating an anonymous account
							 | 
						|
								   can decrease server security and cause login and permission
							 | 
						|
								   difficulties. For this reason, it is not recommended.
							 | 
						|
								
							 | 
						|
								2.5.4.12. The Confirmation Dialog
							 | 
						|
								
							 | 
						|
								   The final dialog in the MySQL Server Instance Config Wizard is the
							 | 
						|
								   Confirmation Dialog. To start the configuration process, click the
							 | 
						|
								   Execute button. To return to a previous dialog, click the Back
							 | 
						|
								   button. To exit the MySQL Server Instance Config Wizard without
							 | 
						|
								   configuring the server, click the Cancel button.
							 | 
						|
								   MySQL Server Instance Config Wizard: Confirmation
							 | 
						|
								
							 | 
						|
								   After you click the Execute button, the MySQL Server Instance
							 | 
						|
								   Config Wizard performs a series of tasks and displays the progress
							 | 
						|
								   onscreen as the tasks are performed.
							 | 
						|
								
							 | 
						|
								   The MySQL Server Instance Config Wizard first determines
							 | 
						|
								   configuration file options based on your choices using a template
							 | 
						|
								   prepared by MySQL developers and engineers. This template is named
							 | 
						|
								   my-template.ini and is located in your server installation
							 | 
						|
								   directory.
							 | 
						|
								
							 | 
						|
								   The MySQL Config Wizard then writes these options to the
							 | 
						|
								   corresponding configuration file.
							 | 
						|
								
							 | 
						|
								   If you chose to create a service for the MySQL server, the MySQL
							 | 
						|
								   Server Instance Config Wizard creates and starts the service. If
							 | 
						|
								   you are reconfiguring an existing service, the MySQL Server
							 | 
						|
								   Instance Config Wizard restarts the service to apply your
							 | 
						|
								   configuration changes.
							 | 
						|
								
							 | 
						|
								   If you chose to set a root password, the MySQL Config Wizard
							 | 
						|
								   connects to the server, sets your new root password, and applies
							 | 
						|
								   any other security settings you may have selected.
							 | 
						|
								
							 | 
						|
								   After the MySQL Server Instance Config Wizard has completed its
							 | 
						|
								   tasks, it displays a summary. Click the Finish button to exit the
							 | 
						|
								   MySQL Server Config Wizard.
							 | 
						|
								
							 | 
						|
								2.5.4.13. Creating an Instance from the Command Line
							 | 
						|
								
							 | 
						|
								   In addition to using the GUI interface to the MySQL Server
							 | 
						|
								   Instance Config Wizard, you can also create instances
							 | 
						|
								   automatically from the command line.
							 | 
						|
								
							 | 
						|
								   To use the MySQL Server Instance Config Wizard on the command
							 | 
						|
								   line, you need to use the MySQLInstanceConfig.exe command that is
							 | 
						|
								   installed with MySQL in the bin directory within the installation
							 | 
						|
								   directory. MySQLInstanceConfig.exe takes a number of command-line
							 | 
						|
								   arguments the set the properties that would normally be selected
							 | 
						|
								   through the GUI interface, and then creates a new configuration
							 | 
						|
								   file (my.ini) by combining these selections with a template
							 | 
						|
								   configuration file to produce the working configuration file.
							 | 
						|
								
							 | 
						|
								   The main command line options are provided in the table below.
							 | 
						|
								   Some of the options are required, while some options are optional.
							 | 
						|
								
							 | 
						|
								   Table 2.4. MySQL Server Instance Config Wizard Command Line
							 | 
						|
								   Options
							 | 
						|
								   Option Description
							 | 
						|
								   Required Parameters
							 | 
						|
								   -nPRODUCTNAME The name of the instance when installed
							 | 
						|
								   -pPATH Path of the base directory for installation. This is
							 | 
						|
								   equivalent to the directory when using the basedir configuration
							 | 
						|
								   parameter
							 | 
						|
								   -vVERSION The version tag to use for this installation
							 | 
						|
								   Action to Perform
							 | 
						|
								   -i Install an instance
							 | 
						|
								   -r Remove an instance
							 | 
						|
								   -s Stop an existing instance
							 | 
						|
								   -q Perform the operation quietly
							 | 
						|
								   -lFILENAME Sae the installation progress in a logfile
							 | 
						|
								   Config File to Use
							 | 
						|
								   -tFILENAME Path to the template config file that will be used to
							 | 
						|
								   generate the installed configuration file
							 | 
						|
								   -cFILENAME Path to a config file to be generated
							 | 
						|
								
							 | 
						|
								   The -t and -c options work together to set the configuration
							 | 
						|
								   parameters for a new instance. The -t option specifies the
							 | 
						|
								   template configuration file to use as the basic configuration,
							 | 
						|
								   which are then merged with the configuration parameters generated
							 | 
						|
								   by the MySQL Server Instance Config Wizard into the configuration
							 | 
						|
								   file specified by the -c option.
							 | 
						|
								
							 | 
						|
								   A sample template file, my-template.ini is provided in the
							 | 
						|
								   toplevel MySQL installation directory. The file contains elements
							 | 
						|
								   are replaced automatically by the MySQL Server Instance Config
							 | 
						|
								   Wizard during configuration.
							 | 
						|
								
							 | 
						|
								   If you specify a configuration file that already exists, the
							 | 
						|
								   existing configuration file will be saved in the file with the
							 | 
						|
								   original, with the date and time added. For example, the mysql.ini
							 | 
						|
								   will be copied to mysql 2009-10-27 1646.ini.bak.
							 | 
						|
								
							 | 
						|
								   The parameters that you can specify on the command line are listed
							 | 
						|
								   in the table below.
							 | 
						|
								
							 | 
						|
								   Table 2.5. MySQL Server Instance Config Wizard Parameters
							 | 
						|
								   Parameter Description
							 | 
						|
								   ServiceName=$ Specify the name of the service to be created
							 | 
						|
								   AddBinToPath={yes | no} Specifies whether to add the binary
							 | 
						|
								   directory of MySQL to the standard PATH environment variable
							 | 
						|
								   ServerType={DEVELOPMENT | SERVER | DEDICATED} Specify the server
							 | 
						|
								   type. For more information, see Section 2.5.4.4, "The Server Type
							 | 
						|
								   Dialog"
							 | 
						|
								   DatabaseType={MIXED | INNODB | MYISAM} Specify the default
							 | 
						|
								   database type. For more information, see Section 2.5.4.5, "The
							 | 
						|
								   Database Usage Dialog"
							 | 
						|
								   ConnectionUsage={DSS | OLTP} Specify the type of connection
							 | 
						|
								   support, this automates the setting for the number of concurrent
							 | 
						|
								   connections (see the ConnectionCount parameter). For more
							 | 
						|
								   information, see Section 2.5.4.7, "The Concurrent Connections
							 | 
						|
								   Dialog"
							 | 
						|
								   ConnectionCount=# Specify the number of concurrent connections to
							 | 
						|
								   support. For more information, see Section 2.5.4.4, "The Server
							 | 
						|
								   Type Dialog"
							 | 
						|
								   SkipNetworking={yes | no} Specify whether network support should
							 | 
						|
								   be supported. Specifying yes disables network access altogether
							 | 
						|
								   Port=# Specify the network port number to use for network
							 | 
						|
								   connections. For more information, see Section 2.5.4.8, "The
							 | 
						|
								   Networking and Strict Mode Options Dialog"
							 | 
						|
								   StrictMode={yes | no} Specify whether to use the strict SQL mode.
							 | 
						|
								   For more information, see Section 2.5.4.8, "The Networking and
							 | 
						|
								   Strict Mode Options Dialog"
							 | 
						|
								   Charset=$ Specify the default character set. For more information,
							 | 
						|
								   see Section 2.5.4.9, "The Character Set Dialog"
							 | 
						|
								   RootPassword=$ Specify the root password
							 | 
						|
								   RootCurrentPassword=$ Specify the current root password then
							 | 
						|
								   stopping and/or reconfiguring an existing service
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   When specifying options on the command line, you can enclose the
							 | 
						|
								   entire command-line option and the value you are specifying using
							 | 
						|
								   double quotes. This enables you to use spaces in the options. For
							 | 
						|
								   example, "-cC:\mysql.ini".
							 | 
						|
								
							 | 
						|
								   The following command installs a MySQL Server 5.1 instance from
							 | 
						|
								   the directory C:\Program Files\MySQL\MySQL Server 5.1 using the
							 | 
						|
								   service name MySQL51 and setting the root password to 1234.
							 | 
						|
								shell> MySQLInstanceConfig.exe -i -q "-lC:\mysql_install_log.txt" »
							 | 
						|
								   "-nMySQL Server 5.1" "-pC:\Program Files\MySQL\MySQL Server 5.1" -
							 | 
						|
								v5.1.39 »
							 | 
						|
								   "-tmy-template.ini" "-cC:\mytest.ini" ServerType=DEVELOPMENT Datab
							 | 
						|
								aseType=MIXED »
							 | 
						|
								   ConnectionUsage=DSS Port=3311 ServiceName=MySQL51 RootPassword=123
							 | 
						|
								4
							 | 
						|
								
							 | 
						|
								   In the above example, a log file will be generated in
							 | 
						|
								   mysql_install_log.txt containing the information about the
							 | 
						|
								   instance creation process. The log file generated by the above
							 | 
						|
								   example is shown below:
							 | 
						|
								Welcome to the MySQL Server Instance Configuration Wizard 1.0.16.0
							 | 
						|
								Date: 2009-10-27 17:07:21
							 | 
						|
								
							 | 
						|
								Installing service ...
							 | 
						|
								
							 | 
						|
								Product Name:         MySQL Server 5.1
							 | 
						|
								Version:              5.1.39
							 | 
						|
								Installation Path:    C:\Program Files\MySQL\MySQL Server 5.1\
							 | 
						|
								
							 | 
						|
								Creating configuration file C:\mytest.ini using template my-template.
							 | 
						|
								ini.
							 | 
						|
								Options:
							 | 
						|
								DEVELOPMENT
							 | 
						|
								MIXED
							 | 
						|
								DSS
							 | 
						|
								STRICTMODE
							 | 
						|
								
							 | 
						|
								Variables:
							 | 
						|
								port: 3311
							 | 
						|
								default-character-set: latin1
							 | 
						|
								basedir: "C:/Program Files/MySQL/MySQL Server 5.1/"
							 | 
						|
								datadir: "C:/Program Files/MySQL/MySQL Server 5.1/Data/"
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								Creating Windows service entry.
							 | 
						|
								Service name: "MySQL51"
							 | 
						|
								Parameters:   "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --
							 | 
						|
								defaults-file="C:\mytest.ini" MySQL51.
							 | 
						|
								Windows service MySQL51 installed.
							 | 
						|
								
							 | 
						|
								   When using the command-line, the return values in the following
							 | 
						|
								   table indicate an error performing the specified option.
							 | 
						|
								
							 | 
						|
								   Table 2.6. Return Value from MySQL Server Instance Config Wizard
							 | 
						|
								   Value                   Description
							 | 
						|
								   2     Configuration template file cannot be found
							 | 
						|
								   3     The Windows service entry cannot be created
							 | 
						|
								   4     Could not connect to the Service Control Manager
							 | 
						|
								   5     The MySQL service cannot be started
							 | 
						|
								   6     The MySQL service cannot be stopped
							 | 
						|
								   7     The security settings cannot be applied
							 | 
						|
								   8     The configuration file cannot be written
							 | 
						|
								   9     The Windows service entry cannot be removed
							 | 
						|
								
							 | 
						|
								   You can perform an installation of MySQL automatically using the
							 | 
						|
								   MSI packe. For more information, see Section 2.5.3.2, "Installing
							 | 
						|
								   MySQL Automatically using MSI."
							 | 
						|
								
							 | 
						|
								2.5.5. Installing MySQL from a noinstall Zip Archive
							 | 
						|
								
							 | 
						|
								   Users who are installing from the noinstall package can use the
							 | 
						|
								   instructions in this section to manually install MySQL. The
							 | 
						|
								   process for installing MySQL from a Zip archive is as follows:
							 | 
						|
								
							 | 
						|
								    1. Extract the archive to the desired install directory
							 | 
						|
								
							 | 
						|
								    2. Create an option file
							 | 
						|
								
							 | 
						|
								    3. Choose a MySQL server type
							 | 
						|
								
							 | 
						|
								    4. Start the MySQL server
							 | 
						|
								
							 | 
						|
								    5. Secure the default user accounts
							 | 
						|
								
							 | 
						|
								   This process is described in the sections that follow.
							 | 
						|
								
							 | 
						|
								2.5.5.1. Extracting the Install Archive
							 | 
						|
								
							 | 
						|
								   To install MySQL manually, do the following:
							 | 
						|
								
							 | 
						|
								    1. If you are upgrading from a previous version please refer to
							 | 
						|
								       Section 2.5.7, "Upgrading MySQL on Windows," before beginning
							 | 
						|
								       the upgrade process.
							 | 
						|
								
							 | 
						|
								    2. Make sure that you are logged in as a user with administrator
							 | 
						|
								       privileges.
							 | 
						|
								
							 | 
						|
								    3. Choose an installation location. Traditionally, the MySQL
							 | 
						|
								       server is installed in C:\mysql. The MySQL Installation Wizard
							 | 
						|
								       installs MySQL under C:\Program Files\MySQL. If you do not
							 | 
						|
								       install MySQL at C:\mysql, you must specify the path to the
							 | 
						|
								       install directory during startup or in an option file. See
							 | 
						|
								       Section 2.5.5.2, "Creating an Option File."
							 | 
						|
								
							 | 
						|
								    4. Extract the install archive to the chosen installation
							 | 
						|
								       location using your preferred Zip archive tool. Some tools may
							 | 
						|
								       extract the archive to a folder within your chosen
							 | 
						|
								       installation location. If this occurs, you can move the
							 | 
						|
								       contents of the subfolder into the chosen installation
							 | 
						|
								       location.
							 | 
						|
								
							 | 
						|
								2.5.5.2. Creating an Option File
							 | 
						|
								
							 | 
						|
								   If you need to specify startup options when you run the server,
							 | 
						|
								   you can indicate them on the command line or place them in an
							 | 
						|
								   option file. For options that are used every time the server
							 | 
						|
								   starts, you may find it most convenient to use an option file to
							 | 
						|
								   specify your MySQL configuration. This is particularly true under
							 | 
						|
								   the following circumstances:
							 | 
						|
								
							 | 
						|
								     * The installation or data directory locations are different
							 | 
						|
								       from the default locations (C:\Program Files\MySQL\MySQL
							 | 
						|
								       Server 5.1 and C:\Program Files\MySQL\MySQL Server 5.1\data).
							 | 
						|
								
							 | 
						|
								     * You need to tune the server settings, such as memory, cache,
							 | 
						|
								       or InnoDB configuration information.
							 | 
						|
								
							 | 
						|
								   When the MySQL server starts on Windows, it looks for option files
							 | 
						|
								   in several locations, such as the Windows directory, C:\, and the
							 | 
						|
								   MySQL installation directory (for the full list of locations, see
							 | 
						|
								   Section 4.2.3.3, "Using Option Files"). The Windows directory
							 | 
						|
								   typically is named something like C:\WINDOWS. You can determine
							 | 
						|
								   its exact location from the value of the WINDIR environment
							 | 
						|
								   variable using the following command:
							 | 
						|
								C:\> echo %WINDIR%
							 | 
						|
								
							 | 
						|
								   MySQL looks for options in each location first in the my.ini file,
							 | 
						|
								   and then in the my.cnf file. However, to avoid confusion, it is
							 | 
						|
								   best if you use only one file. If your PC uses a boot loader where
							 | 
						|
								   C: is not the boot drive, your only option is to use the my.ini
							 | 
						|
								   file. Whichever option file you use, it must be a plain text file.
							 | 
						|
								
							 | 
						|
								   You can also make use of the example option files included with
							 | 
						|
								   your MySQL distribution; see Section 4.2.3.3.2, "Preconfigured
							 | 
						|
								   Option Files."
							 | 
						|
								
							 | 
						|
								   An option file can be created and modified with any text editor,
							 | 
						|
								   such as Notepad. For example, if MySQL is installed in E:\mysql
							 | 
						|
								   and the data directory is in E:\mydata\data, you can create an
							 | 
						|
								   option file containing a [mysqld] section to specify values for
							 | 
						|
								   the basedir and datadir options:
							 | 
						|
								[mysqld]
							 | 
						|
								# set basedir to your installation path
							 | 
						|
								basedir=E:/mysql
							 | 
						|
								# set datadir to the location of your data directory
							 | 
						|
								datadir=E:/mydata/data
							 | 
						|
								
							 | 
						|
								   Note that Windows path names are specified in option files using
							 | 
						|
								   (forward) slashes rather than backslashes. If you do use
							 | 
						|
								   backslashes, double them:
							 | 
						|
								[mysqld]
							 | 
						|
								# set basedir to your installation path
							 | 
						|
								basedir=E:\\mysql
							 | 
						|
								# set datadir to the location of your data directory
							 | 
						|
								datadir=E:\\mydata\\data
							 | 
						|
								
							 | 
						|
								   The rules for use of backslash in option file values are given in
							 | 
						|
								   Section 4.2.3.3, "Using Option Files."
							 | 
						|
								
							 | 
						|
								   MySQL Enterprise For expert advice on the start-up options
							 | 
						|
								   appropriate to your circumstances, subscribe to the MySQL
							 | 
						|
								   Enterprise Monitor. For more information, see
							 | 
						|
								   http://www.mysql.com/products/enterprise/advisors.html.
							 | 
						|
								
							 | 
						|
								   In MySQL 5.1.23 and earlier, the MySQL installer places the data
							 | 
						|
								   directory directly under the directory where you install MySQL. On
							 | 
						|
								   MySQL 5.1.24 and later, the data directory is located within the
							 | 
						|
								   AppData directory for the user running MySQL.
							 | 
						|
								
							 | 
						|
								   If you would like to use a data directory in a different location,
							 | 
						|
								   you should copy the entire contents of the data directory to the
							 | 
						|
								   new location. For example, if you want to use E:\mydata as the
							 | 
						|
								   data directory instead, you must do two things:
							 | 
						|
								
							 | 
						|
								    1. Move the entire data directory and all of its contents from
							 | 
						|
								       the default location (for example C:\Program Files\MySQL\MySQL
							 | 
						|
								       Server 5.1\data) to E:\mydata.
							 | 
						|
								
							 | 
						|
								    2. Use a --datadir option to specify the new data directory
							 | 
						|
								       location each time you start the server.
							 | 
						|
								
							 | 
						|
								2.5.5.3. Selecting a MySQL Server Type
							 | 
						|
								
							 | 
						|
								   The following table shows the available servers for Windows in
							 | 
						|
								   MySQL 5.1.20 and earlier.
							 | 
						|
								   Binary Description
							 | 
						|
								   mysqld-nt Optimized binary with named-pipe support
							 | 
						|
								   mysqld Optimized binary without named-pipe support
							 | 
						|
								   mysqld-debug Like mysqld-nt, but compiled with full debugging and
							 | 
						|
								   automatic memory allocation checking
							 | 
						|
								
							 | 
						|
								   The following table shows the available servers for Windows in
							 | 
						|
								   MySQL 5.1.21 and later.
							 | 
						|
								   Binary Description
							 | 
						|
								   mysqld Optimized binary with named-pipe support
							 | 
						|
								   mysqld-debug Like mysqld, but compiled with full debugging and
							 | 
						|
								   automatic memory allocation checking
							 | 
						|
								
							 | 
						|
								   All of the preceding binaries are optimized for modern Intel
							 | 
						|
								   processors, but should work on any Intel i386-class or higher
							 | 
						|
								   processor.
							 | 
						|
								
							 | 
						|
								   Each of the servers in a distribution support the same set of
							 | 
						|
								   storage engines. The SHOW ENGINES statement displays which engines
							 | 
						|
								   a given server supports.
							 | 
						|
								
							 | 
						|
								   All Windows MySQL 5.1 servers have support for symbolic linking of
							 | 
						|
								   database directories.
							 | 
						|
								
							 | 
						|
								   MySQL supports TCP/IP on all Windows platforms. MySQL servers on
							 | 
						|
								   Windows support named pipes as indicated in the following list.
							 | 
						|
								   However, the default is to use TCP/IP regardless of platform.
							 | 
						|
								   (Named pipes are slower than TCP/IP in many Windows
							 | 
						|
								   configurations.)
							 | 
						|
								
							 | 
						|
								   Use of named pipes is subject to these conditions:
							 | 
						|
								
							 | 
						|
								     * Named pipes are enabled only if you start the server with the
							 | 
						|
								       --enable-named-pipe option. It is necessary to use this option
							 | 
						|
								       explicitly because some users have experienced problems with
							 | 
						|
								       shutting down the MySQL server when named pipes were used.
							 | 
						|
								
							 | 
						|
								     * For MySQL 5.1.20 and earlier, named-pipe connections are
							 | 
						|
								       allowed only by the mysqld-nt and mysqld-debug servers. For
							 | 
						|
								       MySQL 5.1.21 and later, the mysqld and mysqld-debug servers
							 | 
						|
								       both contain support for named-pipe connections.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   Most of the examples in this manual use mysqld as the server name.
							 | 
						|
								   If you choose to use a different server, such as mysqld-nt or
							 | 
						|
								   mysqld-debug, make the appropriate substitutions in the commands
							 | 
						|
								   that are shown in the examples.
							 | 
						|
								
							 | 
						|
								2.5.5.4. Starting the Server for the First Time
							 | 
						|
								
							 | 
						|
								   This section gives a general overview of starting the MySQL
							 | 
						|
								   server. The following sections provide more specific information
							 | 
						|
								   for starting the MySQL server from the command line or as a
							 | 
						|
								   Windows service.
							 | 
						|
								
							 | 
						|
								   The information here applies primarily if you installed MySQL
							 | 
						|
								   using the Noinstall version, or if you wish to configure and test
							 | 
						|
								   MySQL manually rather than with the GUI tools.
							 | 
						|
								
							 | 
						|
								   The examples in these sections assume that MySQL is installed
							 | 
						|
								   under the default location of C:\Program Files\MySQL\MySQL Server
							 | 
						|
								   5.1. Adjust the path names shown in the examples if you have MySQL
							 | 
						|
								   installed in a different location.
							 | 
						|
								
							 | 
						|
								   Clients have two options. They can use TCP/IP, or they can use a
							 | 
						|
								   named pipe if the server supports named-pipe connections.
							 | 
						|
								
							 | 
						|
								   MySQL for Windows also supports shared-memory connections if the
							 | 
						|
								   server is started with the --shared-memory option. Clients can
							 | 
						|
								   connect through shared memory by using the --protocol=MEMORY
							 | 
						|
								   option.
							 | 
						|
								
							 | 
						|
								   For information about which server binary to run, see Section
							 | 
						|
								   2.5.5.3, "Selecting a MySQL Server Type."
							 | 
						|
								
							 | 
						|
								   Testing is best done from a command prompt in a console window (or
							 | 
						|
								   "DOS window"). In this way you can have the server display status
							 | 
						|
								   messages in the window where they are easy to see. If something is
							 | 
						|
								   wrong with your configuration, these messages make it easier for
							 | 
						|
								   you to identify and fix any problems.
							 | 
						|
								
							 | 
						|
								   To start the server, enter this command:
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --console
							 | 
						|
								
							 | 
						|
								   For a server that includes InnoDB support, you should see the
							 | 
						|
								   messages similar to those following as it starts (the path names
							 | 
						|
								   and sizes may differ):
							 | 
						|
								InnoDB: The first specified datafile c:\ibdata\ibdata1 did not exist:
							 | 
						|
								InnoDB: a new database to be created!
							 | 
						|
								InnoDB: Setting file c:\ibdata\ibdata1 size to 209715200
							 | 
						|
								InnoDB: Database physically writes the file full: wait...
							 | 
						|
								InnoDB: Log file c:\iblogs\ib_logfile0 did not exist: new to be creat
							 | 
						|
								ed
							 | 
						|
								InnoDB: Setting log file c:\iblogs\ib_logfile0 size to 31457280
							 | 
						|
								InnoDB: Log file c:\iblogs\ib_logfile1 did not exist: new to be creat
							 | 
						|
								ed
							 | 
						|
								InnoDB: Setting log file c:\iblogs\ib_logfile1 size to 31457280
							 | 
						|
								InnoDB: Log file c:\iblogs\ib_logfile2 did not exist: new to be creat
							 | 
						|
								ed
							 | 
						|
								InnoDB: Setting log file c:\iblogs\ib_logfile2 size to 31457280
							 | 
						|
								InnoDB: Doublewrite buffer not found: creating new
							 | 
						|
								InnoDB: Doublewrite buffer created
							 | 
						|
								InnoDB: creating foreign key constraint system tables
							 | 
						|
								InnoDB: foreign key constraint system tables created
							 | 
						|
								011024 10:58:25  InnoDB: Started
							 | 
						|
								
							 | 
						|
								   When the server finishes its startup sequence, you should see
							 | 
						|
								   something like this, which indicates that the server is ready to
							 | 
						|
								   service client connections:
							 | 
						|
								mysqld: ready for connections
							 | 
						|
								Version: '5.1.46'  socket: ''  port: 3306
							 | 
						|
								
							 | 
						|
								   The server continues to write to the console any further
							 | 
						|
								   diagnostic output it produces. You can open a new console window
							 | 
						|
								   in which to run client programs.
							 | 
						|
								
							 | 
						|
								   If you omit the --console option, the server writes diagnostic
							 | 
						|
								   output to the error log in the data directory (C:\Program
							 | 
						|
								   Files\MySQL\MySQL Server 5.1\data by default). The error log is
							 | 
						|
								   the file with the .err extension.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   The accounts that are listed in the MySQL grant tables initially
							 | 
						|
								   have no passwords. After starting the server, you should set up
							 | 
						|
								   passwords for them using the instructions in Section 2.13,
							 | 
						|
								   "Post-Installation Setup and Testing."
							 | 
						|
								
							 | 
						|
								2.5.5.5. Starting MySQL from the Windows Command Line
							 | 
						|
								
							 | 
						|
								   The MySQL server can be started manually from the command line.
							 | 
						|
								   This can be done on any version of Windows.
							 | 
						|
								
							 | 
						|
								   To start the mysqld server from the command line, you should start
							 | 
						|
								   a console window (or "DOS window") and enter this command:
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld"
							 | 
						|
								
							 | 
						|
								   The path to mysqld may vary depending on the install location of
							 | 
						|
								   MySQL on your system.
							 | 
						|
								
							 | 
						|
								   You can stop the MySQL server by executing this command:
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" -u root
							 | 
						|
								 shutdown
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   If the MySQL root user account has a password, you need to invoke
							 | 
						|
								   mysqladmin with the -p option and supply the password when
							 | 
						|
								   prompted.
							 | 
						|
								
							 | 
						|
								   This command invokes the MySQL administrative utility mysqladmin
							 | 
						|
								   to connect to the server and tell it to shut down. The command
							 | 
						|
								   connects as the MySQL root user, which is the default
							 | 
						|
								   administrative account in the MySQL grant system. Note that users
							 | 
						|
								   in the MySQL grant system are wholly independent from any login
							 | 
						|
								   users under Windows.
							 | 
						|
								
							 | 
						|
								   If mysqld doesn't start, check the error log to see whether the
							 | 
						|
								   server wrote any messages there to indicate the cause of the
							 | 
						|
								   problem. The error log is located in the C:\Program
							 | 
						|
								   Files\MySQL\MySQL Server 5.1\data directory. It is the file with a
							 | 
						|
								   suffix of .err. You can also try to start the server as mysqld
							 | 
						|
								   --console; in this case, you may get some useful information on
							 | 
						|
								   the screen that may help solve the problem.
							 | 
						|
								
							 | 
						|
								   The last option is to start mysqld with the --standalone and
							 | 
						|
								   --debug options. In this case, mysqld writes a log file
							 | 
						|
								   C:\mysqld.trace that should contain the reason why mysqld doesn't
							 | 
						|
								   start. See MySQL Internals: Porting
							 | 
						|
								   (http://forge.mysql.com/wiki/MySQL_Internals_Porting).
							 | 
						|
								
							 | 
						|
								   Use mysqld --verbose --help to display all the options that mysqld
							 | 
						|
								   supports.
							 | 
						|
								
							 | 
						|
								2.5.5.6. Starting MySQL as a Windows Service
							 | 
						|
								
							 | 
						|
								   On Windows, the recommended way to run MySQL is to install it as a
							 | 
						|
								   Windows service, whereby MySQL starts and stops automatically when
							 | 
						|
								   Windows starts and stops. A MySQL server installed as a service
							 | 
						|
								   can also be controlled from the command line using NET commands,
							 | 
						|
								   or with the graphical Services utility. Generally, to install
							 | 
						|
								   MySQL as a Windows service you should be logged in using an
							 | 
						|
								   account that has administrator rights.
							 | 
						|
								
							 | 
						|
								   The Services utility (the Windows Service Control Manager) can be
							 | 
						|
								   found in the Windows Control Panel (under Administrative Tools on
							 | 
						|
								   Windows 2000, XP, Vista and Server 2003). To avoid conflicts, it
							 | 
						|
								   is advisable to close the Services utility while performing server
							 | 
						|
								   installation or removal operations from the command line.
							 | 
						|
								
							 | 
						|
								   Before installing MySQL as a Windows service, you should first
							 | 
						|
								   stop the current server if it is running by using the following
							 | 
						|
								   command:
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin"
							 | 
						|
								          -u root shutdown
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   If the MySQL root user account has a password, you need to invoke
							 | 
						|
								   mysqladmin with the -p option and supply the password when
							 | 
						|
								   prompted.
							 | 
						|
								
							 | 
						|
								   This command invokes the MySQL administrative utility mysqladmin
							 | 
						|
								   to connect to the server and tell it to shut down. The command
							 | 
						|
								   connects as the MySQL root user, which is the default
							 | 
						|
								   administrative account in the MySQL grant system. Note that users
							 | 
						|
								   in the MySQL grant system are wholly independent from any login
							 | 
						|
								   users under Windows.
							 | 
						|
								
							 | 
						|
								   Install the server as a service using this command:
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --install
							 | 
						|
								
							 | 
						|
								   The service-installation command does not start the server.
							 | 
						|
								   Instructions for that are given later in this section.
							 | 
						|
								
							 | 
						|
								   To make it easier to invoke MySQL programs, you can add the path
							 | 
						|
								   name of the MySQL bin directory to your Windows system PATH
							 | 
						|
								   environment variable:
							 | 
						|
								
							 | 
						|
								     * On the Windows desktop, right-click on the My Computer icon,
							 | 
						|
								       and select Properties.
							 | 
						|
								
							 | 
						|
								     * Next select the Advanced tab from the System Properties menu
							 | 
						|
								       that appears, and click the Environment Variables button.
							 | 
						|
								
							 | 
						|
								     * Under System Variables, select Path, and then click the Edit
							 | 
						|
								       button. The Edit System Variable dialogue should appear.
							 | 
						|
								
							 | 
						|
								     * Place your cursor at the end of the text appearing in the
							 | 
						|
								       space marked Variable Value. (Use the End key to ensure that
							 | 
						|
								       your cursor is positioned at the very end of the text in this
							 | 
						|
								       space.) Then enter the complete path name of your MySQL bin
							 | 
						|
								       directory (for example, C:\Program Files\MySQL\MySQL Server
							 | 
						|
								       5.1\bin), Note that there should be a semicolon separating
							 | 
						|
								       this path from any values present in this field. Dismiss this
							 | 
						|
								       dialogue, and each dialogue in turn, by clicking OK until all
							 | 
						|
								       of the dialogues that were opened have been dismissed. You
							 | 
						|
								       should now be able to invoke any MySQL executable program by
							 | 
						|
								       typing its name at the DOS prompt from any directory on the
							 | 
						|
								       system, without having to supply the path. This includes the
							 | 
						|
								       servers, the mysql client, and all MySQL command-line
							 | 
						|
								       utilities such as mysqladmin and mysqldump.
							 | 
						|
								       You should not add the MySQL bin directory to your Windows
							 | 
						|
								       PATH if you are running multiple MySQL servers on the same
							 | 
						|
								       machine.
							 | 
						|
								
							 | 
						|
								Warning
							 | 
						|
								
							 | 
						|
								   You must exercise great care when editing your system PATH by
							 | 
						|
								   hand; accidental deletion or modification of any portion of the
							 | 
						|
								   existing PATH value can leave you with a malfunctioning or even
							 | 
						|
								   unusable system.
							 | 
						|
								
							 | 
						|
								   The following additional arguments can be used in MySQL 5.1 when
							 | 
						|
								   installing the service:
							 | 
						|
								
							 | 
						|
								     * You can specify a service name immediately following the
							 | 
						|
								       --install option. The default service name is MySQL.
							 | 
						|
								
							 | 
						|
								     * If a service name is given, it can be followed by a single
							 | 
						|
								       option. By convention, this should be
							 | 
						|
								       --defaults-file=file_name to specify the name of an option
							 | 
						|
								       file from which the server should read options when it starts.
							 | 
						|
								       The use of a single option other than --defaults-file is
							 | 
						|
								       possible but discouraged. --defaults-file is more flexible
							 | 
						|
								       because it enables you to specify multiple startup options for
							 | 
						|
								       the server by placing them in the named option file.
							 | 
						|
								
							 | 
						|
								     * You can also specify a --local-service option following the
							 | 
						|
								       service name. This causes the server to run using the
							 | 
						|
								       LocalService Windows account that has limited system
							 | 
						|
								       privileges. This account is available only for Windows XP or
							 | 
						|
								       newer. If both --defaults-file and --local-service are given
							 | 
						|
								       following the service name, they can be in any order.
							 | 
						|
								
							 | 
						|
								   For a MySQL server that is installed as a Windows service, the
							 | 
						|
								   following rules determine the service name and option files that
							 | 
						|
								   the server uses:
							 | 
						|
								
							 | 
						|
								     * If the service-installation command specifies no service name
							 | 
						|
								       or the default service name (MySQL) following the --install
							 | 
						|
								       option, the server uses the a service name of MySQL and reads
							 | 
						|
								       options from the [mysqld] group in the standard option files.
							 | 
						|
								
							 | 
						|
								     * If the service-installation command specifies a service name
							 | 
						|
								       other than MySQL following the --install option, the server
							 | 
						|
								       uses that service name. It reads options from the [mysqld]
							 | 
						|
								       group and the group that has the same name as the service in
							 | 
						|
								       the standard option files. This allows you to use the [mysqld]
							 | 
						|
								       group for options that should be used by all MySQL services,
							 | 
						|
								       and an option group with the service name for use by the
							 | 
						|
								       server installed with that service name.
							 | 
						|
								
							 | 
						|
								     * If the service-installation command specifies a
							 | 
						|
								       --defaults-file option after the service name, the server
							 | 
						|
								       reads options only from the [mysqld] group of the named file
							 | 
						|
								       and ignores the standard option files.
							 | 
						|
								
							 | 
						|
								   As a more complex example, consider the following command:
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld"
							 | 
						|
								          --install MySQL --defaults-file=C:\my-opts.cnf
							 | 
						|
								
							 | 
						|
								   Here, the default service name (MySQL) is given after the
							 | 
						|
								   --install option. If no --defaults-file option had been given,
							 | 
						|
								   this command would have the effect of causing the server to read
							 | 
						|
								   the [mysqld] group from the standard option files. However,
							 | 
						|
								   because the --defaults-file option is present, the server reads
							 | 
						|
								   options from the [mysqld] option group, and only from the named
							 | 
						|
								   file.
							 | 
						|
								
							 | 
						|
								   You can also specify options as Start parameters in the Windows
							 | 
						|
								   Services utility before you start the MySQL service.
							 | 
						|
								
							 | 
						|
								   Once a MySQL server has been installed as a service, Windows
							 | 
						|
								   starts the service automatically whenever Windows starts. The
							 | 
						|
								   service also can be started immediately from the Services utility,
							 | 
						|
								   or by using a NET START MySQL command. The NET command is not case
							 | 
						|
								   sensitive.
							 | 
						|
								
							 | 
						|
								   When run as a service, mysqld has no access to a console window,
							 | 
						|
								   so no messages can be seen there. If mysqld does not start, check
							 | 
						|
								   the error log to see whether the server wrote any messages there
							 | 
						|
								   to indicate the cause of the problem. The error log is located in
							 | 
						|
								   the MySQL data directory (for example, C:\Program
							 | 
						|
								   Files\MySQL\MySQL Server 5.1\data). It is the file with a suffix
							 | 
						|
								   of .err.
							 | 
						|
								
							 | 
						|
								   When a MySQL server has been installed as a service, and the
							 | 
						|
								   service is running, Windows stops the service automatically when
							 | 
						|
								   Windows shuts down. The server also can be stopped manually by
							 | 
						|
								   using the Services utility, the NET STOP MySQL command, or the
							 | 
						|
								   mysqladmin shutdown command.
							 | 
						|
								
							 | 
						|
								   You also have the choice of installing the server as a manual
							 | 
						|
								   service if you do not wish for the service to be started
							 | 
						|
								   automatically during the boot process. To do this, use the
							 | 
						|
								   --install-manual option rather than the --install option:
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --install-m
							 | 
						|
								anual
							 | 
						|
								
							 | 
						|
								   To remove a server that is installed as a service, first stop it
							 | 
						|
								   if it is running by executing NET STOP MySQL. Then use the
							 | 
						|
								   --remove option to remove it:
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqld" --remove
							 | 
						|
								
							 | 
						|
								   If mysqld is not running as a service, you can start it from the
							 | 
						|
								   command line. For instructions, see Section 2.5.5.5, "Starting
							 | 
						|
								   MySQL from the Windows Command Line."
							 | 
						|
								
							 | 
						|
								   Please see Section 2.5.6, "Troubleshooting a MySQL Installation
							 | 
						|
								   Under Windows," if you encounter difficulties during installation.
							 | 
						|
								
							 | 
						|
								2.5.5.7. Testing The MySQL Installation
							 | 
						|
								
							 | 
						|
								   You can test whether the MySQL server is working by executing any
							 | 
						|
								   of the following commands:
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqlshow"
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqlshow" -u root
							 | 
						|
								mysql
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" version
							 | 
						|
								 status proc
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysql" test
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   By default, mysqlshow will try to connect using the ODBC user.
							 | 
						|
								   This user is not created by default. You should specify a valid
							 | 
						|
								   user, or root with the right password to check the operation of
							 | 
						|
								   the server.
							 | 
						|
								
							 | 
						|
								   If mysqld is slow to respond to TCP/IP connections from client
							 | 
						|
								   programs, there is probably a problem with your DNS. In this case,
							 | 
						|
								   start mysqld with the --skip-name-resolve option and use only
							 | 
						|
								   localhost and IP numbers in the Host column of the MySQL grant
							 | 
						|
								   tables.
							 | 
						|
								
							 | 
						|
								   You can force a MySQL client to use a named-pipe connection rather
							 | 
						|
								   than TCP/IP by specifying the --pipe or --protocol=PIPE option, or
							 | 
						|
								   by specifying . (period) as the host name. Use the --socket option
							 | 
						|
								   to specify the name of the pipe if you do not want to use the
							 | 
						|
								   default pipe name.
							 | 
						|
								
							 | 
						|
								   Note that if you have set a password for the root account, deleted
							 | 
						|
								   the anonymous account, or created a new user account, then you
							 | 
						|
								   must use the appropriate -u and -p options with the commands shown
							 | 
						|
								   above in order to connect with the MySQL Server. See Section
							 | 
						|
								   4.2.2, "Connecting to the MySQL Server."
							 | 
						|
								
							 | 
						|
								   For more information about mysqlshow, see Section 4.5.6,
							 | 
						|
								   "mysqlshow --- Display Database, Table, and Column Information."
							 | 
						|
								
							 | 
						|
								2.5.6. Troubleshooting a MySQL Installation Under Windows
							 | 
						|
								
							 | 
						|
								   When installing and running MySQL for the first time, you may
							 | 
						|
								   encounter certain errors that prevent the MySQL server from
							 | 
						|
								   starting. The purpose of this section is to help you diagnose and
							 | 
						|
								   correct some of these errors.
							 | 
						|
								
							 | 
						|
								   Your first resource when troubleshooting server issues is the
							 | 
						|
								   error log. The MySQL server uses the error log to record
							 | 
						|
								   information relevant to the error that prevents the server from
							 | 
						|
								   starting. The error log is located in the data directory specified
							 | 
						|
								   in your my.ini file. The default data directory location is
							 | 
						|
								   C:\Program Files\MySQL\MySQL Server 5.1\data. See Section 5.2.2,
							 | 
						|
								   "The Error Log."
							 | 
						|
								
							 | 
						|
								   Another source of information regarding possible errors is the
							 | 
						|
								   console messages displayed when the MySQL service is starting. Use
							 | 
						|
								   the NET START MySQL command from the command line after installing
							 | 
						|
								   mysqld as a service to see any error messages regarding the
							 | 
						|
								   starting of the MySQL server as a service. See Section 2.5.5.6,
							 | 
						|
								   "Starting MySQL as a Windows Service."
							 | 
						|
								
							 | 
						|
								   The following examples show other common error messages you may
							 | 
						|
								   encounter when installing MySQL and starting the server for the
							 | 
						|
								   first time:
							 | 
						|
								
							 | 
						|
								     * If the MySQL server cannot find the mysql privileges database
							 | 
						|
								       or other critical files, you may see these messages:
							 | 
						|
								System error 1067 has occurred.
							 | 
						|
								Fatal error: Can't open privilege tables: Table 'mysql.host' doesn't
							 | 
						|
								exist
							 | 
						|
								       These messages often occur when the MySQL base or data
							 | 
						|
								       directories are installed in different locations than the
							 | 
						|
								       default locations (C:\Program Files\MySQL\MySQL Server 5.1 and
							 | 
						|
								       C:\Program Files\MySQL\MySQL Server 5.1\data, respectively).
							 | 
						|
								       This situation may occur when MySQL is upgraded and installed
							 | 
						|
								       to a new location, but the configuration file is not updated
							 | 
						|
								       to reflect the new location. In addition, there may be old and
							 | 
						|
								       new configuration files that conflict. Be sure to delete or
							 | 
						|
								       rename any old configuration files when upgrading MySQL.
							 | 
						|
								       If you have installed MySQL to a directory other than
							 | 
						|
								       C:\Program Files\MySQL\MySQL Server 5.1, you need to ensure
							 | 
						|
								       that the MySQL server is aware of this through the use of a
							 | 
						|
								       configuration (my.ini) file. The my.ini file needs to be
							 | 
						|
								       located in your Windows directory, typically C:\WINDOWS. You
							 | 
						|
								       can determine its exact location from the value of the WINDIR
							 | 
						|
								       environment variable by issuing the following command from the
							 | 
						|
								       command prompt:
							 | 
						|
								C:\> echo %WINDIR%
							 | 
						|
								       An option file can be created and modified with any text
							 | 
						|
								       editor, such as Notepad. For example, if MySQL is installed in
							 | 
						|
								       E:\mysql and the data directory is D:\MySQLdata, you can
							 | 
						|
								       create the option file and set up a [mysqld] section to
							 | 
						|
								       specify values for the basedir and datadir options:
							 | 
						|
								[mysqld]
							 | 
						|
								# set basedir to your installation path
							 | 
						|
								basedir=E:/mysql
							 | 
						|
								# set datadir to the location of your data directory
							 | 
						|
								datadir=D:/MySQLdata
							 | 
						|
								       Note that Windows path names are specified in option files
							 | 
						|
								       using (forward) slashes rather than backslashes. If you do use
							 | 
						|
								       backslashes, double them:
							 | 
						|
								[mysqld]
							 | 
						|
								# set basedir to your installation path
							 | 
						|
								basedir=C:\\Program Files\\MySQL\\MySQL Server 5.1
							 | 
						|
								# set datadir to the location of your data directory
							 | 
						|
								datadir=D:\\MySQLdata
							 | 
						|
								       The rules for use of backslash in option file values are given
							 | 
						|
								       in Section 4.2.3.3, "Using Option Files."
							 | 
						|
								       If you change the datadir value in your MySQL configuration
							 | 
						|
								       file, you must move the contents of the existing MySQL data
							 | 
						|
								       directory before restarting the MySQL server.
							 | 
						|
								       See Section 2.5.5.2, "Creating an Option File."
							 | 
						|
								
							 | 
						|
								     * If you reinstall or upgrade MySQL without first stopping and
							 | 
						|
								       removing the existing MySQL service and install MySQL using
							 | 
						|
								       the MySQL Config Wizard, you may see this error:
							 | 
						|
								Error: Cannot create Windows service for MySql. Error: 0
							 | 
						|
								       This occurs when the Config Wizard tries to install the
							 | 
						|
								       service and finds an existing service with the same name.
							 | 
						|
								       One solution to this problem is to choose a service name other
							 | 
						|
								       than mysql when using the configuration wizard. This allows
							 | 
						|
								       the new service to be installed correctly, but leaves the
							 | 
						|
								       outdated service in place. Although this is harmless, it is
							 | 
						|
								       best to remove old services that are no longer in use.
							 | 
						|
								       To permanently remove the old mysql service, execute the
							 | 
						|
								       following command as a user with administrative privileges, on
							 | 
						|
								       the command-line:
							 | 
						|
								C:\> sc delete mysql
							 | 
						|
								[SC] DeleteService SUCCESS
							 | 
						|
								       If the sc utility is not available for your version of
							 | 
						|
								       Windows, download the delsrv utility from
							 | 
						|
								       http://www.microsoft.com/windows2000/techinfo/reskit/tools/exi
							 | 
						|
								       sting/delsrv-o.asp and use the delsrv mysql syntax.
							 | 
						|
								
							 | 
						|
								2.5.7. Upgrading MySQL on Windows
							 | 
						|
								
							 | 
						|
								   This section lists some of the steps you should take when
							 | 
						|
								   upgrading MySQL on Windows.
							 | 
						|
								
							 | 
						|
								    1. Review Section 2.4.1, "Upgrading MySQL," for additional
							 | 
						|
								       information on upgrading MySQL that is not specific to
							 | 
						|
								       Windows.
							 | 
						|
								
							 | 
						|
								    2. You should always back up your current MySQL installation
							 | 
						|
								       before performing an upgrade. See Section 6.2, "Database
							 | 
						|
								       Backup Methods."
							 | 
						|
								
							 | 
						|
								    3. Download the latest Windows distribution of MySQL from
							 | 
						|
								       http://dev.mysql.com/downloads/.
							 | 
						|
								
							 | 
						|
								    4. Before upgrading MySQL, you must stop the server. If the
							 | 
						|
								       server is installed as a service, stop the service with the
							 | 
						|
								       following command from the command prompt:
							 | 
						|
								C:\> NET STOP MySQL
							 | 
						|
								       If you are not running the MySQL server as a service, use the
							 | 
						|
								       following command to stop it:
							 | 
						|
								C:\> "C:\Program Files\MySQL\MySQL Server 5.1\bin\mysqladmin" -u root
							 | 
						|
								 shutdown
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								       If the MySQL root user account has a password, you need to
							 | 
						|
								       invoke mysqladmin with the -p option and supply the password
							 | 
						|
								       when prompted.
							 | 
						|
								
							 | 
						|
								    5. When upgrading to MySQL 5.1 from a version previous to 4.1.5,
							 | 
						|
								       or when upgrading from a version of MySQL installed from a Zip
							 | 
						|
								       archive to a version of MySQL installed with the MySQL
							 | 
						|
								       Installation Wizard, you must manually remove the previous
							 | 
						|
								       installation and MySQL service (if the server is installed as
							 | 
						|
								       a service).
							 | 
						|
								       To remove the MySQL service, use the following command:
							 | 
						|
								C:\> C:\mysql\bin\mysqld --remove
							 | 
						|
								       If you do not remove the existing service, the MySQL
							 | 
						|
								       Installation Wizard may fail to properly install the new MySQL
							 | 
						|
								       service.
							 | 
						|
								
							 | 
						|
								    6. When upgrading from MySQL 5.1.23 to MySQL 5.1.24, the change
							 | 
						|
								       in the default location of the data directory from a directory
							 | 
						|
								       within the MySQL installation to the AppData folder means that
							 | 
						|
								       you must manually copy the data files from your old
							 | 
						|
								       installation to the new location.
							 | 
						|
								
							 | 
						|
								    7. If you are using the MySQL Installation Wizard, start the
							 | 
						|
								       wizard as described in Section 2.5.3.1, "Using the MySQL
							 | 
						|
								       Installation Wizard."
							 | 
						|
								
							 | 
						|
								    8. If you are installing MySQL from a Zip archive, extract the
							 | 
						|
								       archive. You may either overwrite your existing MySQL
							 | 
						|
								       installation (usually located at C:\mysql), or install it into
							 | 
						|
								       a different directory, such as C:\mysql5. Overwriting the
							 | 
						|
								       existing installation is recommended.
							 | 
						|
								
							 | 
						|
								    9. If you were running MySQL as a Windows service and you had to
							 | 
						|
								       remove the service earlier in this procedure, reinstall the
							 | 
						|
								       service. (See Section 2.5.5.6, "Starting MySQL as a Windows
							 | 
						|
								       Service.")
							 | 
						|
								   10. Restart the server. For example, use NET START MySQL if you
							 | 
						|
								       run MySQL as a service, or invoke mysqld directly otherwise.
							 | 
						|
								   11. If you encounter errors, see Section 2.5.6, "Troubleshooting a
							 | 
						|
								       MySQL Installation Under Windows."
							 | 
						|
								
							 | 
						|
								2.5.8. Windows Post-Installation Procedures
							 | 
						|
								
							 | 
						|
								   On Windows, the data directory and the grant tables do not have to
							 | 
						|
								   be created. MySQL Windows distributions include the grant tables
							 | 
						|
								   with a set of preinitialized accounts in the mysql database under
							 | 
						|
								   the data directory. It is unnecessary to run the mysql_install_db
							 | 
						|
								   script that is used on Unix. Regarding passwords, if you installed
							 | 
						|
								   MySQL using the Windows Installation Wizard, you may have already
							 | 
						|
								   assigned passwords to the accounts. (See Section 2.5.3.1, "Using
							 | 
						|
								   the MySQL Installation Wizard.") Otherwise, use the
							 | 
						|
								   password-assignment procedure given in Section 2.13.2, "Securing
							 | 
						|
								   the Initial MySQL Accounts."
							 | 
						|
								
							 | 
						|
								   Before setting up passwords, you might want to try running some
							 | 
						|
								   client programs to make sure that you can connect to the server
							 | 
						|
								   and that it is operating properly. Make sure that the server is
							 | 
						|
								   running (see Section 2.5.5.4, "Starting the Server for the First
							 | 
						|
								   Time"), and then issue the following commands to verify that you
							 | 
						|
								   can retrieve information from the server. The output should be
							 | 
						|
								   similar to what is shown here:
							 | 
						|
								C:\> C:\mysql\bin\mysqlshow
							 | 
						|
								+--------------------+
							 | 
						|
								|     Databases      |
							 | 
						|
								+--------------------+
							 | 
						|
								| information_schema |
							 | 
						|
								| mysql              |
							 | 
						|
								| test               |
							 | 
						|
								+--------------------+
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   The above may not work if the correct user does not exist. If you
							 | 
						|
								   installed using the MSI packages and used the MySQL Server
							 | 
						|
								   Instance Config Wizard, then the root will haqve been created
							 | 
						|
								   automatically with the password you supplied. In this case, you
							 | 
						|
								   should use the -u and -p options where you will be prompted for
							 | 
						|
								   the password.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   The list of installed databases may vary, but will always include
							 | 
						|
								   the minimum of mysql and information_schema. In most cases, the
							 | 
						|
								   test database will also be installed automatically.
							 | 
						|
								
							 | 
						|
								   If you specify the name of the database, then a list of the tables
							 | 
						|
								   within a given database will be displayed:
							 | 
						|
								C:\> C:\mysql\bin\mysqlshow mysql
							 | 
						|
								Database: mysql
							 | 
						|
								+---------------------------+
							 | 
						|
								|          Tables           |
							 | 
						|
								+---------------------------+
							 | 
						|
								| columns_priv              |
							 | 
						|
								| db                        |
							 | 
						|
								| event                     |
							 | 
						|
								| func                      |
							 | 
						|
								| general_log               |
							 | 
						|
								| help_category             |
							 | 
						|
								| help_keyword              |
							 | 
						|
								| help_relation             |
							 | 
						|
								| help_topic                |
							 | 
						|
								| host                      |
							 | 
						|
								| plugin                    |
							 | 
						|
								| proc                      |
							 | 
						|
								| procs_priv                |
							 | 
						|
								| servers                   |
							 | 
						|
								| slow_log                  |
							 | 
						|
								| tables_priv               |
							 | 
						|
								| time_zone                 |
							 | 
						|
								| time_zone_leap_second     |
							 | 
						|
								| time_zone_name            |
							 | 
						|
								| time_zone_transition      |
							 | 
						|
								| time_zone_transition_type |
							 | 
						|
								| user                      |
							 | 
						|
								+---------------------------+
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								C:\> C:\mysql\bin\mysql -e "SELECT Host,Db,User FROM db" mysql
							 | 
						|
								+------+-------+------+
							 | 
						|
								| host | db    | user |
							 | 
						|
								+------+-------+------+
							 | 
						|
								| %    | test% |      |
							 | 
						|
								+------+-------+------+
							 | 
						|
								
							 | 
						|
								   You may need to specify a different directory from the one shown;
							 | 
						|
								   if you used the Windows Installation Wizard, then the default
							 | 
						|
								   directory is C:\Program Files\MySQL\MySQL Server 5.1, and the
							 | 
						|
								   mysql and mysqlshow client programs are in C:\Program
							 | 
						|
								   Files\MySQL\MySQL Server 5.1\bin. See Section 2.5.3.1, "Using the
							 | 
						|
								   MySQL Installation Wizard," for more information.
							 | 
						|
								
							 | 
						|
								   If you have already secured the initial MySQL accounts, you may
							 | 
						|
								   need to use the -u and -p options to supply a user name and
							 | 
						|
								   password to the mysqlshow and mysql client programs; otherwise the
							 | 
						|
								   programs may fail with an error, or you may not be able to view
							 | 
						|
								   all databases. For example, if you have assigned the password
							 | 
						|
								   "secretpass" to the MySQL root account, then you can invoke
							 | 
						|
								   mysqlshow and mysql as shown here:
							 | 
						|
								C:\> C:\mysql\bin\mysqlshow -uroot -psecretpass
							 | 
						|
								+--------------------+
							 | 
						|
								|     Databases      |
							 | 
						|
								+--------------------+
							 | 
						|
								| information_schema |
							 | 
						|
								| mysql              |
							 | 
						|
								| test               |
							 | 
						|
								+--------------------+
							 | 
						|
								
							 | 
						|
								C:\> C:\mysql\bin\mysqlshow -uroot -psecretpass mysql
							 | 
						|
								Database: mysql
							 | 
						|
								+---------------------------+
							 | 
						|
								|          Tables           |
							 | 
						|
								+---------------------------+
							 | 
						|
								| columns_priv              |
							 | 
						|
								| db                        |
							 | 
						|
								| event                     |
							 | 
						|
								| func                      |
							 | 
						|
								| general_log               |
							 | 
						|
								| help_category             |
							 | 
						|
								| help_keyword              |
							 | 
						|
								| help_relation             |
							 | 
						|
								| help_topic                |
							 | 
						|
								| host                      |
							 | 
						|
								| plugin                    |
							 | 
						|
								| proc                      |
							 | 
						|
								| procs_priv                |
							 | 
						|
								| servers                   |
							 | 
						|
								| slow_log                  |
							 | 
						|
								| tables_priv               |
							 | 
						|
								| time_zone                 |
							 | 
						|
								| time_zone_leap_second     |
							 | 
						|
								| time_zone_name            |
							 | 
						|
								| time_zone_transition      |
							 | 
						|
								| time_zone_transition_type |
							 | 
						|
								| user                      |
							 | 
						|
								+---------------------------+
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								C:\> C:\mysql\bin\mysql -uroot -psecretpass -e "SELECT Host,Db,User F
							 | 
						|
								ROM db" mysql
							 | 
						|
								+------+-------+------+
							 | 
						|
								| host | db    | user |
							 | 
						|
								+------+-------+------+
							 | 
						|
								| %    | test% |      |
							 | 
						|
								+------+-------+------+
							 | 
						|
								
							 | 
						|
								   For more information about these programs, see Section 4.5.6,
							 | 
						|
								   "mysqlshow --- Display Database, Table, and Column Information,"
							 | 
						|
								   and Section 4.5.1, "mysql --- The MySQL Command-Line Tool."
							 | 
						|
								
							 | 
						|
								   If you are running a version of Windows that supports services and
							 | 
						|
								   you want the MySQL server to run automatically when Windows
							 | 
						|
								   starts, see Section 2.5.5.6, "Starting MySQL as a Windows
							 | 
						|
								   Service."
							 | 
						|
								
							 | 
						|
								2.5.9. MySQL on Windows Compared to MySQL on Unix
							 | 
						|
								
							 | 
						|
								   MySQL for Windows has proven itself to be very stable. The Windows
							 | 
						|
								   version of MySQL has the same features as the corresponding Unix
							 | 
						|
								   version, with the following exceptions:
							 | 
						|
								
							 | 
						|
								     * Limited number of ports
							 | 
						|
								       Windows systems have about 4,000 ports available for client
							 | 
						|
								       connections, and after a connection on a port closes, it takes
							 | 
						|
								       two to four minutes before the port can be reused. In
							 | 
						|
								       situations where clients connect to and disconnect from the
							 | 
						|
								       server at a high rate, it is possible for all available ports
							 | 
						|
								       to be used up before closed ports become available again. If
							 | 
						|
								       this happens, the MySQL server appears to be unresponsive even
							 | 
						|
								       though it is running. Note that ports may be used by other
							 | 
						|
								       applications running on the machine as well, in which case the
							 | 
						|
								       number of ports available to MySQL is lower.
							 | 
						|
								       For more information about this problem, see
							 | 
						|
								       http://support.microsoft.com/default.aspx?scid=kb;en-us;196271
							 | 
						|
								       .
							 | 
						|
								
							 | 
						|
								     * Concurrent reads
							 | 
						|
								       MySQL depends on the pread() and pwrite() system calls to be
							 | 
						|
								       able to mix INSERT and SELECT. Currently, we use mutexes to
							 | 
						|
								       emulate pread() and pwrite(). We intend to replace the file
							 | 
						|
								       level interface with a virtual interface in the future so that
							 | 
						|
								       we can use the readfile()/writefile() interface to get more
							 | 
						|
								       speed. The current implementation limits the number of open
							 | 
						|
								       files that MySQL 5.1 can use to 2,048, which means that you
							 | 
						|
								       cannot run as many concurrent threads on Windows as on Unix.
							 | 
						|
								
							 | 
						|
								     * Blocking read
							 | 
						|
								       MySQL uses a blocking read for each connection. That has the
							 | 
						|
								       following implications if named-pipe connections are enabled:
							 | 
						|
								
							 | 
						|
								          + A connection is not disconnected automatically after
							 | 
						|
								            eight hours, as happens with the Unix version of MySQL.
							 | 
						|
								
							 | 
						|
								          + If a connection hangs, it is not possible to break it
							 | 
						|
								            without killing MySQL.
							 | 
						|
								
							 | 
						|
								          + mysqladmin kill does not work on a sleeping connection.
							 | 
						|
								
							 | 
						|
								          + mysqladmin shutdown cannot abort as long as there are
							 | 
						|
								            sleeping connections.
							 | 
						|
								       We plan to fix this problem in the future.
							 | 
						|
								
							 | 
						|
								     * ALTER TABLE
							 | 
						|
								       While you are executing an ALTER TABLE statement, the table is
							 | 
						|
								       locked from being used by other threads. This has to do with
							 | 
						|
								       the fact that on Windows, you can't delete a file that is in
							 | 
						|
								       use by another thread. In the future, we may find some way to
							 | 
						|
								       work around this problem.
							 | 
						|
								
							 | 
						|
								     * DATA DIRECTORY and INDEX DIRECTORY
							 | 
						|
								       The DATA DIRECTORY and INDEX DIRECTORY options for CREATE
							 | 
						|
								       TABLE are ignored on Windows, because Windows doesn't support
							 | 
						|
								       symbolic links. These options also are ignored on systems that
							 | 
						|
								       have a nonfunctional realpath() call.
							 | 
						|
								
							 | 
						|
								     * DROP DATABASE
							 | 
						|
								       You cannot drop a database that is in use by another thread.
							 | 
						|
								
							 | 
						|
								     * Case-insensitive names
							 | 
						|
								       File names are not case sensitive on Windows, so MySQL
							 | 
						|
								       database and table names are also not case sensitive on
							 | 
						|
								       Windows. The only restriction is that database and table names
							 | 
						|
								       must be specified using the same case throughout a given
							 | 
						|
								       statement. See Section 8.2.2, "Identifier Case Sensitivity."
							 | 
						|
								
							 | 
						|
								     * Directory and file names
							 | 
						|
								       On Windows, MySQL Server supports only directory and file
							 | 
						|
								       names that are compatible with the current ANSI code pages.
							 | 
						|
								       For example, the following Japanese directory name will not
							 | 
						|
								       work in the Western locale (code page 1252):
							 | 
						|
								datadir="C:/私たちのプロジェクトのデータ"
							 | 
						|
								       The same limitation applies to directory and file names
							 | 
						|
								       referred to in SQL statements, such as the data file path name
							 | 
						|
								       in LOAD DATA INFILE.
							 | 
						|
								
							 | 
						|
								     * The "\" path name separator character
							 | 
						|
								       Path name components in Windows are separated by the "\"
							 | 
						|
								       character, which is also the escape character in MySQL. If you
							 | 
						|
								       are using LOAD DATA INFILE or SELECT ... INTO OUTFILE, use
							 | 
						|
								       Unix-style file names with "/" characters:
							 | 
						|
								mysql> LOAD DATA INFILE 'C:/tmp/skr.txt' INTO TABLE skr;
							 | 
						|
								mysql> SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
							 | 
						|
								       Alternatively, you must double the "\" character:
							 | 
						|
								mysql> LOAD DATA INFILE 'C:\\tmp\\skr.txt' INTO TABLE skr;
							 | 
						|
								mysql> SELECT * INTO OUTFILE 'C:\\tmp\\skr.txt' FROM skr;
							 | 
						|
								
							 | 
						|
								     * Problems with pipes
							 | 
						|
								       Pipes do not work reliably from the Windows command-line
							 | 
						|
								       prompt. If the pipe includes the character ^Z / CHAR(24),
							 | 
						|
								       Windows thinks that it has encountered end-of-file and aborts
							 | 
						|
								       the program.
							 | 
						|
								       This is mainly a problem when you try to apply a binary log as
							 | 
						|
								       follows:
							 | 
						|
								C:\> mysqlbinlog binary_log_file | mysql --user=root
							 | 
						|
								       If you have a problem applying the log and suspect that it is
							 | 
						|
								       because of a ^Z / CHAR(24) character, you can use the
							 | 
						|
								       following workaround:
							 | 
						|
								C:\> mysqlbinlog binary_log_file --result-file=/tmp/bin.sql
							 | 
						|
								C:\> mysql --user=root --execute "source /tmp/bin.sql"
							 | 
						|
								       The latter command also can be used to reliably read in any
							 | 
						|
								       SQL file that may contain binary data.
							 | 
						|
								
							 | 
						|
								     * Access denied for user error
							 | 
						|
								       If MySQL cannot resolve your host name properly, you may get
							 | 
						|
								       the following error when you attempt to run a MySQL client
							 | 
						|
								       program to connect to a server running on the same machine:
							 | 
						|
								Access denied for user 'some_user'@'unknown'
							 | 
						|
								to database 'mysql'
							 | 
						|
								       To fix this problem, you should create a file named
							 | 
						|
								       \windows\hosts containing the following information:
							 | 
						|
								127.0.0.1       localhost
							 | 
						|
								
							 | 
						|
								   Here are some open issues for anyone who might want to help us
							 | 
						|
								   improve MySQL on Windows:
							 | 
						|
								
							 | 
						|
								     * Add macros to use the faster thread-safe increment/decrement
							 | 
						|
								       methods provided by Windows.
							 | 
						|
								
							 | 
						|
								2.5.10. Installing MySQL from Source on Windows
							 | 
						|
								
							 | 
						|
								   These instructions describe how to build binaries from source for
							 | 
						|
								   MySQL 5.1 on Windows. Instructions are provided for building
							 | 
						|
								   binaries from a standard source distribution or from the Bazaar
							 | 
						|
								   tree that contains the latest development source.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   The instructions here are strictly for users who want to test
							 | 
						|
								   MySQL on Microsoft Windows from the latest source distribution or
							 | 
						|
								   from the Bazaar tree. For production use, we do not advise using a
							 | 
						|
								   MySQL server built by yourself from source. Normally, it is best
							 | 
						|
								   to use precompiled binary distributions of MySQL that are built
							 | 
						|
								   specifically for optimal performance on Windows by Oracle
							 | 
						|
								   Corporation. Instructions for installing binary distributions are
							 | 
						|
								   available in Section 2.5, "Installing MySQL on Windows."
							 | 
						|
								
							 | 
						|
								   To build MySQL on Windows from source, you must satisfy the
							 | 
						|
								   following system, compiler, and resource requirements:
							 | 
						|
								
							 | 
						|
								     * Windows 2000, Windows XP, or newer version.
							 | 
						|
								       Windows Vista is supported when using Visual Studio 2005
							 | 
						|
								       provided you have installed the following updates:
							 | 
						|
								
							 | 
						|
								          + Microsoft Visual Studio 2005 Professional Edition - ENU
							 | 
						|
								            Service Pack 1 (KB926601)
							 | 
						|
								            (http://support.microsoft.com/?kbid=926601)
							 | 
						|
								
							 | 
						|
								          + Security Update for Microsoft Visual Studio 2005
							 | 
						|
								            Professional Edition - ENU (KB937061)
							 | 
						|
								            (http://support.microsoft.com/?kbid=937061)
							 | 
						|
								
							 | 
						|
								          + Update for Microsoft Visual Studio 2005 Professional
							 | 
						|
								            Edition - ENU (KB932232)
							 | 
						|
								            (http://support.microsoft.com/?kbid=932232)
							 | 
						|
								
							 | 
						|
								     * CMake, which can be downloaded from http://www.cmake.org.
							 | 
						|
								       After installing, modify your path to include the cmake
							 | 
						|
								       binary.
							 | 
						|
								
							 | 
						|
								     * Microsoft Visual C++ 2005 Express Edition, Visual Studio .Net
							 | 
						|
								       2003 (7.1), or Visual Studio 2005 (8.0) compiler system.
							 | 
						|
								
							 | 
						|
								     * If you are using Visual C++ 2005 Express Edition, you must
							 | 
						|
								       also install an appropriate Platform SDK. More information and
							 | 
						|
								       links to downloads for various Windows platforms is available
							 | 
						|
								       from
							 | 
						|
								       http://www.microsoft.com/downloads/details.aspx?familyid=0baf2
							 | 
						|
								       b35-c656-4969-ace8-e4c0c0716adb.
							 | 
						|
								
							 | 
						|
								     * If you are compiling from a Bazaar tree or making changes to
							 | 
						|
								       the parser, you need bison for Windows, which can be
							 | 
						|
								       downloaded from
							 | 
						|
								       http://gnuwin32.sourceforge.net/packages/bison.htm. Download
							 | 
						|
								       the package labeled "Complete package, excluding sources".
							 | 
						|
								       After installing the package, modify your path to include the
							 | 
						|
								       bison binary and ensure that this binary is accessible from
							 | 
						|
								       Visual Studio.
							 | 
						|
								
							 | 
						|
								     * Cygwin might be necessary if you want to run the test script
							 | 
						|
								       or package the compiled binaries and support files into a Zip
							 | 
						|
								       archive. (Cygwin is needed only to test or package the
							 | 
						|
								       distribution, not to build it.) Cygwin is available from
							 | 
						|
								       http://cygwin.com.
							 | 
						|
								
							 | 
						|
								     * 3GB to 5GB of disk space.
							 | 
						|
								
							 | 
						|
								   The exact system requirements for Visual Studio can be found here:
							 | 
						|
								   http://msdn.microsoft.com/vstudio/Previous/2003/sysreqs/default.as
							 | 
						|
								   px and
							 | 
						|
								   http://msdn.microsoft.com/vstudio/products/sysreqs/default.aspx
							 | 
						|
								
							 | 
						|
								   You also need a MySQL source distribution for Windows, which can
							 | 
						|
								   be obtained two ways:
							 | 
						|
								
							 | 
						|
								     * Obtain a source distribution packaged by Oracle Corporation.
							 | 
						|
								       These are available from http://dev.mysql.com/downloads/.
							 | 
						|
								
							 | 
						|
								     * Package a source distribution yourself from the latest Bazaar
							 | 
						|
								       developer source tree. For instructions on pulling the latest
							 | 
						|
								       source files, see Section 2.3.3, "Installing from the
							 | 
						|
								       Development Source Tree."
							 | 
						|
								
							 | 
						|
								   If you find something not working as expected, or you have
							 | 
						|
								   suggestions about ways to improve the current build process on
							 | 
						|
								   Windows, please send a message to the win32 mailing list. See
							 | 
						|
								   Section 1.6.1, "MySQL Mailing Lists."
							 | 
						|
								
							 | 
						|
								2.5.10.1. Building MySQL from Source Using CMake and Visual Studio
							 | 
						|
								
							 | 
						|
								   You can build MySQL on Windows by using a combination of cmake and
							 | 
						|
								   Microsoft Visual Studio .NET 2003 (7.1), Microsoft Visual Studio
							 | 
						|
								   2005 (8.0), Microsoft Visual Studio 2008 (9.0) or Microsoft Visual
							 | 
						|
								   C++ 2005 Express Edition. You must have the appropriate Microsoft
							 | 
						|
								   Platform SDK installed.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   To compile from the source code on Windows you must use the
							 | 
						|
								   standard source distribution (for example, mysql-5.1.46.tar.gz).
							 | 
						|
								   You build from the same distribution as used to build MySQL on
							 | 
						|
								   Unix, Linux and other platforms. Do not use the Windows Source
							 | 
						|
								   distributions as they do not contain the necessary configuration
							 | 
						|
								   script and other files.
							 | 
						|
								
							 | 
						|
								   Follow this procedure to build MySQL:
							 | 
						|
								
							 | 
						|
								    1. If you are installing from a packaged source distribution,
							 | 
						|
								       create a work directory (for example, C:\workdir), and unpack
							 | 
						|
								       the source distribution there using WinZip or another Windows
							 | 
						|
								       tool that can read .zip files. This directory is the work
							 | 
						|
								       directory in the following instructions.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								       You must run the commands in the win directory from the
							 | 
						|
								       top-level source directory. Do not change into the win
							 | 
						|
								       directory, as the commands will not be executed correctly.
							 | 
						|
								
							 | 
						|
								    2. Start a command shell. If you have not configured the PATH and
							 | 
						|
								       other environment variables for all command shells, you may be
							 | 
						|
								       able to start a command shell from the Start Menu within the
							 | 
						|
								       Windows Visual Studio menu that contains the necessary
							 | 
						|
								       environment changes.
							 | 
						|
								
							 | 
						|
								    3. Within the command shell, navigate to the work directory and
							 | 
						|
								       run the following command:
							 | 
						|
								C:\workdir>win\configure.js options
							 | 
						|
								       If you have associated the .js file extension with an
							 | 
						|
								       application such as a text editor, then you may need to use
							 | 
						|
								       the following command to force configure.js to be executed as
							 | 
						|
								       a script:
							 | 
						|
								C:\workdir>cscript win\configure.js options
							 | 
						|
								       These options are available for configure.js:
							 | 
						|
								
							 | 
						|
								          + WITH_INNOBASE_STORAGE_ENGINE: Enable the InnoDB storage
							 | 
						|
								            engine.
							 | 
						|
								
							 | 
						|
								          + WITH_PARTITION_STORAGE_ENGINE: Enable user-defined
							 | 
						|
								            partitioning.
							 | 
						|
								
							 | 
						|
								          + WITH_ARCHIVE_STORAGE_ENGINE: Enable the ARCHIVE storage
							 | 
						|
								            engine.
							 | 
						|
								
							 | 
						|
								          + WITH_BLACKHOLE_STORAGE_ENGINE: Enable the BLACKHOLE
							 | 
						|
								            storage engine.
							 | 
						|
								
							 | 
						|
								          + WITH_EXAMPLE_STORAGE_ENGINE: Enable the EXAMPLE storage
							 | 
						|
								            engine.
							 | 
						|
								
							 | 
						|
								          + WITH_FEDERATED_STORAGE_ENGINE: Enable the FEDERATED
							 | 
						|
								            storage engine.
							 | 
						|
								
							 | 
						|
								          + WITH_NDBCLUSTER_STORAGE_ENGINE (experimental): Enable the
							 | 
						|
								            NDBCLUSTER storage engine in the MySQL server; cause
							 | 
						|
								            binaries for the MySQL Cluster management and data node,
							 | 
						|
								            management client, and other programs to be built.
							 | 
						|
								            This option is supported only in MySQL Cluster NDB 7.0
							 | 
						|
								            (NDBCLUSTER storage engine versions 6.4.0 and later)
							 | 
						|
								            using the MySQL Cluster sources. It cannot be used to
							 | 
						|
								            enable clustering support in other MySQL source trees or
							 | 
						|
								            distributions.
							 | 
						|
								
							 | 
						|
								          + MYSQL_SERVER_SUFFIX=suffix: Server suffix, default none.
							 | 
						|
								
							 | 
						|
								          + COMPILATION_COMMENT=comment: Server comment, default
							 | 
						|
								            "Source distribution".
							 | 
						|
								
							 | 
						|
								          + MYSQL_TCP_PORT=port: Server port, default 3306.
							 | 
						|
								
							 | 
						|
								          + DISABLE_GRANT_OPTIONS: Disables the --bootstrap,
							 | 
						|
								            --skip-grant-tables, and --init-file options for mysqld.
							 | 
						|
								            This option is available as of MySQL 5.1.15.
							 | 
						|
								       For example (type the command on one line):
							 | 
						|
								C:\workdir>win\configure.js WITH_INNOBASE_STORAGE_ENGINE
							 | 
						|
								             WITH_PARTITION_STORAGE_ENGINE MYSQL_SERVER_SUFFIX=-pro
							 | 
						|
								
							 | 
						|
								    4. From the work directory, execute the win\build-vs9.bat
							 | 
						|
								       (Windows Visual Studio 2008), win\build-vs8.bat (Windows
							 | 
						|
								       Visual Studio 2005), or win\build-vs71.bat (Windows Visual
							 | 
						|
								       Stidion 2003) script, depending on the version of Visual
							 | 
						|
								       Studio you have installed. The script invokes CMake, which
							 | 
						|
								       generates the mysql.sln solution file.
							 | 
						|
								       You can also use the corresponding 64-bit file (for example
							 | 
						|
								       win\build-vs8_x64.bat or win\build-vs9_x64.bat) to build the
							 | 
						|
								       64-bit version of MySQL. However, you cannot build the 64-bit
							 | 
						|
								       version with Visual Studio Express Edition. You must use
							 | 
						|
								       Visual Studio 2005 (8.0) or higher.
							 | 
						|
								
							 | 
						|
								    5. From the work directory, open the generated mysql.sln file
							 | 
						|
								       with Visual Studio and select the proper configuration using
							 | 
						|
								       the Configuration menu. The menu provides Debug, Release,
							 | 
						|
								       RelwithDebInfo, MinRelInfo options. Then select Solution >
							 | 
						|
								       Build to build the solution.
							 | 
						|
								       Remember the configuration that you use in this step. It is
							 | 
						|
								       important later when you run the test script because that
							 | 
						|
								       script needs to know which configuration you used.
							 | 
						|
								
							 | 
						|
								    6. Test the server. The server built using the preceding
							 | 
						|
								       instructions expects that the MySQL base directory and data
							 | 
						|
								       directory are C:\mysql and C:\mysql\data by default. If you
							 | 
						|
								       want to test your server using the source tree root directory
							 | 
						|
								       and its data directory as the base directory and data
							 | 
						|
								       directory, you need to tell the server their path names. You
							 | 
						|
								       can either do this on the command line with the --basedir and
							 | 
						|
								       --datadir options, or by placing appropriate options in an
							 | 
						|
								       option file. (See Section 4.2.3.3, "Using Option Files.") If
							 | 
						|
								       you have an existing data directory elsewhere that you want to
							 | 
						|
								       use, you can specify its path name instead.
							 | 
						|
								       When the server is running in standalone fashion or as a
							 | 
						|
								       service based on your configuration, try to connect to it from
							 | 
						|
								       the mysql interactive command-line utility.
							 | 
						|
								       You can also run the standard test script, mysql-test-run.pl.
							 | 
						|
								       This script is written in Perl, so you'll need either Cygwin
							 | 
						|
								       or ActiveState Perl to run it. You may also need to install
							 | 
						|
								       the modules required by the script. To run the test script,
							 | 
						|
								       change location into the mysql-test directory under the work
							 | 
						|
								       directory, set the MTR_VS_CONFIG environment variable to the
							 | 
						|
								       configuration you selected earlier (or use the --vs-config
							 | 
						|
								       option), and invoke mysql-test-run.pl. For example (using
							 | 
						|
								       Cygwin and the bash shell):
							 | 
						|
								shell> cd mysql-test
							 | 
						|
								shell> export MTR_VS_CONFIG=debug
							 | 
						|
								shell> ./mysql-test-run.pl --force --timer
							 | 
						|
								shell> ./mysql-test-run.pl --force --timer --ps-protocol
							 | 
						|
								
							 | 
						|
								   When you are satisfied that the programs you have built are
							 | 
						|
								   working correctly, stop the server. Now you can install the
							 | 
						|
								   distribution. One way to do this is to use the make_win_bin_dist
							 | 
						|
								   script in the scripts directory of the MySQL source distribution
							 | 
						|
								   (see Section 4.4.2, "make_win_bin_dist --- Package MySQL
							 | 
						|
								   Distribution as ZIP Archive"). This is a shell script, so you must
							 | 
						|
								   have Cygwin installed if you want to use it. It creates a Zip
							 | 
						|
								   archive of the built executables and support files that you can
							 | 
						|
								   unpack in the location at which you want to install MySQL.
							 | 
						|
								
							 | 
						|
								   It is also possible to install MySQL by copying directories and
							 | 
						|
								   files directly:
							 | 
						|
								
							 | 
						|
								    1. Create the directories where you want to install MySQL. For
							 | 
						|
								       example, to install into C:\mysql, use these commands:
							 | 
						|
								C:\> mkdir C:\mysql
							 | 
						|
								C:\> mkdir C:\mysql\bin
							 | 
						|
								C:\> mkdir C:\mysql\data
							 | 
						|
								C:\> mkdir C:\mysql\share
							 | 
						|
								C:\> mkdir C:\mysql\scripts
							 | 
						|
								       If you want to compile other clients and link them to MySQL,
							 | 
						|
								       you should also create several additional directories:
							 | 
						|
								C:\> mkdir C:\mysql\include
							 | 
						|
								C:\> mkdir C:\mysql\lib
							 | 
						|
								C:\> mkdir C:\mysql\lib\debug
							 | 
						|
								C:\> mkdir C:\mysql\lib\opt
							 | 
						|
								       If you want to benchmark MySQL, create this directory:
							 | 
						|
								C:\> mkdir C:\mysql\sql-bench
							 | 
						|
								       Benchmarking requires Perl support. See Section 2.15, "Perl
							 | 
						|
								       Installation Notes."
							 | 
						|
								
							 | 
						|
								    2. From the work directory, copy into the C:\mysql directory the
							 | 
						|
								       following files and directories:
							 | 
						|
								C:\> cd \workdir
							 | 
						|
								C:\workdir> mkdir C:\mysql
							 | 
						|
								C:\workdir> mkdir C:\mysql\bin
							 | 
						|
								C:\workdir> copy client\Release\*.exe C:\mysql\bin
							 | 
						|
								C:\workdir> copy sql\Release\mysqld.exe C:\mysql\bin\mysqld.exe
							 | 
						|
								C:\workdir> xcopy scripts\*.* C:\mysql\scripts /E
							 | 
						|
								C:\workdir> xcopy share\*.* C:\mysql\share /E
							 | 
						|
								       If you want to compile other clients and link them to MySQL,
							 | 
						|
								       you should also copy several libraries and header files:
							 | 
						|
								C:\workdir> copy lib\Release\mysqlclient.lib C:\mysql\lib\debug
							 | 
						|
								C:\workdir> copy lib\Release\libmysql.* C:\mysql\lib\debug
							 | 
						|
								C:\workdir> copy lib\Release\zlib.* C:\mysql\lib\debug
							 | 
						|
								C:\workdir> copy lib\Release\mysqlclient.lib C:\mysql\lib\opt
							 | 
						|
								C:\workdir> copy lib\Release\libmysql.* C:\mysql\lib\opt
							 | 
						|
								C:\workdir> copy lib\Release\zlib.* C:\mysql\lib\opt
							 | 
						|
								C:\workdir> copy include\*.h C:\mysql\include
							 | 
						|
								C:\workdir> copy libmysql\libmysql.def C:\mysql\include
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								       If you have compiled a Debug, rather than Release solution,
							 | 
						|
								       you can replace Release with Debug in the source file names
							 | 
						|
								       shown above.
							 | 
						|
								       If you want to benchmark MySQL, you should also do this:
							 | 
						|
								C:\workdir> xcopy sql-bench\*.* C:\mysql\bench /E
							 | 
						|
								
							 | 
						|
								   After installation, set up and start the server in the same way as
							 | 
						|
								   for binary Windows distributions. This includes creating the
							 | 
						|
								   system tables by running mysql_install_db. For more information,
							 | 
						|
								   see Section 2.5, "Installing MySQL on Windows."
							 | 
						|
								
							 | 
						|
								2.5.11. Compiling MySQL Clients on Windows
							 | 
						|
								
							 | 
						|
								   In your source files, you should include my_global.h before
							 | 
						|
								   mysql.h:
							 | 
						|
								#include <my_global.h>
							 | 
						|
								#include <mysql.h>
							 | 
						|
								
							 | 
						|
								   my_global.h includes any other files needed for Windows
							 | 
						|
								   compatibility (such as windows.h) if you compile your program on
							 | 
						|
								   Windows.
							 | 
						|
								
							 | 
						|
								   You can either link your code with the dynamic libmysql.lib
							 | 
						|
								   library, which is just a wrapper to load in libmysql.dll on
							 | 
						|
								   demand, or link with the static mysqlclient.lib library.
							 | 
						|
								
							 | 
						|
								   The MySQL client libraries are compiled as threaded libraries, so
							 | 
						|
								   you should also compile your code to be multi-threaded.
							 | 
						|
								
							 | 
						|
								2.6. Installing MySQL on Linux
							 | 
						|
								
							 | 
						|
								   The following sections covers the installation of Linux using
							 | 
						|
								   RPMs. For information on using a generic binary package using tar,
							 | 
						|
								   see Section 2.2, "Installing MySQL from Generic Binaries on
							 | 
						|
								   Unix/Linux." For information on installing from source, see
							 | 
						|
								   Section 2.3, "MySQL Installation Using a Source Distribution."
							 | 
						|
								
							 | 
						|
								   mysql.server can be found in the support-files directory under the
							 | 
						|
								   MySQL installation directory or in a MySQL source tree. You can
							 | 
						|
								   install it as /etc/init.d/mysql for automatic MySQL startup and
							 | 
						|
								   shutdown. See Section 2.13.1.2, "Starting and Stopping MySQL
							 | 
						|
								   Automatically."
							 | 
						|
								
							 | 
						|
								2.6.1. Installing MySQL from RPM Packages on Linux
							 | 
						|
								
							 | 
						|
								   The recommended way to install MySQL on RPM-based Linux
							 | 
						|
								   distributions is by using the RPM packages. The RPMs that we
							 | 
						|
								   provide to the community should work on all versions of Linux that
							 | 
						|
								   support RPM packages and use glibc 2.3. To obtain RPM packages,
							 | 
						|
								   see Section 2.1.3, "How to Get MySQL."
							 | 
						|
								
							 | 
						|
								   For non-RPM Linux distributions, you can install MySQL using a
							 | 
						|
								   .tar.gz package. See Section 2.2, "Installing MySQL from Generic
							 | 
						|
								   Binaries on Unix/Linux."
							 | 
						|
								
							 | 
						|
								   We do provide some platform-specific RPMs; the difference between
							 | 
						|
								   a platform-specific RPM and a generic RPM is that a
							 | 
						|
								   platform-specific RPM is built on the targeted platform and is
							 | 
						|
								   linked dynamically whereas a generic RPM is linked statically with
							 | 
						|
								   LinuxThreads.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   RPM distributions of MySQL often are provided by other vendors. Be
							 | 
						|
								   aware that they may differ in features and capabilities from those
							 | 
						|
								   built by us, and that the instructions in this manual do not
							 | 
						|
								   necessarily apply to installing them. The vendor's instructions
							 | 
						|
								   should be consulted instead.
							 | 
						|
								
							 | 
						|
								   In most cases, you need to install only the MySQL-server and
							 | 
						|
								   MySQL-client packages to get a functional MySQL installation. The
							 | 
						|
								   other packages are not required for a standard installation.
							 | 
						|
								
							 | 
						|
								   RPMs for MySQL Cluster.  Beginning with MySQL 5.1.24, standard
							 | 
						|
								   MySQL server RPMs built by MySQL no longer provide support for the
							 | 
						|
								   NDBCLUSTER storage engine. MySQL Cluster users wanting to upgrade
							 | 
						|
								   MySQL 5.1.23 or earlier installations from RPMs built by MySQL
							 | 
						|
								   should upgrade to MySQL Cluster NDB 6.2 or MySQL Cluster NDB 6.3;
							 | 
						|
								   RPMs that should work with most Linux distributions are available
							 | 
						|
								   for both of these release series.
							 | 
						|
								
							 | 
						|
								Important
							 | 
						|
								
							 | 
						|
								   When upgrading a MySQL Cluster RPM installation, you must upgrade
							 | 
						|
								   all installed RPMs, including the Server and Client RPMs.
							 | 
						|
								
							 | 
						|
								   For more information about installing MySQL Cluster from RPMs, see
							 | 
						|
								   Section 17.2.1, "MySQL Cluster Multi-Computer Installation."
							 | 
						|
								
							 | 
						|
								   For upgrades, if your installation was originally produced by
							 | 
						|
								   installing multiple RPM packages, it is best to upgrade all the
							 | 
						|
								   packages, not just some. For example, if you previously installed
							 | 
						|
								   the server and client RPMs, do not upgrade just the server RPM.
							 | 
						|
								
							 | 
						|
								   The RPM packages shown in the following list are available. The
							 | 
						|
								   names shown here use a suffix of .glibc23.i386.rpm, but particular
							 | 
						|
								   packages can have different suffixes, described later.
							 | 
						|
								
							 | 
						|
								     * MySQL-server-VERSION.glibc23.i386.rpm
							 | 
						|
								       The MySQL server. You need this unless you only want to
							 | 
						|
								       connect to a MySQL server running on another machine.
							 | 
						|
								
							 | 
						|
								     * MySQL-client-VERSION.glibc23.i386.rpm
							 | 
						|
								       The standard MySQL client programs. You probably always want
							 | 
						|
								       to install this package.
							 | 
						|
								
							 | 
						|
								     * MySQL-devel-VERSION.glibc23.i386.rpm
							 | 
						|
								       The libraries and include files that are needed if you want to
							 | 
						|
								       compile other MySQL clients, such as the Perl modules.
							 | 
						|
								
							 | 
						|
								     * MySQL-debuginfo-VERSION.glibc23.i386.rpm
							 | 
						|
								       This package contains debugging information. debuginfo RPMs
							 | 
						|
								       are never needed to use MySQL software; this is true both for
							 | 
						|
								       the server and for client programs. However, they contain
							 | 
						|
								       additional information that might be needed by a debugger to
							 | 
						|
								       analyze a crash.
							 | 
						|
								
							 | 
						|
								     * MySQL-shared-VERSION.glibc23.i386.rpm
							 | 
						|
								       This package contains the shared libraries
							 | 
						|
								       (libmysqlclient.so*) that certain languages and applications
							 | 
						|
								       need to dynamically load and use MySQL. It contains
							 | 
						|
								       single-threaded and thread-safe libraries. If you install this
							 | 
						|
								       package, do not install the MySQL-shared-compat package.
							 | 
						|
								
							 | 
						|
								     * MySQL-shared-compat-VERSION.glibc23.i386.rpm
							 | 
						|
								       This package includes the shared libraries for MySQL 3.23,
							 | 
						|
								       4.0, and so on, up to the current release. It contains
							 | 
						|
								       single-threaded and thread-safe libraries. Install this
							 | 
						|
								       package instead of MySQL-shared if you have applications
							 | 
						|
								       installed that are dynamically linked against older versions
							 | 
						|
								       of MySQL but you want to upgrade to the current version
							 | 
						|
								       without breaking the library dependencies.
							 | 
						|
								
							 | 
						|
								     * MySQL-shared-compat-advanced-gpl-VERSION.glibc23.i386.rpm,
							 | 
						|
								       MySQL-shared-compat-advanced-VERSION.glibc23.i386.rpm
							 | 
						|
								       These are like the MySQL-shared-compat package, but are for
							 | 
						|
								       the "MySQL Enterprise Server - Advanced Edition" products.
							 | 
						|
								       Install these packages rather than the normal
							 | 
						|
								       MySQL-shared-compat package if you want to included shared
							 | 
						|
								       client libraries for older MySQL versions.
							 | 
						|
								
							 | 
						|
								     * MySQL-embedded-VERSION.glibc23.i386.rpm
							 | 
						|
								       The embedded MySQL server library.
							 | 
						|
								
							 | 
						|
								     * MySQL-ndb-management-VERSION.glibc23.i386.rpm,
							 | 
						|
								       MySQL-ndb-storage-VERSION.glibc23.i386.rpm,
							 | 
						|
								       MySQL-ndb-tools-VERSION.glibc23.i386.rpm,
							 | 
						|
								       MySQL-ndb-extra-VERSION.glibc23.i386.rpm
							 | 
						|
								       Packages that contain additional files for MySQL Cluster
							 | 
						|
								       installations.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								       The MySQL-ndb-tools RPM requires a working installation of
							 | 
						|
								       perl. Prior to MySQL 5.1.18, the DBI and HTML::Template
							 | 
						|
								       packages were also required. See Section 2.15, "Perl
							 | 
						|
								       Installation Notes," and Section 17.4.21, "ndb_size.pl ---
							 | 
						|
								       NDBCLUSTER Size Requirement Estimator," for more information.
							 | 
						|
								
							 | 
						|
								     * MySQL-test-VERSION.glibc23.i386.rpm
							 | 
						|
								       This package includes the MySQL test suite.
							 | 
						|
								
							 | 
						|
								     * MySQL-VERSION.src.rpm
							 | 
						|
								       This contains the source code for all of the previous
							 | 
						|
								       packages. It can also be used to rebuild the RPMs on other
							 | 
						|
								       architectures (for example, Alpha or SPARC).
							 | 
						|
								
							 | 
						|
								   The suffix of RPM package names (following the VERSION value) has
							 | 
						|
								   the following syntax:
							 | 
						|
								.PLATFORM.CPU.rpm
							 | 
						|
								
							 | 
						|
								   The PLATFORM and CPU values indicate the type of system for which
							 | 
						|
								   the package is built. PLATFORM indicates the platform and CPU
							 | 
						|
								   indicates the processor type or family.
							 | 
						|
								
							 | 
						|
								   All packages are dynamically linked against glibc 2.3. The
							 | 
						|
								   PLATFORM value indicates whether the package is platform
							 | 
						|
								   independent or intended for a specific platform, as shown in the
							 | 
						|
								   following table.
							 | 
						|
								   glibc23 Platform independent, should run on any Linux distribution
							 | 
						|
								   that supports glibc 2.3
							 | 
						|
								   rhel3, rhel4 Red Hat Enterprise Linux 3 or 4
							 | 
						|
								   sles9, sles10 SuSE Linux Enterprise Server 9 or 10
							 | 
						|
								
							 | 
						|
								   In MySQL 5.1, only glibc23 packages are available currently.
							 | 
						|
								
							 | 
						|
								   The CPU value indicates the processor type or family for which the
							 | 
						|
								   package is built.
							 | 
						|
								   i386   x86 processor, 386 and up
							 | 
						|
								   i586   x86 processor, Pentium and up
							 | 
						|
								   x86_64 64-bit x86 processor
							 | 
						|
								   ia64   Itanium (IA-64) processor
							 | 
						|
								
							 | 
						|
								   To see all files in an RPM package (for example, a MySQL-server
							 | 
						|
								   RPM), run a command like this:
							 | 
						|
								shell> rpm -qpl MySQL-server-VERSION.glibc23.i386.rpm
							 | 
						|
								
							 | 
						|
								   To perform a standard minimal installation, install the server and
							 | 
						|
								   client RPMs:
							 | 
						|
								shell> rpm -i MySQL-server-VERSION.glibc23.i386.rpm
							 | 
						|
								shell> rpm -i MySQL-client-VERSION.glibc23.i386.rpm
							 | 
						|
								
							 | 
						|
								   To install only the client programs, install just the client RPM:
							 | 
						|
								shell> rpm -i MySQL-client-VERSION.glibc23.i386.rpm
							 | 
						|
								
							 | 
						|
								   RPM provides a feature to verify the integrity and authenticity of
							 | 
						|
								   packages before installing them. If you would like to learn more
							 | 
						|
								   about this feature, see Section 2.1.4, "Verifying Package
							 | 
						|
								   Integrity Using MD5 Checksums or GnuPG."
							 | 
						|
								
							 | 
						|
								   The server RPM places data under the /var/lib/mysql directory. The
							 | 
						|
								   RPM also creates a login account for a user named mysql (if one
							 | 
						|
								   does not exist) to use for running the MySQL server, and creates
							 | 
						|
								   the appropriate entries in /etc/init.d/ to start the server
							 | 
						|
								   automatically at boot time. (This means that if you have performed
							 | 
						|
								   a previous installation and have made changes to its startup
							 | 
						|
								   script, you may want to make a copy of the script so that you
							 | 
						|
								   don't lose it when you install a newer RPM.) See Section 2.13.1.2,
							 | 
						|
								   "Starting and Stopping MySQL Automatically," for more information
							 | 
						|
								   on how MySQL can be started automatically on system startup.
							 | 
						|
								
							 | 
						|
								   If you want to install the MySQL RPM on older Linux distributions
							 | 
						|
								   that do not support initialization scripts in /etc/init.d
							 | 
						|
								   (directly or via a symlink), you should create a symbolic link
							 | 
						|
								   that points to the location where your initialization scripts
							 | 
						|
								   actually are installed. For example, if that location is
							 | 
						|
								   /etc/rc.d/init.d, use these commands before installing the RPM to
							 | 
						|
								   create /etc/init.d as a symbolic link that points there:
							 | 
						|
								shell> cd /etc
							 | 
						|
								shell> ln -s rc.d/init.d .
							 | 
						|
								
							 | 
						|
								   However, all current major Linux distributions should support the
							 | 
						|
								   new directory layout that uses /etc/init.d, because it is required
							 | 
						|
								   for LSB (Linux Standard Base) compliance.
							 | 
						|
								
							 | 
						|
								   If the RPM files that you install include MySQL-server, the mysqld
							 | 
						|
								   server should be up and running after installation. You should be
							 | 
						|
								   able to start using MySQL.
							 | 
						|
								
							 | 
						|
								   If something goes wrong, you can find more information in the
							 | 
						|
								   binary installation section. See Section 2.2, "Installing MySQL
							 | 
						|
								   from Generic Binaries on Unix/Linux."
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   The accounts that are listed in the MySQL grant tables initially
							 | 
						|
								   have no passwords. After starting the server, you should set up
							 | 
						|
								   passwords for them using the instructions in Section 2.13,
							 | 
						|
								   "Post-Installation Setup and Testing."
							 | 
						|
								
							 | 
						|
								   During RPM installation, a user named mysql and a group named
							 | 
						|
								   mysql are created on the system. This is done using the useradd,
							 | 
						|
								   groupadd, and usermod commands. Those commands require appropriate
							 | 
						|
								   administrative privileges, which is ensured for locally managed
							 | 
						|
								   users and groups (as listed in the /etc/passwd and /etc/group
							 | 
						|
								   files) by the RPM installation process being run by root.
							 | 
						|
								
							 | 
						|
								   For nonlocal user management (LDAP, NIS, and so forth), the
							 | 
						|
								   administrative tools may require additional authentication (such
							 | 
						|
								   as a password), and will fail if the installing user does not
							 | 
						|
								   provide this authentication. Even if they fail, the RPM
							 | 
						|
								   installation will not abort but succeed, and this is intentional.
							 | 
						|
								   If they failed, some of the intended transfer of ownership may be
							 | 
						|
								   missing, and it is recommended that the system administrator then
							 | 
						|
								   manually ensures some appropriate user andgroup exists and
							 | 
						|
								   manually transfers ownership following the actions in the RPM spec
							 | 
						|
								   file.
							 | 
						|
								
							 | 
						|
								2.7. Installing MySQL on Mac OS X
							 | 
						|
								
							 | 
						|
								   MySQL for Mac OS X is available in a number of different forms:
							 | 
						|
								
							 | 
						|
								     * Native Package Installer format, which uses the native Mac OS
							 | 
						|
								       X installer to walk you through the installation of MySQL. For
							 | 
						|
								       more information, see Section 2.7.1, "Installing MySQL Using
							 | 
						|
								       the Installation Package." You can use the package installer
							 | 
						|
								       with Mac OS X 10.3 and later, and available for both PowerPC
							 | 
						|
								       and Intel architectures, and both 32-bit and 64-bit
							 | 
						|
								       architectures. There is no Universal Binary available using
							 | 
						|
								       the package installation method. The user you use to perform
							 | 
						|
								       the installation must have administrator privileges.
							 | 
						|
								
							 | 
						|
								     * Tar package format, which uses a file packaged using the Unix
							 | 
						|
								       tar and gzip commands. To use this method, you will need to
							 | 
						|
								       open a Terminal window. You do not need administrator
							 | 
						|
								       privileges using this method, as you can install the MySQL
							 | 
						|
								       server anywhere using this method. For more information on
							 | 
						|
								       using this method, you can use the generic instructions for
							 | 
						|
								       using a tarball, Section 2.2, "Installing MySQL from Generic
							 | 
						|
								       Binaries on Unix/Linux."You can use the package installer with
							 | 
						|
								       Mac OS X 10.3 and later, and available for both PowerPC and
							 | 
						|
								       Intel architectures, and both 32-bit and 64-bit architectures.
							 | 
						|
								       A Universal Binary, incorporating both Power PC and Intel
							 | 
						|
								       architectures and 32-bit and 64-bit binaries is available.
							 | 
						|
								       In addition to the core installation, the Package Installer
							 | 
						|
								       also includes Section 2.7.2, "Installing the MySQL Startup
							 | 
						|
								       Item" and Section 2.7.3, "Installing and Using the MySQL
							 | 
						|
								       Preference Pane," both of which simplify the management of
							 | 
						|
								       your installation.
							 | 
						|
								
							 | 
						|
								     * Mac OS X server includes a version of MySQL as standard. If
							 | 
						|
								       you want to use a more recent version than that supplied with
							 | 
						|
								       the Mac OS X server release, you can make use of the package
							 | 
						|
								       or tar formats. For more information on using the MySQL
							 | 
						|
								       bundled with Mac OS X, see Section 2.7.4, "Using MySQL on Mac
							 | 
						|
								       OS X Server."
							 | 
						|
								
							 | 
						|
								   For additional information on using MySQL on Mac OS X, see Section
							 | 
						|
								   2.7.5, "MySQL Installation on Mac OS X Notes."
							 | 
						|
								
							 | 
						|
								2.7.1. Installing MySQL Using the Installation Package
							 | 
						|
								
							 | 
						|
								   You can install MySQL on Mac OS X 10.3.x ("Panther") or newer
							 | 
						|
								   using a Mac OS X binary package in PKG format instead of the
							 | 
						|
								   binary tarball distribution. Please note that older versions of
							 | 
						|
								   Mac OS X (for example, 10.1.x or 10.2.x) are not supported by this
							 | 
						|
								   package.
							 | 
						|
								
							 | 
						|
								   The package is located inside a disk image (.dmg) file that you
							 | 
						|
								   first need to mount by double-clicking its icon in the Finder. It
							 | 
						|
								   should then mount the image and display its contents.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   Before proceeding with the installation, be sure to shut down all
							 | 
						|
								   running MySQL server instances by either using the MySQL Manager
							 | 
						|
								   Application (on Mac OS X Server) or via mysqladmin shutdown on the
							 | 
						|
								   command line.
							 | 
						|
								
							 | 
						|
								   When installing from the package version, you should also install
							 | 
						|
								   the MySQL Preference Pane, which will allow you to control the
							 | 
						|
								   startup and execution of your MySQL server from System
							 | 
						|
								   Preferences. For more information, see Section 2.7.3, "Installing
							 | 
						|
								   and Using the MySQL Preference Pane."
							 | 
						|
								
							 | 
						|
								   When installing using the package installer, the files are
							 | 
						|
								   installed into a directory within /usr/local matching the name of
							 | 
						|
								   the installation version and platform. For example, the installer
							 | 
						|
								   file mysql-5.1.39-osx10.5-x86_64.pkg installs MySQL into
							 | 
						|
								   /usr/local/mysql-5.1.39-osx10.5-x86_64 . The installation layout
							 | 
						|
								   of the directory is as shown in the following table:
							 | 
						|
								   Directory       Contents of Directory
							 | 
						|
								   bin             Client programs and the mysqld server
							 | 
						|
								   data            Log files, databases
							 | 
						|
								   docs            Manual in Info format
							 | 
						|
								   include         Include (header) files
							 | 
						|
								   lib             Libraries
							 | 
						|
								   man             Unix manual pages
							 | 
						|
								   mysql-test      MySQL test suite
							 | 
						|
								   scripts         Contains the mysql_install_db script
							 | 
						|
								   share/mysql     Error message files
							 | 
						|
								   sql-bench       Benchmarks
							 | 
						|
								   support-files   Scripts and sample configuration files
							 | 
						|
								   /tmp/mysql.sock The location of the MySQL Unix socket
							 | 
						|
								
							 | 
						|
								   During the package installer process, a symbolic link from
							 | 
						|
								   /usr/local/mysql to the version/platform specific directory
							 | 
						|
								   created during installation will be created automatically.
							 | 
						|
								
							 | 
						|
								    1. Download and open the MySQL package installer, which is
							 | 
						|
								       provided on a disk image (.dmg). Double-click to open the disk
							 | 
						|
								       image, which includes the main MySQL installation package, the
							 | 
						|
								       MySQLStartupItem.pkg installation package, and the
							 | 
						|
								       MySQL.prefPane.
							 | 
						|
								
							 | 
						|
								    2. Double-click on the MySQL installer package. It will be named
							 | 
						|
								       according to the version of MySQL you have downloaded. For
							 | 
						|
								       example, if you have downloaded MySQL 5.1.39, double-click
							 | 
						|
								       mysql-5.1.39-osx10.5-x86.pkg.
							 | 
						|
								
							 | 
						|
								    3. You will be presented with the openin installer dialog. Click
							 | 
						|
								       Continue to begihn installation.
							 | 
						|
								       MySQL Package Installer: Step 1
							 | 
						|
								
							 | 
						|
								    4. A copy of the installation instructions and other important
							 | 
						|
								       information relevant to this installation are display. Click
							 | 
						|
								       Continue .
							 | 
						|
								
							 | 
						|
								    5. If you have downloaded the community version of MySQL, you
							 | 
						|
								       will be shown a copy of the relevent GNU General Public
							 | 
						|
								       License. Click Continue .
							 | 
						|
								
							 | 
						|
								    6. Select the drive you want to use to install the MySQL Startup
							 | 
						|
								       Item. The drive must have a valid, bootable, Mac OS X
							 | 
						|
								       operating system installed. Click Continue.
							 | 
						|
								       MySQL Package Installer: Step 4
							 | 
						|
								
							 | 
						|
								    7. You will be asked to confirm the details of the installation,
							 | 
						|
								       including the space required for the installation. To change
							 | 
						|
								       the drive on which the startup item is installed you can click
							 | 
						|
								       either Go Back or Change Install Location.... To install the
							 | 
						|
								       startup item, click Install.
							 | 
						|
								
							 | 
						|
								    8. Once the installation has been completed successfully, you
							 | 
						|
								       will be given an Install Succeeded message.
							 | 
						|
								
							 | 
						|
								   Once you have completed the basic installation, you must complete
							 | 
						|
								   the post-installation steps as specifed in Section 2.13,
							 | 
						|
								   "Post-Installation Setup and Testing."
							 | 
						|
								
							 | 
						|
								   For convenience, you may also want to install the Section 2.7.2,
							 | 
						|
								   "Installing the MySQL Startup Item" and Section 2.7.3, "Installing
							 | 
						|
								   and Using the MySQL Preference Pane."
							 | 
						|
								
							 | 
						|
								2.7.2. Installing the MySQL Startup Item
							 | 
						|
								
							 | 
						|
								   The MySQL Installation Package includes a startup item that can be
							 | 
						|
								   used to automatically startup and shutdown MySQL during boot.
							 | 
						|
								
							 | 
						|
								   To install the MySQL Startup Item:
							 | 
						|
								
							 | 
						|
								    1. Download and open the MySQL package installer, which is
							 | 
						|
								       provided on a disk image (.dmg). Double-click to open the disk
							 | 
						|
								       image, which includes the main MySQL installation package, the
							 | 
						|
								       MySQLStartupItem.pkg installation package, and the
							 | 
						|
								       MySQL.prefPane.
							 | 
						|
								
							 | 
						|
								    2. Double-click on the MySQLStartItem.pkg file to start the
							 | 
						|
								       installation process.
							 | 
						|
								
							 | 
						|
								    3. You will be presented with the Install MySQL Startup Item
							 | 
						|
								       dialog.
							 | 
						|
								       MySQL Startup Item Installer: Step 1
							 | 
						|
								       Click Continue to continue the installation process.
							 | 
						|
								
							 | 
						|
								    4. A copy of the installation instructions and other important
							 | 
						|
								       information relevant to this installation are display. Click
							 | 
						|
								       Continue .
							 | 
						|
								
							 | 
						|
								    5. Select the drive you want to use to install the MySQL Startup
							 | 
						|
								       Item. The drive must have a valid, bootable, Mac OS X
							 | 
						|
								       operating system installed. Click Continue.
							 | 
						|
								       MySQL Startup Item Installer: Step 3
							 | 
						|
								
							 | 
						|
								    6. You will be asked to confirm the details of the installation.
							 | 
						|
								       To change the drive on which the startup item is installed you
							 | 
						|
								       can click either Go Back or Change Install Location.... To
							 | 
						|
								       install the startup item, click Install.
							 | 
						|
								
							 | 
						|
								    7. Once the installation has been completed successfully, you
							 | 
						|
								       will be given an Install Succeeded message.
							 | 
						|
								       MySQL Startup Item Installer: Step 5
							 | 
						|
								
							 | 
						|
								   The Startup Item for MySQL is installed into
							 | 
						|
								   /Library/StartupItems/MySQLCOM. The Startup Item installation adds
							 | 
						|
								   a variable MYSQLCOM=-YES- to the system configuration file
							 | 
						|
								   /etc/hostconfig. If you want to disable the automatic startup of
							 | 
						|
								   MySQL, simply change this variable to MYSQLCOM=-NO-.
							 | 
						|
								
							 | 
						|
								   After the installation, you can start up MySQL by running the
							 | 
						|
								   following commands in a terminal window. You must have
							 | 
						|
								   administrator privileges to perform this task.
							 | 
						|
								
							 | 
						|
								   If you have installed the Startup Item, use this command to start
							 | 
						|
								   the server:
							 | 
						|
								shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM start
							 | 
						|
								
							 | 
						|
								   You may be prompted for your password to complete the startup.
							 | 
						|
								
							 | 
						|
								   If you have installed the Startup Item, use this command to stop
							 | 
						|
								   the server:
							 | 
						|
								shell> sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop
							 | 
						|
								
							 | 
						|
								   You may be prompted for your password to complete the shutdown.
							 | 
						|
								
							 | 
						|
								2.7.3. Installing and Using the MySQL Preference Pane
							 | 
						|
								
							 | 
						|
								   The MySQL Package installer disk image also includes a custom
							 | 
						|
								   MySQL Preference Pane that enables you to start, stop and control
							 | 
						|
								   automated startup during boot of your MySQL installation.
							 | 
						|
								
							 | 
						|
								   To install the MySQL Preference Pane:
							 | 
						|
								
							 | 
						|
								    1. Download and open the MySQL package installer package, which
							 | 
						|
								       is provided on a disk image (.dmg). Double-click to open the
							 | 
						|
								       disk image, which includes the main MySQL installation
							 | 
						|
								       package, the MySQLStartupItem.pkg installation package, and
							 | 
						|
								       the MySQL.prefPane.
							 | 
						|
								
							 | 
						|
								    2. Double click on MySQL.prefPane. The MySQL System Preferences
							 | 
						|
								       will open.
							 | 
						|
								
							 | 
						|
								    3. If this is the first time you have installed the preference
							 | 
						|
								       pane, you will be asked to confirm installation and whether
							 | 
						|
								       you want to install the preference pane for all users, or only
							 | 
						|
								       the current user. To install the preference pane for all users
							 | 
						|
								       you will need administrator privileges. If necessary, you will
							 | 
						|
								       be prompted for the username and password for a user with
							 | 
						|
								       administrator privileges.
							 | 
						|
								
							 | 
						|
								    4. If you already have the MySQL Preference Pane installed, you
							 | 
						|
								       will be asked to confirm whether you want to overwrite the
							 | 
						|
								       existing MySQL Preference Pane.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   The MySQL Preference Pane only starts and stops MySQL installation
							 | 
						|
								   installed from the MySQL package installation that have been
							 | 
						|
								   installed in the default location.
							 | 
						|
								
							 | 
						|
								   Once the MySQL Preference Pane has been installed, you can control
							 | 
						|
								   your MySQL server instance using the preference pane. To use the
							 | 
						|
								   preference pane, open the System Preferences... from the Apple
							 | 
						|
								   menu. Select the MySQL preference pane by clicking on the MySQL
							 | 
						|
								   logo within the Other section of the preference panes list.
							 | 
						|
								   MySQL Preference Pane
							 | 
						|
								
							 | 
						|
								   The MySQL Preference Pane shows the current status of the MySQL
							 | 
						|
								   server, showing stopped (in red) if the server is not running and
							 | 
						|
								   running (in green) if the server has already been started. The
							 | 
						|
								   preference pane will also show the current setting for whether the
							 | 
						|
								   MySQL server has been set to start up automatically.
							 | 
						|
								
							 | 
						|
								     * To start MySQL using the preference pane: 
							 | 
						|
								       Click Start MySQL Server. You may be prompted for the username
							 | 
						|
								       and password of a user with administrator privileges to start
							 | 
						|
								       the MySQL server.
							 | 
						|
								
							 | 
						|
								     * To stop MySQL using the preference pane: 
							 | 
						|
								       Click Stop MySQL Server. You may be prompted for the username
							 | 
						|
								       and password of a user with administrator privileges to
							 | 
						|
								       shutdown the MySQL server.
							 | 
						|
								
							 | 
						|
								     * To automatically start the MySQL server when the system boots:
							 | 
						|
								       Check the checkbox next to Automatically Start MySQL Server on
							 | 
						|
								       Startup.
							 | 
						|
								
							 | 
						|
								     * To disable the automatic starting of the MySQL server when the
							 | 
						|
								       system boots:
							 | 
						|
								       Uncheck the checkbox next to Automatically Start MySQL Server
							 | 
						|
								       on Startup.
							 | 
						|
								
							 | 
						|
								   You can close the System Preferences... once you have completed
							 | 
						|
								   your settings.
							 | 
						|
								
							 | 
						|
								2.7.4. Using MySQL on Mac OS X Server
							 | 
						|
								
							 | 
						|
								   If you are running Mac OS X Server, a version of MySQL should
							 | 
						|
								   already be installed. The following table shows the versions of
							 | 
						|
								   MySQL that ship with Mac OS X Server versions.
							 | 
						|
								   Mac OS X Server Version MySQL Version
							 | 
						|
								   10.2-10.2.2             3.23.51
							 | 
						|
								   10.2.3-10.2.6           3.23.53
							 | 
						|
								   10.3                    4.0.14
							 | 
						|
								   10.3.2                  4.0.16
							 | 
						|
								   10.4.0                  4.1.10a
							 | 
						|
								   10.5.0                  5.0.45
							 | 
						|
								   10.6.0                  5.0.82
							 | 
						|
								
							 | 
						|
								   The installation layout of MySQL on Mac OS X Server is as shown in
							 | 
						|
								   the table below:
							 | 
						|
								   Directory                   Contents of Directory
							 | 
						|
								   /usr/bin                    Client programs
							 | 
						|
								   /var/mysql                  Log files, databases
							 | 
						|
								   /usr/libexec                The mysqld server
							 | 
						|
								   /usr/share/man              Unix manual pages
							 | 
						|
								   /usr/share/mysql/mysql-test MySQL test suite
							 | 
						|
								   /usr/share/mysql            Contains the mysql_install_db script
							 | 
						|
								   /var/mysql/mysql.sock       The location of the MySQL Unix socket
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   The MySQL server bundled with Mac OS X Server does not include the
							 | 
						|
								   MySQL client libraries and header files required if you want to
							 | 
						|
								   access and use MySQL from a third-party driver, such as Perl DBI
							 | 
						|
								   or PHP. For more information on obtaining and installing MySQL
							 | 
						|
								   libraries, see Mac OS X Server version 10.5: MySQL libraries
							 | 
						|
								   available for download (http://support.apple.com/kb/TA25017).
							 | 
						|
								   Alternatively, you can ignore the bundled MySQL server and install
							 | 
						|
								   MySQL from the package or tarball installation.
							 | 
						|
								
							 | 
						|
								   For more information on managing the bundled MySQL instance in Mac
							 | 
						|
								   OS X Server 10.5, see Mac OS X Server: Web Technologies
							 | 
						|
								   Administration For Version 10.5 Leopard
							 | 
						|
								   (http://images.apple.com/server/macosx/docs/Web_Technologies_Admin
							 | 
						|
								   _v10.5.pdf). For more information on managing the bundled MySQL
							 | 
						|
								   instance in Mac OS X Server 10.6, see Mac OS X Server: Web
							 | 
						|
								   Technologies Administration Version 10.6 Snow Leopard
							 | 
						|
								   (http://manuals.info.apple.com/en_US/WebTech_v10.6.pdf).
							 | 
						|
								
							 | 
						|
								2.7.5. MySQL Installation on Mac OS X Notes
							 | 
						|
								
							 | 
						|
								   You should keep the following issues and notes in mind:
							 | 
						|
								
							 | 
						|
								     * The default location for the MySQL Unix socket is different on
							 | 
						|
								       Mac OS X and Mac OS X Server depending on the installation
							 | 
						|
								       type you chose. The default locations by installation are as
							 | 
						|
								       follows:
							 | 
						|
								
							 | 
						|
								       Package Installer from MySQL       /tmp/mysql.sock
							 | 
						|
								       Tarball from MySQL                 /tmp/mysql.sock
							 | 
						|
								       MySQL Bundled with Mac OS X Server /var/mysql/mysql.sock
							 | 
						|
								       To prevent issues, you should either change the configuration
							 | 
						|
								       of the socket used within your application (for example,
							 | 
						|
								       changing php.ini), or you should configure the socket location
							 | 
						|
								       using a MySQL configuration file and the socket option. For
							 | 
						|
								       more information, see Section 5.1.2, "Server Command Options."
							 | 
						|
								
							 | 
						|
								     * You may need (or want) to create a specific mysql user to own
							 | 
						|
								       the MySQL directory and data. On Mac OS X 10.4 and lower you
							 | 
						|
								       can do this by using the Netinfo Manager application, located
							 | 
						|
								       within the Utilities folder within the Applications folder. On
							 | 
						|
								       Mac OS X 10.5 and later you can do this through the Directory
							 | 
						|
								       Utility. From Mac OS X 10.5 and later (including Mac OS X
							 | 
						|
								       Server 10.5) the mysql should already exist. For use in single
							 | 
						|
								       user mode, an entry for _mysql (note the underscore prefix)
							 | 
						|
								       should already exist within the system /etc/passwd file.
							 | 
						|
								
							 | 
						|
								     * Due to a bug in the Mac OS X package installer, you may see
							 | 
						|
								       this error message in the destination disk selection dialog:
							 | 
						|
								You cannot install this software on this disk. (null)
							 | 
						|
								       If this error occurs, simply click the Go Back button once to
							 | 
						|
								       return to the previous screen. Then click Continue to advance
							 | 
						|
								       to the destination disk selection again, and you should be
							 | 
						|
								       able to choose the destination disk correctly. We have
							 | 
						|
								       reported this bug to Apple and it is investigating this
							 | 
						|
								       problem.
							 | 
						|
								
							 | 
						|
								     * Because the MySQL package installer installs the MySQL
							 | 
						|
								       contents into a version and platform specific directory, you
							 | 
						|
								       can use this to upgrade and migrate your database between
							 | 
						|
								       versions. You will need to either copy the data directory from
							 | 
						|
								       the old version to the new version, or alternatively specify
							 | 
						|
								       an alternative datadir value to set location of the data
							 | 
						|
								       directory.
							 | 
						|
								
							 | 
						|
								     * You might want to add aliases to your shell's resource file to
							 | 
						|
								       make it easier to access commonly used programs such as mysql
							 | 
						|
								       and mysqladmin from the command line. The syntax for bash is:
							 | 
						|
								alias mysql=/usr/local/mysql/bin/mysql
							 | 
						|
								alias mysqladmin=/usr/local/mysql/bin/mysqladmin
							 | 
						|
								       For tcsh, use:
							 | 
						|
								alias mysql /usr/local/mysql/bin/mysql
							 | 
						|
								alias mysqladmin /usr/local/mysql/bin/mysqladmin
							 | 
						|
								       Even better, add /usr/local/mysql/bin to your PATH environment
							 | 
						|
								       variable. You can do this by modifying the appropriate startup
							 | 
						|
								       file for your shell. For more information, see Section 4.2.1,
							 | 
						|
								       "Invoking MySQL Programs."
							 | 
						|
								
							 | 
						|
								     * After you have copied over the MySQL database files from the
							 | 
						|
								       previous installation and have successfully started the new
							 | 
						|
								       server, you should consider removing the old installation
							 | 
						|
								       files to save disk space. Additionally, you should also remove
							 | 
						|
								       older versions of the Package Receipt directories located in
							 | 
						|
								       /Library/Receipts/mysql-VERSION.pkg.
							 | 
						|
								
							 | 
						|
								2.8. Installing MySQL on Solaris
							 | 
						|
								
							 | 
						|
								   To obtain a binary MySQL distribution for Solaris in tarball or
							 | 
						|
								   PKG format, http://dev.mysql.com/downloads/mysql/5.1.html.
							 | 
						|
								
							 | 
						|
								   If you install MySQL using a binary tarball distribution on
							 | 
						|
								   Solaris, you may run into trouble even before you get the MySQL
							 | 
						|
								   distribution unpacked, as the Solaris tar cannot handle long file
							 | 
						|
								   names. This means that you may see errors when you try to unpack
							 | 
						|
								   MySQL.
							 | 
						|
								
							 | 
						|
								   If this occurs, you must use GNU tar (gtar) to unpack the
							 | 
						|
								   distribution.
							 | 
						|
								
							 | 
						|
								   You can install MySQL on Solaris using a binary package in PKG
							 | 
						|
								   format instead of the binary tarball distribution. Before
							 | 
						|
								   installing using the binary PKG format, you should create the
							 | 
						|
								   mysql user and group, for example:
							 | 
						|
								groupadd mysql
							 | 
						|
								useradd -g mysql mysql
							 | 
						|
								
							 | 
						|
								   Some basic PKG-handling commands follow:
							 | 
						|
								
							 | 
						|
								     * To add a package:
							 | 
						|
								pkgadd -d package_name.pkg
							 | 
						|
								
							 | 
						|
								     * To remove a package:
							 | 
						|
								pkgrm package_name
							 | 
						|
								
							 | 
						|
								     * To get a full list of installed packages:
							 | 
						|
								pkginfo
							 | 
						|
								
							 | 
						|
								     * To get detailed information for a package:
							 | 
						|
								pkginfo -l package_name
							 | 
						|
								
							 | 
						|
								     * To list the files belonging to a package:
							 | 
						|
								pkgchk -v package_name
							 | 
						|
								
							 | 
						|
								     * To get packaging information for an arbitrary file:
							 | 
						|
								pkgchk -l -p file_name
							 | 
						|
								
							 | 
						|
								2.8.1. Solaris Notes
							 | 
						|
								
							 | 
						|
								   For information about installing MySQL on Solaris using PKG
							 | 
						|
								   distributions, see Section 2.8, "Installing MySQL on Solaris."
							 | 
						|
								
							 | 
						|
								   On Solaris, you may run into trouble even before you get the MySQL
							 | 
						|
								   distribution unpacked, as the Solaris tar cannot handle long file
							 | 
						|
								   names. This means that you may see errors when you try to unpack
							 | 
						|
								   MySQL.
							 | 
						|
								
							 | 
						|
								   If this occurs, you must use GNU tar (gtar) to unpack the
							 | 
						|
								   distribution.
							 | 
						|
								
							 | 
						|
								   If you have an UltraSPARC system, you can get 4% better
							 | 
						|
								   performance by adding -mcpu=v8 -Wa,-xarch=v8plusa to the CFLAGS
							 | 
						|
								   and CXXFLAGS environment variables.
							 | 
						|
								
							 | 
						|
								   If you have Sun's Forte 5.0 (or newer) compiler, you can run
							 | 
						|
								   configure like this:
							 | 
						|
								CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt" \
							 | 
						|
								CXX=CC CXXFLAGS="-noex -mt" \
							 | 
						|
								./configure --prefix=/usr/local/mysql --enable-assembler
							 | 
						|
								
							 | 
						|
								   To create a 64-bit binary with Sun's Forte compiler, use the
							 | 
						|
								   following configuration options:
							 | 
						|
								CC=cc CFLAGS="-Xa -fast -native -xstrconst -mt -xarch=v9" \
							 | 
						|
								CXX=CC CXXFLAGS="-noex -mt -xarch=v9" ASFLAGS="-xarch=v9" \
							 | 
						|
								./configure --prefix=/usr/local/mysql --enable-assembler
							 | 
						|
								
							 | 
						|
								   To create a 64-bit Solaris binary using gcc, add -m64 to CFLAGS
							 | 
						|
								   and CXXFLAGS and remove --enable-assembler from the configure
							 | 
						|
								   line.
							 | 
						|
								
							 | 
						|
								   In the MySQL benchmarks, we obtained a 4% speed increase on
							 | 
						|
								   UltraSPARC when using Forte 5.0 in 32-bit mode, as compared to
							 | 
						|
								   using gcc 3.2 with the -mcpu flag.
							 | 
						|
								
							 | 
						|
								   If you create a 64-bit mysqld binary, it is 4% slower than the
							 | 
						|
								   32-bit binary, but can handle more threads and memory.
							 | 
						|
								
							 | 
						|
								   When using Solaris 10 for x86_64, you should mount any file
							 | 
						|
								   systems on which you intend to store InnoDB files with the
							 | 
						|
								   forcedirectio option. (By default mounting is done without this
							 | 
						|
								   option.) Failing to do so will cause a significant drop in
							 | 
						|
								   performance when using the InnoDB storage engine on this platform.
							 | 
						|
								
							 | 
						|
								   If you get a problem with fdatasync or sched_yield, you can fix
							 | 
						|
								   this by adding LIBS=-lrt to the configure line
							 | 
						|
								
							 | 
						|
								   Solaris does not provide static versions of all system libraries
							 | 
						|
								   (libpthreads and libdl), so you cannot compile MySQL with
							 | 
						|
								   --static. If you try to do so, you get one of the following
							 | 
						|
								   errors:
							 | 
						|
								ld: fatal: library -ldl: not found
							 | 
						|
								undefined reference to `dlopen'
							 | 
						|
								cannot find -lrt
							 | 
						|
								
							 | 
						|
								   If you link your own MySQL client programs, you may see the
							 | 
						|
								   following error at runtime:
							 | 
						|
								ld.so.1: fatal: libmysqlclient.so.#:
							 | 
						|
								open failed: No such file or directory
							 | 
						|
								
							 | 
						|
								   This problem can be avoided by one of the following methods:
							 | 
						|
								
							 | 
						|
								     * Link clients with the -Wl,r/full/path/to/libmysqlclient.so
							 | 
						|
								       flag rather than with -Lpath).
							 | 
						|
								
							 | 
						|
								     * Copy libmysqclient.so to /usr/lib.
							 | 
						|
								
							 | 
						|
								     * Add the path name of the directory where libmysqlclient.so is
							 | 
						|
								       located to the LD_RUN_PATH environment variable before running
							 | 
						|
								       your client.
							 | 
						|
								
							 | 
						|
								   If you have problems with configure trying to link with -lz when
							 | 
						|
								   you don't have zlib installed, you have two options:
							 | 
						|
								
							 | 
						|
								     * If you want to be able to use the compressed communication
							 | 
						|
								       protocol, you need to get and install zlib from ftp.gnu.org.
							 | 
						|
								
							 | 
						|
								     * Run configure with the --with-named-z-libs=no option when
							 | 
						|
								       building MySQL.
							 | 
						|
								
							 | 
						|
								   If you are using gcc and have problems with loading user-defined
							 | 
						|
								   functions (UDFs) into MySQL, try adding -lgcc to the link line for
							 | 
						|
								   the UDF.
							 | 
						|
								
							 | 
						|
								   If you would like MySQL to start automatically, you can copy
							 | 
						|
								   support-files/mysql.server to /etc/init.d and create a symbolic
							 | 
						|
								   link to it named /etc/rc3.d/S99mysql.server.
							 | 
						|
								
							 | 
						|
								   If too many processes try to connect very rapidly to mysqld, you
							 | 
						|
								   should see this error in the MySQL log:
							 | 
						|
								Error in accept: Protocol error
							 | 
						|
								
							 | 
						|
								   You might try starting the server with the --back_log=50 option as
							 | 
						|
								   a workaround for this. (Use -O back_log=50 before MySQL 4.)
							 | 
						|
								
							 | 
						|
								   To configure the generation of core files on Solaris you should
							 | 
						|
								   use the coreadm command. Because of the security implications of
							 | 
						|
								   generating a core on a setuid() application, by default, Solaris
							 | 
						|
								   does not support core files on setuid() programs. However, you can
							 | 
						|
								   modify this behavior using coreadm. If you enable setuid() core
							 | 
						|
								   files for the current user, they will be generated using the mode
							 | 
						|
								   600 and owned by the superuser.
							 | 
						|
								
							 | 
						|
								2.9. Installing MySQL on i5/OS
							 | 
						|
								
							 | 
						|
								   The i5/OS POWER MySQL package was created in cooperation with IBM.
							 | 
						|
								   MySQL works within the Portable Application Solution Environment
							 | 
						|
								   (PASE) on the System i series of hardware and will also provide
							 | 
						|
								   database services for the Zend Core for i5/OS.
							 | 
						|
								
							 | 
						|
								   MySQL for i5/OS is provided both as a tar file and as a save file
							 | 
						|
								   (.savf) package that can be downloaded and installed directly
							 | 
						|
								   without any additional installation steps required. To install
							 | 
						|
								   MySQL using the tar file, see Section 2.2, "Installing MySQL from
							 | 
						|
								   Generic Binaries on Unix/Linux."
							 | 
						|
								
							 | 
						|
								   MySQL is only supported on i5/OS V5R4 or later releases. The i5/OS
							 | 
						|
								   PASE must be installed for MySQL to operate. You must be able to
							 | 
						|
								   login as a user in *SECOFR class.
							 | 
						|
								
							 | 
						|
								   You should the installation notes and tips for i5/OS before
							 | 
						|
								   starting installation. See i5/OS Installation Notes.
							 | 
						|
								
							 | 
						|
								   Before Installation:
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   The installation package will use an existing configuration if you
							 | 
						|
								   have previously installed MySQL (which is identified by looking
							 | 
						|
								   for the file /etc/my.cnf). The values for the data directory
							 | 
						|
								   (DATADIR) and owner of the MySQL files (USRPRF) specified during
							 | 
						|
								   the installation will be ignored, and the values determined from
							 | 
						|
								   the /etc/my.cnf will be used instead.
							 | 
						|
								
							 | 
						|
								   If you want to change these parameters during a new install, you
							 | 
						|
								   should temporarily rename /etc/my.cnf, install MySQL using the new
							 | 
						|
								   parameters you want to use, and then merge your previous
							 | 
						|
								   /etc/my.cnf configuration settings with the new /etc/my.cnf file
							 | 
						|
								   that is created during installation.
							 | 
						|
								
							 | 
						|
								     * You must have a user profile with PASE with suitable
							 | 
						|
								       privileges. The user should be within the *SECOFR class, such
							 | 
						|
								       as the QSECOFR user ID. You can use the WRKUSRPRF command to
							 | 
						|
								       check your user profile.
							 | 
						|
								
							 | 
						|
								     * For network connections to MySQL, you must have TCP/IP
							 | 
						|
								       enabled. You should also check the following:
							 | 
						|
								
							 | 
						|
								          + Ensure that a name has defined for the system. Run the
							 | 
						|
								            Configure TCP/IP (CFGTCP) command and select option 12
							 | 
						|
								            (Change TCP/IP domain information) to display this
							 | 
						|
								            setting. Make sure that a value is listed in the Host
							 | 
						|
								            name field.
							 | 
						|
								
							 | 
						|
								          + Make sure that the system has a loopback entry which
							 | 
						|
								            represents the localhost or 127.0.0.1.
							 | 
						|
								
							 | 
						|
								          + Ensure that the IP address of the IBM i machine is mapped
							 | 
						|
								            correctly to the host name.
							 | 
						|
								
							 | 
						|
								   To install MySQL on i5/OS, follow these steps:
							 | 
						|
								
							 | 
						|
								    1. On the System i machine, create a save file that will be used
							 | 
						|
								       to receive the downloaded installation save file. The file
							 | 
						|
								       should be located within the General Purpose Library (QGPL):
							 | 
						|
								CRTSAVF FILE(QGPL/MYSQLINST) TESXT('MySQL Save file')
							 | 
						|
								
							 | 
						|
								    2. Download the MySQL installation save file in 32-bit
							 | 
						|
								       (mysql-5.1.39-i5os-power-32bit.savf) or 64-bit
							 | 
						|
								       (mysql-5.1.39-i5os-power-64bit.savf) from MySQL Downloads
							 | 
						|
								       (http://dev.mysql.com/downloads).
							 | 
						|
								
							 | 
						|
								    3. You need to FTP the downloaded .savf file directly into the
							 | 
						|
								       QGPL/MYSQLINST file on the System i server. You can do this
							 | 
						|
								       through FTP using the following steps after logging in to the
							 | 
						|
								       System i machine:
							 | 
						|
								ftp> bin
							 | 
						|
								ftp> cd qgpl
							 | 
						|
								ftp> put mysql-5.1.39-i5os-power.savf mysqlinst
							 | 
						|
								
							 | 
						|
								    4. Log into the System i server using a user in the *SECOFR
							 | 
						|
								       class, such as the QSECOFR user ID.
							 | 
						|
								
							 | 
						|
								    5. You need to restore the installation library stored in the
							 | 
						|
								       .savf save file:
							 | 
						|
								RSTLIB MYSQLINST DEV(*SAVF) SAVF(QGPL/MYSQLINST) MBROPT(*ALL) ALWOBJD
							 | 
						|
								IF(*ALL)
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								       You can ignore the security changes-type message at the bottom
							 | 
						|
								       of the installation panel.
							 | 
						|
								
							 | 
						|
								    6. Once you have finished restoring the MYSQLINST library, check
							 | 
						|
								       that all the necessary objects for installation are on the
							 | 
						|
								       system by using the Display Library (DSPLIB) command:
							 | 
						|
								DSPLIB LIB(MYSQLINST)
							 | 
						|
								
							 | 
						|
								    7. You need to execute the installation command,
							 | 
						|
								       MYSQLINST/INSMYSQL. You can specify three parameter settings
							 | 
						|
								       during installation:
							 | 
						|
								
							 | 
						|
								          + DIR('/QOpenSys/usr/local/mysql') sets the installation
							 | 
						|
								            location for the MySQL files. The directory will be
							 | 
						|
								            created if it does not already exist.
							 | 
						|
								
							 | 
						|
								          + DATADIR('/QOpenSys/usr/local/mysql/data') sets the
							 | 
						|
								            location of the directory that will be used to store the
							 | 
						|
								            database files and binary logs. The default setting is
							 | 
						|
								            /QOpenSys/usr/local/mysql/data. Note that if the
							 | 
						|
								            installer detects an existing installation (due to the
							 | 
						|
								            existence of /etc/my.cnf), then the existing setting will
							 | 
						|
								            be used instead of the default.
							 | 
						|
								
							 | 
						|
								          + USRPRF(MYSQL) sets the user profile that will own the
							 | 
						|
								            files that are installed. The profile will be created if
							 | 
						|
								            it does not already exist.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								            You should choose an appropriate user for using the MySQL
							 | 
						|
								            server installation. The user will be used whenever you
							 | 
						|
								            need to do any administration on the MySQL server.
							 | 
						|
								       Once you have set the appropriate parameters, you can begin
							 | 
						|
								       the installation.
							 | 
						|
								       The installation copies all the necessary files into a
							 | 
						|
								       directory matching the DIR configuration value; sets the
							 | 
						|
								       ownership on those files, sets up the MySQL environment and
							 | 
						|
								       creates the MySQL configuration file (in /etc/my.cnf)
							 | 
						|
								       completing all the steps in a typical binary installation
							 | 
						|
								       process automatically. If this is a new installation of MySQL,
							 | 
						|
								       or if the installer detects that this is a new version
							 | 
						|
								       (because the /etc/my.cnf file does not exist), then the
							 | 
						|
								       initial core MySQL databases will also be created during
							 | 
						|
								       installation.
							 | 
						|
								       Once the installation has been completed, you will get a
							 | 
						|
								       notice advising you to set the password for the root user. For
							 | 
						|
								       more information, Section 2.13, "Post-Installation Setup and
							 | 
						|
								       Testing."
							 | 
						|
								
							 | 
						|
								    8. Once the installation has completed, you can delete the
							 | 
						|
								       installation file:
							 | 
						|
								DLTLIB LIB(MYSQLINST)
							 | 
						|
								
							 | 
						|
								   Upgrading an existing MySQL instance
							 | 
						|
								
							 | 
						|
								   You need to execute the upgrade command, MYSQLINST/UPGMYSQL.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   You cannot use MYSQLINST/UPGMYSQL to upgrade between major
							 | 
						|
								   versions of MySQL (for example from 5.0 to 5.1). For information
							 | 
						|
								   and advice on migrating between major versions you can use the
							 | 
						|
								   advice provided in Section 2.4.1.1, "Upgrading from MySQL 5.0 to
							 | 
						|
								   5.1."
							 | 
						|
								
							 | 
						|
								   You must specify 6 parameters to perform an upgrade:
							 | 
						|
								
							 | 
						|
								     * DIR('/QOpenSys/usr/local/') --- sets the installation location
							 | 
						|
								       for the MySQL files. The directory will be created if it does
							 | 
						|
								       not already exist. This is the directory that the MySQL server
							 | 
						|
								       will be installed into, inside a directory with a name
							 | 
						|
								       matching the version and release. For example, if installing
							 | 
						|
								       MySQL 5.1.39 with the DIR set to /QOpenSys/usr/local/ would
							 | 
						|
								       result in /QOpenSys/usr/local/mysql-5.1.39-i5os-power64 and a
							 | 
						|
								       symbolic link to this directory will be created in
							 | 
						|
								       /QOpenSys/usr/local/mysql.
							 | 
						|
								
							 | 
						|
								     * DATADIR('/QOpenSys/mysql/data') --- sets the location of the
							 | 
						|
								       directory that will be upgraded.
							 | 
						|
								
							 | 
						|
								     * USRPRF('MYSQL') --- sets the user profile that will own the
							 | 
						|
								       files that are installed. The profile will be created if it
							 | 
						|
								       does not already exist; if it is created as part of the
							 | 
						|
								       upgrade process, it will be disabled initially. You may wish
							 | 
						|
								       to enable this user profile so that it can be used to start
							 | 
						|
								       the MySQL server later. It is best practice to use the one
							 | 
						|
								       previously created during the first installation.
							 | 
						|
								
							 | 
						|
								     * MYSQLUSR('root user') --- any user account in the current
							 | 
						|
								       MySQL server with SUPER privileges.
							 | 
						|
								
							 | 
						|
								     * PASSWORD('root user password') --- the password for the above
							 | 
						|
								       account. This is necessary as the upgrade starts the MySQL
							 | 
						|
								       server to upgrade the tables and the password is need to be
							 | 
						|
								       able to shutdown the MySQL server.
							 | 
						|
								
							 | 
						|
								     * CURINST('path to previous install') --- the full path to the
							 | 
						|
								       installation that is being upgraded. For example an
							 | 
						|
								       installation in /QOpenSys/usr/local/ will be
							 | 
						|
								       /QOpenSys/usr/local/msyql-5.1.30-i5os-power64. Failure to
							 | 
						|
								       specify this option may result in corruption of your existing
							 | 
						|
								       data files.
							 | 
						|
								
							 | 
						|
								   For example:
							 | 
						|
								MYSQLINST/UPGMYSQL DIR('/QOpenSys/usr/local/') DATADIR('/QOpenSys/mys
							 | 
						|
								ql/data') »
							 | 
						|
								     USERPRF(MYSQL) MYSQLUSR('root') PASSWORD('root') CURINST('/QOpen
							 | 
						|
								Sys/usr/local/mysql-5.1.30-i5os-power64')
							 | 
						|
								
							 | 
						|
								   You should receive a Program Message indicating UPGRADE
							 | 
						|
								   SUCCESSFUL! upon completion or an error message if there is a
							 | 
						|
								   problem.You can view the upgrade programs progression and the
							 | 
						|
								   error in the text file upgrade.log in the installation directory.
							 | 
						|
								
							 | 
						|
								   To start MySQL:
							 | 
						|
								
							 | 
						|
								    1. Log into the System i server using the user profile create or
							 | 
						|
								       specified during installation. By default, this is MYSQL.
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								       You should start mysqld_safe using a user that in the PASE
							 | 
						|
								       environment has the id=0 (the equivalent of the standard Unix
							 | 
						|
								       root user). If you do not use a user with this ID then the
							 | 
						|
								       system will be unable to change the user when executing mysqld
							 | 
						|
								       as set using --user option. If this happens, mysqld may be
							 | 
						|
								       unable to read the files located within the MySQL data
							 | 
						|
								       directory and the execution will fail.
							 | 
						|
								
							 | 
						|
								    2. Enter the PASE environment using call qp2term.
							 | 
						|
								
							 | 
						|
								    3. Start the MySQL server by changing to the installation
							 | 
						|
								       directory and running mysqld_safe, specifying the user name
							 | 
						|
								       used to install the server. The installer conveniently
							 | 
						|
								       installs a symbolic link to the installation directory
							 | 
						|
								       (mysql-5.0.42-i5os-power-32bit) as /opt/mysql/mysql:
							 | 
						|
								> cd /opt/mysql/mysql
							 | 
						|
								> bin/mysqld_safe --user=mysql &
							 | 
						|
								       You should see a message similar to the following:
							 | 
						|
								Starting mysqld daemon with databases »
							 | 
						|
								     from /opt/mysql/mysql-enterprise-5.0.42-i5os-power-32bit/data
							 | 
						|
								
							 | 
						|
								   If you are having problems starting MySQL server, see Section
							 | 
						|
								   2.13.1.3, "Starting and Troubleshooting the MySQL Server."
							 | 
						|
								
							 | 
						|
								   To stop MySQL:
							 | 
						|
								
							 | 
						|
								    1. Log into the System i server using the user profile create or
							 | 
						|
								       specified during installation. By default, this is MYSQL.
							 | 
						|
								
							 | 
						|
								    2. Enter the PASE environment using call qp2term.
							 | 
						|
								
							 | 
						|
								    3. Stop the MySQL server by changing into the installation
							 | 
						|
								       directory and running mysqladmin, specifying the user name
							 | 
						|
								       used to install the server:
							 | 
						|
								> cd /opt/mysql/mysql
							 | 
						|
								> bin/mysqladmin -u root shutdown
							 | 
						|
								       If the session that you started and stopped MySQL are the
							 | 
						|
								       same, you may get the log output from mysqld:
							 | 
						|
								   STOPPING server from pid file »
							 | 
						|
								     /opt/mysql/mysql-enterprise-5.0.42-i5os-power-32bit/data/I5DBX.R
							 | 
						|
								CHLAND.IBM.COM.pid
							 | 
						|
								   070718 10:34:20  mysqld ended
							 | 
						|
								       If the sessions used to start and stop MySQL are different,
							 | 
						|
								       you will not receive any confirmation of the shutdown.
							 | 
						|
								
							 | 
						|
								   Note and tips
							 | 
						|
								
							 | 
						|
								     * A problem has been identified with the installation process on
							 | 
						|
								       DBCS systems. If you are having problems install MySQL on a
							 | 
						|
								       DBCS system, you need to change your job's coded character set
							 | 
						|
								       identifier (CSSID) to 37 (EBCDIC) before executing the install
							 | 
						|
								       command, INSMYSQL. To do this, determine your existing CSSID
							 | 
						|
								       (using DSPJOB and selecting option 2), execute CHGJOB
							 | 
						|
								       CSSID(37), run INSMYSQL to install MySQL and then execute
							 | 
						|
								       CHGJOB again with your original CSSID.
							 | 
						|
								
							 | 
						|
								     * If you want to use the Perl scripts that are included with
							 | 
						|
								       MySQL, you need to download the iSeries Tools for Developers
							 | 
						|
								       (5799-PTL). See
							 | 
						|
								       http://www-03.ibm.com/servers/enable/site/porting/tools/.
							 | 
						|
								
							 | 
						|
								2.10. Installing MySQL on FreeBSD
							 | 
						|
								
							 | 
						|
								   This section provides information about using MySQL on variants of
							 | 
						|
								   FreeBSD Unix.
							 | 
						|
								
							 | 
						|
								   The easiest (and preferred) way to install MySQL is to use the
							 | 
						|
								   mysql-server and mysql-client ports available at
							 | 
						|
								   http://www.freebsd.org/. Using these ports gives you the following
							 | 
						|
								   benefits:
							 | 
						|
								
							 | 
						|
								     * A working MySQL with all optimizations enabled that are known
							 | 
						|
								       to work on your version of FreeBSD.
							 | 
						|
								
							 | 
						|
								     * Automatic configuration and build.
							 | 
						|
								
							 | 
						|
								     * Startup scripts installed in /usr/local/etc/rc.d.
							 | 
						|
								
							 | 
						|
								     * The ability to use pkg_info -L to see which files are
							 | 
						|
								       installed.
							 | 
						|
								
							 | 
						|
								     * The ability to use pkg_delete to remove MySQL if you no longer
							 | 
						|
								       want it on your machine.
							 | 
						|
								
							 | 
						|
								   The MySQL build process requires GNU make (gmake) to work. If GNU
							 | 
						|
								   make is not available, you must install it first before compiling
							 | 
						|
								   MySQL.
							 | 
						|
								
							 | 
						|
								   The recommended way to compile and install MySQL on FreeBSD with
							 | 
						|
								   gcc (2.95.2 and up) is:
							 | 
						|
								CC=gcc CFLAGS="-O2 -fno-strength-reduce" \
							 | 
						|
								    CXX=gcc CXXFLAGS="-O2 -fno-rtti -fno-exceptions \
							 | 
						|
								    -felide-constructors -fno-strength-reduce" \
							 | 
						|
								    ./configure --prefix=/usr/local/mysql --enable-assembler
							 | 
						|
								gmake
							 | 
						|
								gmake install
							 | 
						|
								cd /usr/local/mysql
							 | 
						|
								bin/mysql_install_db --user=mysql
							 | 
						|
								bin/mysqld_safe &
							 | 
						|
								
							 | 
						|
								   FreeBSD is known to have a very low default file handle limit. See
							 | 
						|
								   Section B.5.2.18, "'File' Not Found and Similar Errors." Start the
							 | 
						|
								   server by using the --open-files-limit option for mysqld_safe, or
							 | 
						|
								   raise the limits for the mysqld user in /etc/login.conf and
							 | 
						|
								   rebuild it with cap_mkdb /etc/login.conf. Also be sure that you
							 | 
						|
								   set the appropriate class for this user in the password file if
							 | 
						|
								   you are not using the default (use chpass mysqld-user-name). See
							 | 
						|
								   Section 4.3.2, "mysqld_safe --- MySQL Server Startup Script."
							 | 
						|
								
							 | 
						|
								   In current versions of FreeBSD (at least 4.x and greater), you may
							 | 
						|
								   increase the limit on the amount of memory available for a process
							 | 
						|
								   by adding the following entries to the /boot/loader.conf file and
							 | 
						|
								   rebooting the machine (these are not settings that can be changed
							 | 
						|
								   at run time with the sysctl command):
							 | 
						|
								kern.maxdsiz="1073741824" # 1GB
							 | 
						|
								kern.dfldsiz="1073741824" # 1GB
							 | 
						|
								kern.maxssiz="134217728" # 128MB
							 | 
						|
								
							 | 
						|
								   For older versions of FreeBSD, you must recompile your kernel to
							 | 
						|
								   change the maximum data segment size for a process. In this case,
							 | 
						|
								   you should look at the MAXDSIZ option in the LINT config file for
							 | 
						|
								   more information.
							 | 
						|
								
							 | 
						|
								   If you get problems with the current date in MySQL, setting the TZ
							 | 
						|
								   variable should help. See Section 2.14, "Environment Variables."
							 | 
						|
								
							 | 
						|
								2.11. Installing MySQL on HP-UX
							 | 
						|
								
							 | 
						|
								   If you install MySQL using a binary tarball distribution on HP-UX,
							 | 
						|
								   you may run into trouble even before you get the MySQL
							 | 
						|
								   distribution unpacked, as the HP-UX tar cannot handle long file
							 | 
						|
								   names. This means that you may see errors when you try to unpack
							 | 
						|
								   MySQL.
							 | 
						|
								
							 | 
						|
								   If this occurs, you must use GNU tar (gtar) to unpack the
							 | 
						|
								   distribution.
							 | 
						|
								
							 | 
						|
								   Because of some critical bugs in the standard HP-UX libraries, you
							 | 
						|
								   should install the following patches before trying to run MySQL on
							 | 
						|
								   HP-UX 11.0:
							 | 
						|
								PHKL_22840 Streams cumulative
							 | 
						|
								PHNE_22397 ARPA cumulative
							 | 
						|
								
							 | 
						|
								   This solves the problem of getting EWOULDBLOCK from recv() and
							 | 
						|
								   EBADF from accept() in threaded applications.
							 | 
						|
								
							 | 
						|
								   If you are using gcc 2.95.1 on an unpatched HP-UX 11.x system, you
							 | 
						|
								   may get the following error:
							 | 
						|
								In file included from /usr/include/unistd.h:11,
							 | 
						|
								                 from ../include/global.h:125,
							 | 
						|
								                 from mysql_priv.h:15,
							 | 
						|
								                 from item.cc:19:
							 | 
						|
								/usr/include/sys/unistd.h:184: declaration of C function ...
							 | 
						|
								/usr/include/sys/pthread.h:440: previous declaration ...
							 | 
						|
								In file included from item.h:306,
							 | 
						|
								                 from mysql_priv.h:158,
							 | 
						|
								                 from item.cc:19:
							 | 
						|
								
							 | 
						|
								   The problem is that HP-UX does not define pthreads_atfork()
							 | 
						|
								   consistently. It has conflicting prototypes in
							 | 
						|
								   /usr/include/sys/unistd.h:184 and /usr/include/sys/pthread.h:440.
							 | 
						|
								
							 | 
						|
								   One solution is to copy /usr/include/sys/unistd.h into
							 | 
						|
								   mysql/include and edit unistd.h and change it to match the
							 | 
						|
								   definition in pthread.h. Look for this line:
							 | 
						|
								extern int pthread_atfork(void (*prepare)(), void (*parent)(),
							 | 
						|
								                                          void (*child)());
							 | 
						|
								
							 | 
						|
								   Change it to look like this:
							 | 
						|
								extern int pthread_atfork(void (*prepare)(void), void (*parent)(void)
							 | 
						|
								,
							 | 
						|
								                                          void (*child)(void));
							 | 
						|
								
							 | 
						|
								   After making the change, the following configure line should work:
							 | 
						|
								CFLAGS="-fomit-frame-pointer -O3 -fpic" CXX=gcc \
							 | 
						|
								CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti -O3" \
							 | 
						|
								./configure --prefix=/usr/local/mysql --disable-shared
							 | 
						|
								
							 | 
						|
								   If you are using HP-UX compiler, you can use the following command
							 | 
						|
								   (which has been tested with cc B.11.11.04):
							 | 
						|
								CC=cc CXX=aCC CFLAGS=+DD64 CXXFLAGS=+DD64 ./configure \
							 | 
						|
								    --with-extra-character-set=complex
							 | 
						|
								
							 | 
						|
								   You can ignore any errors of the following type:
							 | 
						|
								aCC: warning 901: unknown option: `-3': use +help for online
							 | 
						|
								documentation
							 | 
						|
								
							 | 
						|
								   If you get the following error from configure, verify that you
							 | 
						|
								   don't have the path to the K&R compiler before the path to the
							 | 
						|
								   HP-UX C and C++ compiler:
							 | 
						|
								checking for cc option to accept ANSI C... no
							 | 
						|
								configure: error: MySQL requires an ANSI C compiler (and a C++ compil
							 | 
						|
								er).
							 | 
						|
								Try gcc. See the Installation chapter in the Reference Manual.
							 | 
						|
								
							 | 
						|
								   Another reason for not being able to compile is that you didn't
							 | 
						|
								   define the +DD64 flags as just described.
							 | 
						|
								
							 | 
						|
								   Another possibility for HP-UX 11 is to use the MySQL binaries
							 | 
						|
								   provided at http://dev.mysql.com/downloads/, which we have built
							 | 
						|
								   and tested ourselves. We have also received reports that the HP-UX
							 | 
						|
								   10.20 binaries supplied by MySQL can be run successfully on HP-UX
							 | 
						|
								   11. If you encounter problems, you should be sure to check your
							 | 
						|
								   HP-UX patch level.
							 | 
						|
								
							 | 
						|
								2.12. Installing MySQL on AIX
							 | 
						|
								
							 | 
						|
								   Automatic detection of xlC is missing from Autoconf, so a number
							 | 
						|
								   of variables need to be set before running configure. The
							 | 
						|
								   following example uses the IBM compiler:
							 | 
						|
								export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
							 | 
						|
								export CXX="xlC_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192"
							 | 
						|
								export CFLAGS="-I /usr/local/include"
							 | 
						|
								export LDFLAGS="-L /usr/local/lib"
							 | 
						|
								export CPPFLAGS=$CFLAGS
							 | 
						|
								export CXXFLAGS=$CFLAGS
							 | 
						|
								
							 | 
						|
								./configure --prefix=/usr/local \
							 | 
						|
								                --localstatedir=/var/mysql \
							 | 
						|
								                --sbindir='/usr/local/bin' \
							 | 
						|
								                --libexecdir='/usr/local/bin' \
							 | 
						|
								                --enable-thread-safe-client \
							 | 
						|
								                --enable-large-files
							 | 
						|
								
							 | 
						|
								   The preceding options are used to compile the MySQL distribution
							 | 
						|
								   that can be found at http://www-frec.bull.com/.
							 | 
						|
								
							 | 
						|
								   If you change the -O3 to -O2 in the preceding configure line, you
							 | 
						|
								   must also remove the -qstrict option. This is a limitation in the
							 | 
						|
								   IBM C compiler.
							 | 
						|
								
							 | 
						|
								   If you are using gcc to compile MySQL, you must use the
							 | 
						|
								   -fno-exceptions flag, because the exception handling in gcc is not
							 | 
						|
								   thread-safe! There are also some known problems with IBM's
							 | 
						|
								   assembler that may cause it to generate bad code when used with
							 | 
						|
								   gcc.
							 | 
						|
								
							 | 
						|
								   Use the following configure line with gcc 2.95 on AIX:
							 | 
						|
								CC="gcc -pipe -mcpu=power -Wa,-many" \
							 | 
						|
								CXX="gcc -pipe -mcpu=power -Wa,-many" \
							 | 
						|
								CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
							 | 
						|
								./configure --prefix=/usr/local/mysql --with-low-memory
							 | 
						|
								
							 | 
						|
								   The -Wa,-many option is necessary for the compile to be
							 | 
						|
								   successful. IBM is aware of this problem but is in no hurry to fix
							 | 
						|
								   it because of the workaround that is available. We don't know if
							 | 
						|
								   the -fno-exceptions is required with gcc 2.95, but because MySQL
							 | 
						|
								   doesn't use exceptions and the option generates faster code, you
							 | 
						|
								   should always use it with gcc.
							 | 
						|
								
							 | 
						|
								   If you get a problem with assembler code, try changing the
							 | 
						|
								   -mcpu=xxx option to match your CPU. Typically power2, power, or
							 | 
						|
								   powerpc may need to be used. Alternatively, you might need to use
							 | 
						|
								   604 or 604e. We are not positive but suspect that power would
							 | 
						|
								   likely be safe most of the time, even on a power2 machine.
							 | 
						|
								
							 | 
						|
								   If you don't know what your CPU is, execute a uname -m command. It
							 | 
						|
								   produces a string that looks like 000514676700, with a format of
							 | 
						|
								   xxyyyyyymmss where xx and ss are always 00, yyyyyy is a unique
							 | 
						|
								   system ID and mm is the ID of the CPU Planar. A chart of these
							 | 
						|
								   values can be found at
							 | 
						|
								   http://www16.boulder.ibm.com/pseries/en_US/cmds/aixcmds5/uname.htm
							 | 
						|
								   .
							 | 
						|
								
							 | 
						|
								   This gives you a machine type and a machine model you can use to
							 | 
						|
								   determine what type of CPU you have.
							 | 
						|
								
							 | 
						|
								   If you have problems with threads on AIX 5.3, you should upgrade
							 | 
						|
								   AIX 5.3 to technology level 7 (5300-07).
							 | 
						|
								
							 | 
						|
								   If you have problems with signals (MySQL dies unexpectedly under
							 | 
						|
								   high load), you may have found an OS bug with threads and signals.
							 | 
						|
								   In this case, you can tell MySQL not to use signals by configuring
							 | 
						|
								   as follows:
							 | 
						|
								CFLAGS=-DDONT_USE_THR_ALARM CXX=gcc \
							 | 
						|
								CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti \
							 | 
						|
								-DDONT_USE_THR_ALARM" \
							 | 
						|
								./configure --prefix=/usr/local/mysql --with-debug \
							 | 
						|
								    --with-low-memory
							 | 
						|
								
							 | 
						|
								   This doesn't affect the performance of MySQL, but has the side
							 | 
						|
								   effect that you can't kill clients that are "sleeping" on a
							 | 
						|
								   connection with mysqladmin kill or mysqladmin shutdown. Instead,
							 | 
						|
								   the client dies when it issues its next command.
							 | 
						|
								
							 | 
						|
								   On some versions of AIX, linking with libbind.a makes
							 | 
						|
								   getservbyname() dump core. This is an AIX bug and should be
							 | 
						|
								   reported to IBM.
							 | 
						|
								
							 | 
						|
								   For AIX 4.2.1 and gcc, you have to make the following changes.
							 | 
						|
								
							 | 
						|
								   After configuring, edit config.h and include/my_config.h and
							 | 
						|
								   change the line that says this:
							 | 
						|
								#define HAVE_SNPRINTF 1
							 | 
						|
								
							 | 
						|
								   to this:
							 | 
						|
								#undef HAVE_SNPRINTF
							 | 
						|
								
							 | 
						|
								   And finally, in mysqld.cc, you need to add a prototype for
							 | 
						|
								   initgroups().
							 | 
						|
								#ifdef _AIX41
							 | 
						|
								extern "C" int initgroups(const char *,int);
							 | 
						|
								#endif
							 | 
						|
								
							 | 
						|
								   For 32-bit binaries, if you need to allocate a lot of memory to
							 | 
						|
								   the mysqld process, it is not enough to just use ulimit -d
							 | 
						|
								   unlimited. You may also have to modify mysqld_safe to add a line
							 | 
						|
								   something like this:
							 | 
						|
								export LDR_CNTRL='MAXDATA=0x80000000'
							 | 
						|
								
							 | 
						|
								   You can find more information about using a lot of memory at
							 | 
						|
								   http://publib16.boulder.ibm.com/pseries/en_US/aixprggd/genprogc/lr
							 | 
						|
								   g_prg_support.htm.
							 | 
						|
								
							 | 
						|
								   Users of AIX 4.3 should use gmake instead of the make utility
							 | 
						|
								   included with AIX.
							 | 
						|
								
							 | 
						|
								   As of AIX 4.1, the C compiler has been unbundled from AIX as a
							 | 
						|
								   separate product. gcc 3.3.2 can be obtained here:
							 | 
						|
								   ftp://ftp.software.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/gc
							 | 
						|
								   c/
							 | 
						|
								
							 | 
						|
								   The steps for compiling MySQL on AIX with gcc 3.3.2 are similar to
							 | 
						|
								   those for using gcc 2.95 (in particular, the need to edit config.h
							 | 
						|
								   and my_config.h after running configure). However, before running
							 | 
						|
								   configure, you should also patch the curses.h file as follows:
							 | 
						|
								/opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/curses
							 | 
						|
								.h.ORIG
							 | 
						|
								       Mon Dec 26 02:17:28 2005
							 | 
						|
								--- /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/include/cu
							 | 
						|
								rses.h
							 | 
						|
								Mon Dec 26 02:40:13 2005
							 | 
						|
								***************
							 | 
						|
								*** 2023,2029 ****
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  #endif /* _AIX32_CURSES */
							 | 
						|
								! #if defined(__USE_FIXED_PROTOTYPES__) || defined(__cplusplus) || de
							 | 
						|
								fined
							 | 
						|
								(__STRICT_ANSI__)
							 | 
						|
								  extern int delwin (WINDOW *);
							 | 
						|
								  extern int endwin (void);
							 | 
						|
								  extern int getcurx (WINDOW *);
							 | 
						|
								--- 2023,2029 ----
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  #endif /* _AIX32_CURSES */
							 | 
						|
								! #if 0 && (defined(__USE_FIXED_PROTOTYPES__) || defined(__cplusplus)
							 | 
						|
								|| defined
							 | 
						|
								(__STRICT_ANSI__))
							 | 
						|
								  extern int delwin (WINDOW *);
							 | 
						|
								  extern int endwin (void);
							 | 
						|
								  extern int getcurx (WINDOW *);
							 | 
						|
								
							 | 
						|
								2.13. Post-Installation Setup and Testing
							 | 
						|
								
							 | 
						|
								   After installing MySQL, there are some issues that you should
							 | 
						|
								   address. For example, on Unix, you should initialize the data
							 | 
						|
								   directory and create the MySQL grant tables. On all platforms, an
							 | 
						|
								   important security concern is that the initial accounts in the
							 | 
						|
								   grant tables have no passwords. You should assign passwords to
							 | 
						|
								   prevent unauthorized access to the MySQL server. Optionally, you
							 | 
						|
								   can create time zone tables to enable recognition of named time
							 | 
						|
								   zones.
							 | 
						|
								
							 | 
						|
								   The following sections include post-installation procedures that
							 | 
						|
								   are specific to Windows systems and to Unix systems. Another
							 | 
						|
								   section, Section 2.13.1.3, "Starting and Troubleshooting the MySQL
							 | 
						|
								   Server," applies to all platforms; it describes what to do if you
							 | 
						|
								   have trouble getting the server to start. Section 2.13.2,
							 | 
						|
								   "Securing the Initial MySQL Accounts," also applies to all
							 | 
						|
								   platforms. You should follow its instructions to make sure that
							 | 
						|
								   you have properly protected your MySQL accounts by assigning
							 | 
						|
								   passwords to them.
							 | 
						|
								
							 | 
						|
								   When you are ready to create additional user accounts, you can
							 | 
						|
								   find information on the MySQL access control system and account
							 | 
						|
								   management in Section 5.4, "The MySQL Access Privilege System,"
							 | 
						|
								   and Section 5.5, "MySQL User Account Management."
							 | 
						|
								
							 | 
						|
								2.13.1. Unix Post-Installation Procedures
							 | 
						|
								
							 | 
						|
								   After installing MySQL on Unix, you need to initialize the grant
							 | 
						|
								   tables, start the server, and make sure that the server works
							 | 
						|
								   satisfactorily. You may also wish to arrange for the server to be
							 | 
						|
								   started and stopped automatically when your system starts and
							 | 
						|
								   stops. You should also assign passwords to the accounts in the
							 | 
						|
								   grant tables.
							 | 
						|
								
							 | 
						|
								   On Unix, the grant tables are set up by the mysql_install_db
							 | 
						|
								   program. For some installation methods, this program is run for
							 | 
						|
								   you automatically:
							 | 
						|
								
							 | 
						|
								     * If you install MySQL on Linux using RPM distributions, the
							 | 
						|
								       server RPM runs mysql_install_db.
							 | 
						|
								
							 | 
						|
								     * If you install MySQL on Mac OS X using a PKG distribution, the
							 | 
						|
								       installer runs mysql_install_db.
							 | 
						|
								
							 | 
						|
								   Otherwise, you'll need to run mysql_install_db yourself.
							 | 
						|
								
							 | 
						|
								   The following procedure describes how to initialize the grant
							 | 
						|
								   tables (if that has not previously been done) and then start the
							 | 
						|
								   server. It also suggests some commands that you can use to test
							 | 
						|
								   whether the server is accessible and working properly. For
							 | 
						|
								   information about starting and stopping the server automatically,
							 | 
						|
								   see Section 2.13.1.2, "Starting and Stopping MySQL Automatically."
							 | 
						|
								
							 | 
						|
								   After you complete the procedure and have the server running, you
							 | 
						|
								   should assign passwords to the accounts created by
							 | 
						|
								   mysql_install_db. Instructions for doing so are given in Section
							 | 
						|
								   2.13.2, "Securing the Initial MySQL Accounts."
							 | 
						|
								
							 | 
						|
								   In the examples shown here, the server runs under the user ID of
							 | 
						|
								   the mysql login account. This assumes that such an account exists.
							 | 
						|
								   Either create the account if it does not exist, or substitute the
							 | 
						|
								   name of a different existing login account that you plan to use
							 | 
						|
								   for running the server.
							 | 
						|
								
							 | 
						|
								    1. Change location into the top-level directory of your MySQL
							 | 
						|
								       installation, represented here by BASEDIR:
							 | 
						|
								shell> cd BASEDIR
							 | 
						|
								       BASEDIR is likely to be something like /usr/local/mysql or
							 | 
						|
								       /usr/local. The following steps assume that you are located in
							 | 
						|
								       this directory.
							 | 
						|
								
							 | 
						|
								    2. If necessary, run the mysql_install_db program to set up the
							 | 
						|
								       initial MySQL grant tables containing the privileges that
							 | 
						|
								       determine how users are allowed to connect to the server.
							 | 
						|
								       You'll need to do this if you used a distribution type for
							 | 
						|
								       which the installation procedure doesn't run the program for
							 | 
						|
								       you.
							 | 
						|
								       Typically, mysql_install_db needs to be run only the first
							 | 
						|
								       time you install MySQL, so you can skip this step if you are
							 | 
						|
								       upgrading an existing installation, However, mysql_install_db
							 | 
						|
								       does not overwrite any existing privilege tables, so it should
							 | 
						|
								       be safe to run in any circumstances.
							 | 
						|
								       To initialize the grant tables, use one of the following
							 | 
						|
								       commands, depending on whether mysql_install_db is located in
							 | 
						|
								       the bin or scripts directory:
							 | 
						|
								shell> bin/mysql_install_db --user=mysql
							 | 
						|
								shell> scripts/mysql_install_db --user=mysql
							 | 
						|
								       It might be necessary to specify other options such as
							 | 
						|
								       --basedir or --datadir if mysql_install_db does not use the
							 | 
						|
								       correct locations for the installation directory or data
							 | 
						|
								       directory. For example:
							 | 
						|
								shell> bin/mysql_install_db --user=mysql \
							 | 
						|
								         --basedir=/opt/mysql/mysql \
							 | 
						|
								         --datadir=/opt/mysql/mysql/data
							 | 
						|
								       The mysql_install_db script creates the server's data
							 | 
						|
								       directory. Under the data directory, it creates directories
							 | 
						|
								       for the mysql database that holds all database privileges and
							 | 
						|
								       the test database that you can use to test MySQL. The script
							 | 
						|
								       also creates privilege table entries for root and
							 | 
						|
								       anonymous-user accounts. The accounts have no passwords
							 | 
						|
								       initially. A description of their initial privileges is given
							 | 
						|
								       in Section 2.13.2, "Securing the Initial MySQL Accounts."
							 | 
						|
								       Briefly, these privileges allow the MySQL root user to do
							 | 
						|
								       anything, and allow anybody to create or use databases with a
							 | 
						|
								       name of test or starting with test_.
							 | 
						|
								       It is important to make sure that the database directories and
							 | 
						|
								       files are owned by the mysql login account so that the server
							 | 
						|
								       has read and write access to them when you run it later. To
							 | 
						|
								       ensure this, the --user option should be used as shown if you
							 | 
						|
								       run mysql_install_db as root. Otherwise, you should execute
							 | 
						|
								       the script while logged in as mysql, in which case you can
							 | 
						|
								       omit the --user option from the command.
							 | 
						|
								       mysql_install_db creates several tables in the mysql database,
							 | 
						|
								       including user, db, host, tables_priv, columns_priv, func, and
							 | 
						|
								       others. See Section 5.4, "The MySQL Access Privilege System,"
							 | 
						|
								       for a complete listing and description of these tables.
							 | 
						|
								       If you don't want to have the test database, you can remove it
							 | 
						|
								       with mysqladmin -u root drop test after starting the server.
							 | 
						|
								       If you have trouble with mysql_install_db at this point, see
							 | 
						|
								       Section 2.13.1.1, "Problems Running mysql_install_db."
							 | 
						|
								
							 | 
						|
								    3. Start the MySQL server:
							 | 
						|
								shell> bin/mysqld_safe --user=mysql &
							 | 
						|
								       It is important that the MySQL server be run using an
							 | 
						|
								       unprivileged (non-root) login account. To ensure this, the
							 | 
						|
								       --user option should be used as shown if you run mysqld_safe
							 | 
						|
								       as system root. Otherwise, you should execute the script while
							 | 
						|
								       logged in to the system as mysql, in which case you can omit
							 | 
						|
								       the --user option from the command.
							 | 
						|
								       Further instructions for running MySQL as an unprivileged user
							 | 
						|
								       are given in Section 5.3.6, "How to Run MySQL as a Normal
							 | 
						|
								       User."
							 | 
						|
								       If you neglected to create the grant tables before proceeding
							 | 
						|
								       to this step, the following message appears in the error log
							 | 
						|
								       file when you start the server:
							 | 
						|
								mysqld: Can't find file: 'host.frm'
							 | 
						|
								       If you have other problems starting the server, see Section
							 | 
						|
								       2.13.1.3, "Starting and Troubleshooting the MySQL Server."
							 | 
						|
								
							 | 
						|
								    4. Use mysqladmin to verify that the server is running. The
							 | 
						|
								       following commands provide simple tests to check whether the
							 | 
						|
								       server is up and responding to connections:
							 | 
						|
								shell> bin/mysqladmin version
							 | 
						|
								shell> bin/mysqladmin variables
							 | 
						|
								       The output from mysqladmin version varies slightly depending
							 | 
						|
								       on your platform and version of MySQL, but should be similar
							 | 
						|
								       to that shown here:
							 | 
						|
								shell> bin/mysqladmin version
							 | 
						|
								mysqladmin  Ver 14.12 Distrib 5.1.46, for pc-linux-gnu on i686
							 | 
						|
								...
							 | 
						|
								
							 | 
						|
								Server version          5.1.46
							 | 
						|
								Protocol version        10
							 | 
						|
								Connection              Localhost via UNIX socket
							 | 
						|
								UNIX socket             /var/lib/mysql/mysql.sock
							 | 
						|
								Uptime:                 14 days 5 hours 5 min 21 sec
							 | 
						|
								
							 | 
						|
								Threads: 1  Questions: 366  Slow queries: 0
							 | 
						|
								Opens: 0  Flush tables: 1  Open tables: 19
							 | 
						|
								Queries per second avg: 0.000
							 | 
						|
								       To see what else you can do with mysqladmin, invoke it with
							 | 
						|
								       the --help option.
							 | 
						|
								
							 | 
						|
								    5. Verify that you can shut down the server:
							 | 
						|
								shell> bin/mysqladmin -u root shutdown
							 | 
						|
								
							 | 
						|
								    6. Verify that you can start the server again. Do this by using
							 | 
						|
								       mysqld_safe or by invoking mysqld directly. For example:
							 | 
						|
								shell> bin/mysqld_safe --user=mysql --log &
							 | 
						|
								       If mysqld_safe fails, see Section 2.13.1.3, "Starting and
							 | 
						|
								       Troubleshooting the MySQL Server."
							 | 
						|
								
							 | 
						|
								    7. Run some simple tests to verify that you can retrieve
							 | 
						|
								       information from the server. The output should be similar to
							 | 
						|
								       what is shown here:
							 | 
						|
								shell> bin/mysqlshow
							 | 
						|
								+-----------+
							 | 
						|
								| Databases |
							 | 
						|
								+-----------+
							 | 
						|
								| mysql     |
							 | 
						|
								| test      |
							 | 
						|
								+-----------+
							 | 
						|
								
							 | 
						|
								shell> bin/mysqlshow mysql
							 | 
						|
								Database: mysql
							 | 
						|
								+---------------------------+
							 | 
						|
								|          Tables           |
							 | 
						|
								+---------------------------+
							 | 
						|
								| columns_priv              |
							 | 
						|
								| db                        |
							 | 
						|
								| func                      |
							 | 
						|
								| help_category             |
							 | 
						|
								| help_keyword              |
							 | 
						|
								| help_relation             |
							 | 
						|
								| help_topic                |
							 | 
						|
								| host                      |
							 | 
						|
								| proc                      |
							 | 
						|
								| procs_priv                |
							 | 
						|
								| tables_priv               |
							 | 
						|
								| time_zone                 |
							 | 
						|
								| time_zone_leap_second     |
							 | 
						|
								| time_zone_name            |
							 | 
						|
								| time_zone_transition      |
							 | 
						|
								| time_zone_transition_type |
							 | 
						|
								| user                      |
							 | 
						|
								+---------------------------+
							 | 
						|
								
							 | 
						|
								shell> bin/mysql -e "SELECT Host,Db,User FROM db" mysql
							 | 
						|
								+------+--------+------+
							 | 
						|
								| host | db     | user |
							 | 
						|
								+------+--------+------+
							 | 
						|
								| %    | test   |      |
							 | 
						|
								| %    | test_% |      |
							 | 
						|
								+------+--------+------+
							 | 
						|
								
							 | 
						|
								    8. There is a benchmark suite in the sql-bench directory (under
							 | 
						|
								       the MySQL installation directory) that you can use to compare
							 | 
						|
								       how MySQL performs on different platforms. The benchmark suite
							 | 
						|
								       is written in Perl. It requires the Perl DBI module that
							 | 
						|
								       provides a database-independent interface to the various
							 | 
						|
								       databases, and some other additional Perl modules:
							 | 
						|
								DBI
							 | 
						|
								DBD::mysql
							 | 
						|
								Data::Dumper
							 | 
						|
								Data::ShowTable
							 | 
						|
								       These modules can be obtained from CPAN
							 | 
						|
								       (http://www.cpan.org/). See also Section 2.15.1, "Installing
							 | 
						|
								       Perl on Unix."
							 | 
						|
								       The sql-bench/Results directory contains the results from many
							 | 
						|
								       runs against different databases and platforms. To run all
							 | 
						|
								       tests, execute these commands:
							 | 
						|
								shell> cd sql-bench
							 | 
						|
								shell> perl run-all-tests
							 | 
						|
								       If you don't have the sql-bench directory, you probably
							 | 
						|
								       installed MySQL using RPM files other than the source RPM.
							 | 
						|
								       (The source RPM includes the sql-bench benchmark directory.)
							 | 
						|
								       In this case, you must first install the benchmark suite
							 | 
						|
								       before you can use it. There are separate benchmark RPM files
							 | 
						|
								       named mysql-bench-VERSION.i386.rpm that contain benchmark code
							 | 
						|
								       and data.
							 | 
						|
								       If you have a source distribution, there are also tests in its
							 | 
						|
								       tests subdirectory that you can run. For example, to run
							 | 
						|
								       auto_increment.tst, execute this command from the top-level
							 | 
						|
								       directory of your source distribution:
							 | 
						|
								shell> mysql -vvf test < ./tests/auto_increment.tst
							 | 
						|
								       The expected result of the test can be found in the
							 | 
						|
								       ./tests/auto_increment.res file.
							 | 
						|
								
							 | 
						|
								    9. At this point, you should have the server running. However,
							 | 
						|
								       none of the initial MySQL accounts have a password, so you
							 | 
						|
								       should assign passwords using the instructions found in
							 | 
						|
								       Section 2.13.2, "Securing the Initial MySQL Accounts."
							 | 
						|
								
							 | 
						|
								   The MySQL 5.1 installation procedure creates time zone tables in
							 | 
						|
								   the mysql database. However, you must populate the tables manually
							 | 
						|
								   using the instructions in Section 9.6, "MySQL Server Time Zone
							 | 
						|
								   Support."
							 | 
						|
								
							 | 
						|
								2.13.1.1. Problems Running mysql_install_db
							 | 
						|
								
							 | 
						|
								   The purpose of the mysql_install_db script is to generate new
							 | 
						|
								   MySQL privilege tables. It does not overwrite existing MySQL
							 | 
						|
								   privilege tables, and it does not affect any other data.
							 | 
						|
								
							 | 
						|
								   If you want to re-create your privilege tables, first stop the
							 | 
						|
								   mysqld server if it is running. Then rename the mysql directory
							 | 
						|
								   under the data directory to save it, and then run
							 | 
						|
								   mysql_install_db. Suppose that your current directory is the MySQL
							 | 
						|
								   installation directory and that mysql_install_db is located in the
							 | 
						|
								   bin directory and the data directory is named data. To rename the
							 | 
						|
								   mysql database and re-run mysql_install_db, use these commands.
							 | 
						|
								shell> mv data/mysql data/mysql.old
							 | 
						|
								shell> bin/mysql_install_db --user=mysql
							 | 
						|
								
							 | 
						|
								   When you run mysql_install_db, you might encounter the following
							 | 
						|
								   problems:
							 | 
						|
								
							 | 
						|
								     * mysql_install_db fails to install the grant tables
							 | 
						|
								       You may find that mysql_install_db fails to install the grant
							 | 
						|
								       tables and terminates after displaying the following messages:
							 | 
						|
								Starting mysqld daemon with databases from XXXXXX
							 | 
						|
								mysqld ended
							 | 
						|
								       In this case, you should examine the error log file very
							 | 
						|
								       carefully. The log should be located in the directory XXXXXX
							 | 
						|
								       named by the error message and should indicate why mysqld
							 | 
						|
								       didn't start. If you do not understand what happened, include
							 | 
						|
								       the log when you post a bug report. See Section 1.7, "How to
							 | 
						|
								       Report Bugs or Problems."
							 | 
						|
								
							 | 
						|
								     * There is a mysqld process running
							 | 
						|
								       This indicates that the server is running, in which case the
							 | 
						|
								       grant tables have probably been created already. If so, there
							 | 
						|
								       is no need to run mysql_install_db at all because it needs to
							 | 
						|
								       be run only once (when you install MySQL the first time).
							 | 
						|
								
							 | 
						|
								     * Installing a second mysqld server does not work when one
							 | 
						|
								       server is running
							 | 
						|
								       This can happen when you have an existing MySQL installation,
							 | 
						|
								       but want to put a new installation in a different location.
							 | 
						|
								       For example, you might have a production installation, but you
							 | 
						|
								       want to create a second installation for testing purposes.
							 | 
						|
								       Generally the problem that occurs when you try to run a second
							 | 
						|
								       server is that it tries to use a network interface that is in
							 | 
						|
								       use by the first server. In this case, you should see one of
							 | 
						|
								       the following error messages:
							 | 
						|
								Can't start server: Bind on TCP/IP port:
							 | 
						|
								Address already in use
							 | 
						|
								Can't start server: Bind on unix socket...
							 | 
						|
								       For instructions on setting up multiple servers, see Section
							 | 
						|
								       5.6, "Running Multiple MySQL Servers on the Same Machine."
							 | 
						|
								
							 | 
						|
								     * You do not have write access to the /tmp directory
							 | 
						|
								       If you do not have write access to create temporary files or a
							 | 
						|
								       Unix socket file in the default location (the /tmp directory),
							 | 
						|
								       an error occurs when you run mysql_install_db or the mysqld
							 | 
						|
								       server.
							 | 
						|
								       You can specify different locations for the temporary
							 | 
						|
								       directory and Unix socket file by executing these commands
							 | 
						|
								       prior to starting mysql_install_db or mysqld, where
							 | 
						|
								       some_tmp_dir is the full path name to some directory for which
							 | 
						|
								       you have write permission:
							 | 
						|
								shell> TMPDIR=/some_tmp_dir/
							 | 
						|
								shell> MYSQL_UNIX_PORT=/some_tmp_dir/mysql.sock
							 | 
						|
								shell> export TMPDIR MYSQL_UNIX_PORT
							 | 
						|
								       Then you should be able to run mysql_install_db and start the
							 | 
						|
								       server with these commands:
							 | 
						|
								shell> bin/mysql_install_db --user=mysql
							 | 
						|
								shell> bin/mysqld_safe --user=mysql &
							 | 
						|
								       If mysql_install_db is located in the scripts directory,
							 | 
						|
								       modify the first command to scripts/mysql_install_db.
							 | 
						|
								       See Section B.5.4.5, "How to Protect or Change the MySQL Unix
							 | 
						|
								       Socket File," and Section 2.14, "Environment Variables."
							 | 
						|
								
							 | 
						|
								   There are some alternatives to running the mysql_install_db script
							 | 
						|
								   provided in the MySQL distribution:
							 | 
						|
								
							 | 
						|
								     * If you want the initial privileges to be different from the
							 | 
						|
								       standard defaults, you can modify mysql_install_db before you
							 | 
						|
								       run it. However, it is preferable to use GRANT and REVOKE to
							 | 
						|
								       change the privileges after the grant tables have been set up.
							 | 
						|
								       In other words, you can run mysql_install_db, and then use
							 | 
						|
								       mysql -u root mysql to connect to the server as the MySQL root
							 | 
						|
								       user so that you can issue the necessary GRANT and REVOKE
							 | 
						|
								       statements.
							 | 
						|
								       If you want to install MySQL on several machines with the same
							 | 
						|
								       privileges, you can put the GRANT and REVOKE statements in a
							 | 
						|
								       file and execute the file as a script using mysql after
							 | 
						|
								       running mysql_install_db. For example:
							 | 
						|
								shell> bin/mysql_install_db --user=mysql
							 | 
						|
								shell> bin/mysql -u root < your_script_file
							 | 
						|
								       By doing this, you can avoid having to issue the statements
							 | 
						|
								       manually on each machine.
							 | 
						|
								
							 | 
						|
								     * It is possible to re-create the grant tables completely after
							 | 
						|
								       they have previously been created. You might want to do this
							 | 
						|
								       if you're just learning how to use GRANT and REVOKE and have
							 | 
						|
								       made so many modifications after running mysql_install_db that
							 | 
						|
								       you want to wipe out the tables and start over.
							 | 
						|
								       To re-create the grant tables, remove all the .frm, .MYI, and
							 | 
						|
								       .MYD files in the mysql database directory. Then run the
							 | 
						|
								       mysql_install_db script again.
							 | 
						|
								
							 | 
						|
								     * You can start mysqld manually using the --skip-grant-tables
							 | 
						|
								       option and add the privilege information yourself using mysql:
							 | 
						|
								shell> bin/mysqld_safe --user=mysql --skip-grant-tables &
							 | 
						|
								shell> bin/mysql mysql
							 | 
						|
								       From mysql, manually execute the SQL commands contained in
							 | 
						|
								       mysql_install_db. Make sure that you run mysqladmin
							 | 
						|
								       flush-privileges or mysqladmin reload afterward to tell the
							 | 
						|
								       server to reload the grant tables.
							 | 
						|
								       Note that by not using mysql_install_db, you not only have to
							 | 
						|
								       populate the grant tables manually, you also have to create
							 | 
						|
								       them first.
							 | 
						|
								
							 | 
						|
								2.13.1.2. Starting and Stopping MySQL Automatically
							 | 
						|
								
							 | 
						|
								   Generally, you start the mysqld server in one of these ways:
							 | 
						|
								
							 | 
						|
								     * Invoke mysqld directly. This works on any platform.
							 | 
						|
								
							 | 
						|
								     * Run the MySQL server as a Windows service. The service can be
							 | 
						|
								       set to start the server automatically when Windows starts, or
							 | 
						|
								       as a manual service that you start on request. For
							 | 
						|
								       instructions, see Section 2.5.5.6, "Starting MySQL as a
							 | 
						|
								       Windows Service."
							 | 
						|
								
							 | 
						|
								     * Invoke mysqld_safe, which tries to determine the proper
							 | 
						|
								       options for mysqld and then runs it with those options. This
							 | 
						|
								       script is used on Unix and Unix-like systems. See Section
							 | 
						|
								       4.3.2, "mysqld_safe --- MySQL Server Startup Script."
							 | 
						|
								
							 | 
						|
								     * Invoke mysql.server. This script is used primarily at system
							 | 
						|
								       startup and shutdown on systems that use System V-style run
							 | 
						|
								       directories, where it usually is installed under the name
							 | 
						|
								       mysql. The mysql.server script starts the server by invoking
							 | 
						|
								       mysqld_safe. See Section 4.3.3, "mysql.server --- MySQL Server
							 | 
						|
								       Startup Script."
							 | 
						|
								
							 | 
						|
								     * On Mac OS X, install a separate MySQL Startup Item package to
							 | 
						|
								       enable the automatic startup of MySQL on system startup. The
							 | 
						|
								       Startup Item starts the server by invoking mysql.server. See
							 | 
						|
								       Section 2.7, "Installing MySQL on Mac OS X," for details.
							 | 
						|
								
							 | 
						|
								   The mysqld_safe and mysql.server scripts and the Mac OS X Startup
							 | 
						|
								   Item can be used to start the server manually, or automatically at
							 | 
						|
								   system startup time. mysql.server and the Startup Item also can be
							 | 
						|
								   used to stop the server.
							 | 
						|
								
							 | 
						|
								   To start or stop the server manually using the mysql.server
							 | 
						|
								   script, invoke it with start or stop arguments:
							 | 
						|
								shell> mysql.server start
							 | 
						|
								shell> mysql.server stop
							 | 
						|
								
							 | 
						|
								   Before mysql.server starts the server, it changes location to the
							 | 
						|
								   MySQL installation directory, and then invokes mysqld_safe. If you
							 | 
						|
								   want the server to run as some specific user, add an appropriate
							 | 
						|
								   user option to the [mysqld] group of the /etc/my.cnf option file,
							 | 
						|
								   as shown later in this section. (It is possible that you will need
							 | 
						|
								   to edit mysql.server if you've installed a binary distribution of
							 | 
						|
								   MySQL in a nonstandard location. Modify it to change location into
							 | 
						|
								   the proper directory before it runs mysqld_safe. If you do this,
							 | 
						|
								   your modified version of mysql.server may be overwritten if you
							 | 
						|
								   upgrade MySQL in the future, so you should make a copy of your
							 | 
						|
								   edited version that you can reinstall.)
							 | 
						|
								
							 | 
						|
								   mysql.server stop stops the server by sending a signal to it. You
							 | 
						|
								   can also stop the server manually by executing mysqladmin
							 | 
						|
								   shutdown.
							 | 
						|
								
							 | 
						|
								   To start and stop MySQL automatically on your server, you need to
							 | 
						|
								   add start and stop commands to the appropriate places in your
							 | 
						|
								   /etc/rc* files.
							 | 
						|
								
							 | 
						|
								   If you use the Linux server RPM package
							 | 
						|
								   (MySQL-server-VERSION.rpm), the mysql.server script is installed
							 | 
						|
								   in the /etc/init.d directory with the name mysql. You need not
							 | 
						|
								   install it manually. See Section 2.6.1, "Installing MySQL from RPM
							 | 
						|
								   Packages on Linux," for more information on the Linux RPM
							 | 
						|
								   packages.
							 | 
						|
								
							 | 
						|
								   Some vendors provide RPM packages that install a startup script
							 | 
						|
								   under a different name such as mysqld.
							 | 
						|
								
							 | 
						|
								   If you install MySQL from a source distribution or using a binary
							 | 
						|
								   distribution format that does not install mysql.server
							 | 
						|
								   automatically, you can install it manually. The script can be
							 | 
						|
								   found in the support-files directory under the MySQL installation
							 | 
						|
								   directory or in a MySQL source tree.
							 | 
						|
								
							 | 
						|
								   To install mysql.server manually, copy it to the /etc/init.d
							 | 
						|
								   directory with the name mysql, and then make it executable. Do
							 | 
						|
								   this by changing location into the appropriate directory where
							 | 
						|
								   mysql.server is located and executing these commands:
							 | 
						|
								shell> cp mysql.server /etc/init.d/mysql
							 | 
						|
								shell> chmod +x /etc/init.d/mysql
							 | 
						|
								
							 | 
						|
								   Older Red Hat systems use the /etc/rc.d/init.d directory rather
							 | 
						|
								   than /etc/init.d. Adjust the preceding commands accordingly.
							 | 
						|
								   Alternatively, first create /etc/init.d as a symbolic link that
							 | 
						|
								   points to /etc/rc.d/init.d:
							 | 
						|
								shell> cd /etc
							 | 
						|
								shell> ln -s rc.d/init.d .
							 | 
						|
								
							 | 
						|
								   After installing the script, the commands needed to activate it to
							 | 
						|
								   run at system startup depend on your operating system. On Linux,
							 | 
						|
								   you can use chkconfig:
							 | 
						|
								shell> chkconfig --add mysql
							 | 
						|
								
							 | 
						|
								   On some Linux systems, the following command also seems to be
							 | 
						|
								   necessary to fully enable the mysql script:
							 | 
						|
								shell> chkconfig --level 345 mysql on
							 | 
						|
								
							 | 
						|
								   On FreeBSD, startup scripts generally should go in
							 | 
						|
								   /usr/local/etc/rc.d/. The rc(8) manual page states that scripts in
							 | 
						|
								   this directory are executed only if their basename matches the
							 | 
						|
								   *.sh shell file name pattern. Any other files or directories
							 | 
						|
								   present within the directory are silently ignored. In other words,
							 | 
						|
								   on FreeBSD, you should install the mysql.server script as
							 | 
						|
								   /usr/local/etc/rc.d/mysql.server.sh to enable automatic startup.
							 | 
						|
								
							 | 
						|
								   As an alternative to the preceding setup, some operating systems
							 | 
						|
								   also use /etc/rc.local or /etc/init.d/boot.local to start
							 | 
						|
								   additional services on startup. To start up MySQL using this
							 | 
						|
								   method, you could append a command like the one following to the
							 | 
						|
								   appropriate startup file:
							 | 
						|
								/bin/sh -c 'cd /usr/local/mysql; ./bin/mysqld_safe --user=mysql &'
							 | 
						|
								
							 | 
						|
								   For other systems, consult your operating system documentation to
							 | 
						|
								   see how to install startup scripts.
							 | 
						|
								
							 | 
						|
								   You can add options for mysql.server in a global /etc/my.cnf file.
							 | 
						|
								   A typical /etc/my.cnf file might look like this:
							 | 
						|
								[mysqld]
							 | 
						|
								datadir=/usr/local/mysql/var
							 | 
						|
								socket=/var/tmp/mysql.sock
							 | 
						|
								port=3306
							 | 
						|
								user=mysql
							 | 
						|
								
							 | 
						|
								[mysql.server]
							 | 
						|
								basedir=/usr/local/mysql
							 | 
						|
								
							 | 
						|
								   The mysql.server script supports the following options: basedir,
							 | 
						|
								   datadir, and pid-file. If specified, they must be placed in an
							 | 
						|
								   option file, not on the command line. mysql.server supports only
							 | 
						|
								   start and stop as command-line arguments.
							 | 
						|
								
							 | 
						|
								   The following table shows which option groups the server and each
							 | 
						|
								   startup script read from option files.
							 | 
						|
								   Script       Option Groups
							 | 
						|
								   mysqld       [mysqld], [server], [mysqld-major_version]
							 | 
						|
								   mysqld_safe  [mysqld], [server], [mysqld_safe]
							 | 
						|
								   mysql.server [mysqld], [mysql.server], [server]
							 | 
						|
								
							 | 
						|
								   [mysqld-major_version] means that groups with names like
							 | 
						|
								   [mysqld-5.0] and [mysqld-5.1] are read by servers having versions
							 | 
						|
								   5.0.x, 5.1.x, and so forth. This feature can be used to specify
							 | 
						|
								   options that can be read only by servers within a given release
							 | 
						|
								   series.
							 | 
						|
								
							 | 
						|
								   For backward compatibility, mysql.server also reads the
							 | 
						|
								   [mysql_server] group and mysqld_safe also reads the [safe_mysqld]
							 | 
						|
								   group. However, you should update your option files to use the
							 | 
						|
								   [mysql.server] and [mysqld_safe] groups instead when using MySQL
							 | 
						|
								   5.1.
							 | 
						|
								
							 | 
						|
								   See Section 4.2.3.3, "Using Option Files."
							 | 
						|
								
							 | 
						|
								2.13.1.3. Starting and Troubleshooting the MySQL Server
							 | 
						|
								
							 | 
						|
								   This section provides troubleshooting suggestions for problems
							 | 
						|
								   starting the server on Unix. If you are using Windows, see Section
							 | 
						|
								   2.5.6, "Troubleshooting a MySQL Installation Under Windows."
							 | 
						|
								
							 | 
						|
								   If you have problems starting the server, here are some things to
							 | 
						|
								   try:
							 | 
						|
								
							 | 
						|
								     * Check the error log to see why the server does not start.
							 | 
						|
								
							 | 
						|
								     * Specify any special options needed by the storage engines you
							 | 
						|
								       are using.
							 | 
						|
								
							 | 
						|
								     * Make sure that the server knows where to find the data
							 | 
						|
								       directory.
							 | 
						|
								
							 | 
						|
								     * Make sure that the server can access the data directory. The
							 | 
						|
								       ownership and permissions of the data directory and its
							 | 
						|
								       contents must be set such that the server can read and modify
							 | 
						|
								       them.
							 | 
						|
								
							 | 
						|
								     * Verify that the network interfaces the server wants to use are
							 | 
						|
								       available.
							 | 
						|
								
							 | 
						|
								   Some storage engines have options that control their behavior. You
							 | 
						|
								   can create a my.cnf file and specify startup options for the
							 | 
						|
								   engines that you plan to use. If you are going to use storage
							 | 
						|
								   engines that support transactional tables (InnoDB, NDB), be sure
							 | 
						|
								   that you have them configured the way you want before starting the
							 | 
						|
								   server:
							 | 
						|
								
							 | 
						|
								     * If you are using InnoDB tables, see Section 13.6.2, "InnoDB
							 | 
						|
								       Configuration."
							 | 
						|
								
							 | 
						|
								     * If you are using MySQL Cluster, see Section 17.3, "MySQL
							 | 
						|
								       Cluster Configuration."
							 | 
						|
								
							 | 
						|
								   MySQL Enterprise For expert advice on start-up options appropriate
							 | 
						|
								   to your circumstances, subscribe to The MySQL Enterprise Monitor.
							 | 
						|
								   For more information, see
							 | 
						|
								   http://www.mysql.com/products/enterprise/advisors.html.
							 | 
						|
								
							 | 
						|
								   Storage engines will use default option values if you specify
							 | 
						|
								   none, but it is recommended that you review the available options
							 | 
						|
								   and specify explicit values for those for which the defaults are
							 | 
						|
								   not appropriate for your installation.
							 | 
						|
								
							 | 
						|
								   When the mysqld server starts, it changes location to the data
							 | 
						|
								   directory. This is where it expects to find databases and where it
							 | 
						|
								   expects to write log files. The server also writes the pid
							 | 
						|
								   (process ID) file in the data directory.
							 | 
						|
								
							 | 
						|
								   The data directory location is hardwired in when the server is
							 | 
						|
								   compiled. This is where the server looks for the data directory by
							 | 
						|
								   default. If the data directory is located somewhere else on your
							 | 
						|
								   system, the server will not work properly. You can determine what
							 | 
						|
								   the default path settings are by invoking mysqld with the
							 | 
						|
								   --verbose and --help options.
							 | 
						|
								
							 | 
						|
								   If the default locations don't match the MySQL installation layout
							 | 
						|
								   on your system, you can override them by specifying options to
							 | 
						|
								   mysqld or mysqld_safe on the command line or in an option file.
							 | 
						|
								
							 | 
						|
								   To specify the location of the data directory explicitly, use the
							 | 
						|
								   --datadir option. However, normally you can tell mysqld the
							 | 
						|
								   location of the base directory under which MySQL is installed and
							 | 
						|
								   it looks for the data directory there. You can do this with the
							 | 
						|
								   --basedir option.
							 | 
						|
								
							 | 
						|
								   To check the effect of specifying path options, invoke mysqld with
							 | 
						|
								   those options followed by the --verbose and --help options. For
							 | 
						|
								   example, if you change location into the directory where mysqld is
							 | 
						|
								   installed and then run the following command, it shows the effect
							 | 
						|
								   of starting the server with a base directory of /usr/local:
							 | 
						|
								shell> ./mysqld --basedir=/usr/local --verbose --help
							 | 
						|
								
							 | 
						|
								   You can specify other options such as --datadir as well, but
							 | 
						|
								   --verbose and --help must be the last options.
							 | 
						|
								
							 | 
						|
								   Once you determine the path settings you want, start the server
							 | 
						|
								   without --verbose and --help.
							 | 
						|
								
							 | 
						|
								   If mysqld is currently running, you can find out what path
							 | 
						|
								   settings it is using by executing this command:
							 | 
						|
								shell> mysqladmin variables
							 | 
						|
								
							 | 
						|
								   Or:
							 | 
						|
								shell> mysqladmin -h host_name variables
							 | 
						|
								
							 | 
						|
								   host_name is the name of the MySQL server host.
							 | 
						|
								
							 | 
						|
								   If you get Errcode 13 (which means Permission denied) when
							 | 
						|
								   starting mysqld, this means that the privileges of the data
							 | 
						|
								   directory or its contents do not allow the server access. In this
							 | 
						|
								   case, you change the permissions for the involved files and
							 | 
						|
								   directories so that the server has the right to use them. You can
							 | 
						|
								   also start the server as root, but this raises security issues and
							 | 
						|
								   should be avoided.
							 | 
						|
								
							 | 
						|
								   On Unix, change location into the data directory and check the
							 | 
						|
								   ownership of the data directory and its contents to make sure the
							 | 
						|
								   server has access. For example, if the data directory is
							 | 
						|
								   /usr/local/mysql/var, use this command:
							 | 
						|
								shell> ls -la /usr/local/mysql/var
							 | 
						|
								
							 | 
						|
								   If the data directory or its files or subdirectories are not owned
							 | 
						|
								   by the login account that you use for running the server, change
							 | 
						|
								   their ownership to that account. If the account is named mysql,
							 | 
						|
								   use these commands:
							 | 
						|
								shell> chown -R mysql /usr/local/mysql/var
							 | 
						|
								shell> chgrp -R mysql /usr/local/mysql/var
							 | 
						|
								
							 | 
						|
								   If it possible that even with correct ownership, MySQL may fail to
							 | 
						|
								   start up if there is other security software running on your
							 | 
						|
								   system that manages application access to various parts of the
							 | 
						|
								   file system. In this case, you may need to reconfigure that
							 | 
						|
								   software to enable mysqld to access the directories it uses during
							 | 
						|
								   normal operation.
							 | 
						|
								
							 | 
						|
								   If the server fails to start up correctly, check the error log.
							 | 
						|
								   Log files are located in the data directory (typically C:\Program
							 | 
						|
								   Files\MySQL\MySQL Server 5.1\data on Windows,
							 | 
						|
								   /usr/local/mysql/data for a Unix binary distribution, and
							 | 
						|
								   /usr/local/var for a Unix source distribution). Look in the data
							 | 
						|
								   directory for files with names of the form host_name.err and
							 | 
						|
								   host_name.log, where host_name is the name of your server host.
							 | 
						|
								   Then examine the last few lines of these files. On Unix, you can
							 | 
						|
								   use tail to display them:
							 | 
						|
								shell> tail host_name.err
							 | 
						|
								shell> tail host_name.log
							 | 
						|
								
							 | 
						|
								   The error log should contain information that indicates why the
							 | 
						|
								   server couldn't start.
							 | 
						|
								
							 | 
						|
								   If either of the following errors occur, it means that some other
							 | 
						|
								   program (perhaps another mysqld server) is using the TCP/IP port
							 | 
						|
								   or Unix socket file that mysqld is trying to use:
							 | 
						|
								Can't start server: Bind on TCP/IP port: Address already in use
							 | 
						|
								Can't start server: Bind on unix socket...
							 | 
						|
								
							 | 
						|
								   Use ps to determine whether you have another mysqld server
							 | 
						|
								   running. If so, shut down the server before starting mysqld again.
							 | 
						|
								   (If another server is running, and you really want to run multiple
							 | 
						|
								   servers, you can find information about how to do so in Section
							 | 
						|
								   5.6, "Running Multiple MySQL Servers on the Same Machine.")
							 | 
						|
								
							 | 
						|
								   If no other server is running, try to execute the command telnet
							 | 
						|
								   your_host_name tcp_ip_port_number. (The default MySQL port number
							 | 
						|
								   is 3306.) Then press Enter a couple of times. If you don't get an
							 | 
						|
								   error message like telnet: Unable to connect to remote host:
							 | 
						|
								   Connection refused, some other program is using the TCP/IP port
							 | 
						|
								   that mysqld is trying to use. You'll need to track down what
							 | 
						|
								   program this is and disable it, or else tell mysqld to listen to a
							 | 
						|
								   different port with the --port option. In this case, you'll also
							 | 
						|
								   need to specify the port number for client programs when
							 | 
						|
								   connecting to the server via TCP/IP.
							 | 
						|
								
							 | 
						|
								   Another reason the port might be inaccessible is that you have a
							 | 
						|
								   firewall running that blocks connections to it. If so, modify the
							 | 
						|
								   firewall settings to allow access to the port.
							 | 
						|
								
							 | 
						|
								   If the server starts but you can't connect to it, you should make
							 | 
						|
								   sure that you have an entry in /etc/hosts that looks like this:
							 | 
						|
								127.0.0.1       localhost
							 | 
						|
								
							 | 
						|
								   This problem occurs only on systems that do not have a working
							 | 
						|
								   thread library and for which MySQL must be configured to use
							 | 
						|
								   MIT-pthreads.
							 | 
						|
								
							 | 
						|
								   If you cannot get mysqld to start, you can try to make a trace
							 | 
						|
								   file to find the problem by using the --debug option. See MySQL
							 | 
						|
								   Internals: Porting
							 | 
						|
								   (http://forge.mysql.com/wiki/MySQL_Internals_Porting).
							 | 
						|
								
							 | 
						|
								2.13.2. Securing the Initial MySQL Accounts
							 | 
						|
								
							 | 
						|
								   Part of the MySQL installation process is to set up the mysql
							 | 
						|
								   database that contains the grant tables:
							 | 
						|
								
							 | 
						|
								     * Windows distributions contain preinitialized grant tables that
							 | 
						|
								       are installed automatically.
							 | 
						|
								
							 | 
						|
								     * On Unix, the grant tables are populated by the
							 | 
						|
								       mysql_install_db program. Some installation methods run this
							 | 
						|
								       program for you. Others require that you execute it manually.
							 | 
						|
								       For details, see Section 2.13.1, "Unix Post-Installation
							 | 
						|
								       Procedures."
							 | 
						|
								
							 | 
						|
								   The grant tables define the initial MySQL user accounts and their
							 | 
						|
								   access privileges. These accounts are set up as follows:
							 | 
						|
								
							 | 
						|
								     * Accounts with the user name root are created. These are
							 | 
						|
								       superuser accounts that can do anything. The initial root
							 | 
						|
								       account passwords are empty, so anyone can connect to the
							 | 
						|
								       MySQL server as root --- without a password --- and be granted
							 | 
						|
								       all privileges.
							 | 
						|
								
							 | 
						|
								          + On Windows, one root account is created; this account
							 | 
						|
								            allows connecting from the local host only. The Windows
							 | 
						|
								            installer will optionally create an account allowing for
							 | 
						|
								            connections from any host only if the user selects the
							 | 
						|
								            Enable root access from remote machines option during
							 | 
						|
								            installation.
							 | 
						|
								
							 | 
						|
								          + On Unix, both root accounts are for connections from the
							 | 
						|
								            local host. Connections must be made from the local host
							 | 
						|
								            by specifying a host name of localhost for one of the
							 | 
						|
								            accounts, or the actual host name or IP number for the
							 | 
						|
								            other.
							 | 
						|
								
							 | 
						|
								     * Two anonymous-user accounts are created, each with an empty
							 | 
						|
								       user name. The anonymous accounts have no password, so anyone
							 | 
						|
								       can use them to connect to the MySQL server.
							 | 
						|
								
							 | 
						|
								          + On Windows, one anonymous account is for connections from
							 | 
						|
								            the local host. It has no global privileges. (Before
							 | 
						|
								            MySQL 5.1.16, it has all global privileges, just like the
							 | 
						|
								            root accounts.) The other is for connections from any
							 | 
						|
								            host and has all privileges for the test database and for
							 | 
						|
								            other databases with names that start with test.
							 | 
						|
								
							 | 
						|
								          + On Unix, both anonymous accounts are for connections from
							 | 
						|
								            the local host. Connections must be made from the local
							 | 
						|
								            host by specifying a host name of localhost for one of
							 | 
						|
								            the accounts, or the actual host name or IP number for
							 | 
						|
								            the other. These accounts have all privileges for the
							 | 
						|
								            test database and for other databases with names that
							 | 
						|
								            start with test_.
							 | 
						|
								
							 | 
						|
								   As noted, none of the initial accounts have passwords. This means
							 | 
						|
								   that your MySQL installation is unprotected until you do something
							 | 
						|
								   about it:
							 | 
						|
								
							 | 
						|
								     * If you want to prevent clients from connecting as anonymous
							 | 
						|
								       users without a password, you should either assign a password
							 | 
						|
								       to each anonymous account or else remove the accounts.
							 | 
						|
								
							 | 
						|
								     * You should assign a password to each MySQL root account.
							 | 
						|
								
							 | 
						|
								   The following instructions describe how to set up passwords for
							 | 
						|
								   the initial MySQL accounts, first for the anonymous accounts and
							 | 
						|
								   then for the root accounts. Replace "newpwd" in the examples with
							 | 
						|
								   the actual password that you want to use. The instructions also
							 | 
						|
								   cover how to remove the anonymous accounts, should you prefer not
							 | 
						|
								   to allow anonymous access at all.
							 | 
						|
								
							 | 
						|
								   You might want to defer setting the passwords until later, so that
							 | 
						|
								   you don't need to specify them while you perform additional setup
							 | 
						|
								   or testing. However, be sure to set them before using your
							 | 
						|
								   installation for production purposes.
							 | 
						|
								
							 | 
						|
								   Anonymous Account Password Assignment
							 | 
						|
								
							 | 
						|
								   To assign passwords to the anonymous accounts, connect to the
							 | 
						|
								   server as root and then use either SET PASSWORD or UPDATE. In
							 | 
						|
								   either case, be sure to encrypt the password using the PASSWORD()
							 | 
						|
								   function.
							 | 
						|
								
							 | 
						|
								   To use SET PASSWORD on Windows, do this:
							 | 
						|
								shell> mysql -u root
							 | 
						|
								mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
							 | 
						|
								mysql> SET PASSWORD FOR ''@'%' = PASSWORD('newpwd');
							 | 
						|
								
							 | 
						|
								   To use SET PASSWORD on Unix, do this:
							 | 
						|
								shell> mysql -u root
							 | 
						|
								mysql> SET PASSWORD FOR ''@'localhost' = PASSWORD('newpwd');
							 | 
						|
								mysql> SET PASSWORD FOR ''@'host_name' = PASSWORD('newpwd');
							 | 
						|
								
							 | 
						|
								   In the second SET PASSWORD statement, replace host_name with the
							 | 
						|
								   name of the server host. This is the name that is specified in the
							 | 
						|
								   Host column of the non-localhost record for root in the user
							 | 
						|
								   table. If you don't know what host name this is, issue the
							 | 
						|
								   following statement before using SET PASSWORD:
							 | 
						|
								mysql> SELECT Host, User FROM mysql.user;
							 | 
						|
								
							 | 
						|
								   Look for the record that has root in the User column and something
							 | 
						|
								   other than localhost in the Host column. Then use that Host value
							 | 
						|
								   in the second SET PASSWORD statement.
							 | 
						|
								
							 | 
						|
								   Anonymous Account Removal
							 | 
						|
								
							 | 
						|
								   If you prefer to remove the anonymous accounts instead, do so as
							 | 
						|
								   follows:
							 | 
						|
								shell> mysql -u root
							 | 
						|
								mysql> DROP USER '';
							 | 
						|
								
							 | 
						|
								   The DROP statement applies both to Windows and to Unix. On
							 | 
						|
								   Windows, if you want to remove only the anonymous account that has
							 | 
						|
								   the same privileges as root, do this instead:
							 | 
						|
								shell> mysql -u root
							 | 
						|
								mysql> DROP USER ''@'localhost';
							 | 
						|
								
							 | 
						|
								   That account allows anonymous access but has full privileges, so
							 | 
						|
								   removing it improves security.
							 | 
						|
								
							 | 
						|
								   root Account Password Assignment
							 | 
						|
								
							 | 
						|
								   You can assign passwords to the root accounts in several ways. The
							 | 
						|
								   following discussion demonstrates three methods:
							 | 
						|
								
							 | 
						|
								     * Use the SET PASSWORD statement
							 | 
						|
								
							 | 
						|
								     * Use the mysqladmin command-line client program
							 | 
						|
								
							 | 
						|
								     * Use the UPDATE statement
							 | 
						|
								
							 | 
						|
								   To assign passwords using SET PASSWORD, connect to the server as
							 | 
						|
								   root and issue SET PASSWORD statements. Be sure to encrypt the
							 | 
						|
								   password using the PASSWORD() function.
							 | 
						|
								
							 | 
						|
								   For Windows, do this:
							 | 
						|
								shell> mysql -u root
							 | 
						|
								mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
							 | 
						|
								mysql> SET PASSWORD FOR 'root'@'%' = PASSWORD('newpwd');
							 | 
						|
								
							 | 
						|
								   For Unix, do this:
							 | 
						|
								shell> mysql -u root
							 | 
						|
								mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpwd');
							 | 
						|
								mysql> SET PASSWORD FOR 'root'@'host_name' = PASSWORD('newpwd');
							 | 
						|
								
							 | 
						|
								   In the second SET PASSWORD statement, replace host_name with the
							 | 
						|
								   name of the server host. This is the same host name that you used
							 | 
						|
								   when you assigned the anonymous account passwords.
							 | 
						|
								
							 | 
						|
								   If the user table contains an account with User and Host values of
							 | 
						|
								   'root' and '127.0.0.1', use an additional SET PASSWORD statement
							 | 
						|
								   to set that account's password:
							 | 
						|
								mysql> SET PASSWORD FOR 'root'@'127.0.0.1' = PASSWORD('newpwd');
							 | 
						|
								
							 | 
						|
								   To assign passwords to the root accounts using mysqladmin, execute
							 | 
						|
								   the following commands:
							 | 
						|
								shell> mysqladmin -u root password "newpwd"
							 | 
						|
								shell> mysqladmin -u root -h host_name password "newpwd"
							 | 
						|
								
							 | 
						|
								   These commands apply both to Windows and to Unix. In the second
							 | 
						|
								   command, replace host_name with the name of the server host. The
							 | 
						|
								   double quotes around the password are not always necessary, but
							 | 
						|
								   you should use them if the password contains spaces or other
							 | 
						|
								   characters that are special to your command interpreter.
							 | 
						|
								
							 | 
						|
								   The mysqladmin method of setting the root account passwords does
							 | 
						|
								   not set the password for the 'root'@'127.0.0.1' account. To do so,
							 | 
						|
								   use SET PASSWORD as shown earlier.
							 | 
						|
								
							 | 
						|
								   You can also use UPDATE to modify the user table directly. The
							 | 
						|
								   following UPDATE statement assigns a password to all root
							 | 
						|
								   accounts:
							 | 
						|
								shell> mysql -u root
							 | 
						|
								mysql> UPDATE mysql.user SET Password = PASSWORD('newpwd')
							 | 
						|
								    ->     WHERE User = 'root';
							 | 
						|
								mysql> FLUSH PRIVILEGES;
							 | 
						|
								
							 | 
						|
								   The UPDATE statement applies both to Windows and to Unix.
							 | 
						|
								
							 | 
						|
								   After the passwords have been set, you must supply the appropriate
							 | 
						|
								   password whenever you connect to the server. For example, if you
							 | 
						|
								   want to use mysqladmin to shut down the server, you can do so
							 | 
						|
								   using this command:
							 | 
						|
								shell> mysqladmin -u root -p shutdown
							 | 
						|
								Enter password: (enter root password here)
							 | 
						|
								
							 | 
						|
								Note
							 | 
						|
								
							 | 
						|
								   If you forget your root password after setting it up, Section
							 | 
						|
								   B.5.4.1, "How to Reset the Root Password," covers the procedure
							 | 
						|
								   for resetting it.
							 | 
						|
								
							 | 
						|
								   To set up additional accounts, you can use the GRANT statement.
							 | 
						|
								   For instructions, see Section 5.5.2, "Adding User Accounts."
							 | 
						|
								
							 | 
						|
								2.14. Environment Variables
							 | 
						|
								
							 | 
						|
								   This section lists all the environment variables that are used
							 | 
						|
								   directly or indirectly by MySQL. Most of these can also be found
							 | 
						|
								   in other places in this manual.
							 | 
						|
								
							 | 
						|
								   Note that any options on the command line take precedence over
							 | 
						|
								   values specified in option files and environment variables, and
							 | 
						|
								   values in option files take precedence over values in environment
							 | 
						|
								   variables.
							 | 
						|
								
							 | 
						|
								   In many cases, it is preferable to use an option file instead of
							 | 
						|
								   environment variables to modify the behavior of MySQL. See Section
							 | 
						|
								   4.2.3.3, "Using Option Files."
							 | 
						|
								   Variable Description
							 | 
						|
								   CXX The name of your C++ compiler (for running configure).
							 | 
						|
								   CC The name of your C compiler (for running configure).
							 | 
						|
								   CFLAGS Flags for your C compiler (for running configure).
							 | 
						|
								   CXXFLAGS Flags for your C++ compiler (for running configure).
							 | 
						|
								   DBI_USER The default user name for Perl DBI.
							 | 
						|
								   DBI_TRACE Trace options for Perl DBI.
							 | 
						|
								   HOME The default path for the mysql history file is
							 | 
						|
								   $HOME/.mysql_history.
							 | 
						|
								   LD_RUN_PATH Used to specify the location of libmysqlclient.so.
							 | 
						|
								   MYSQL_DEBUG Debug trace options when debugging.
							 | 
						|
								   MYSQL_GROUP_SUFFIX Option group suffix value (like specifying
							 | 
						|
								   --defaults-group-suffix).
							 | 
						|
								   MYSQL_HISTFILE The path to the mysql history file. If this
							 | 
						|
								   variable is set, its value overrides the default for
							 | 
						|
								   $HOME/.mysql_history.
							 | 
						|
								   MYSQL_HOME The path to the directory in which the server-specific
							 | 
						|
								   my.cnf file resides (as of MySQL 5.0.3).
							 | 
						|
								   MYSQL_HOST The default host name used by the mysql command-line
							 | 
						|
								   client.
							 | 
						|
								   MYSQL_PS1 The command prompt to use in the mysql command-line
							 | 
						|
								   client.
							 | 
						|
								   MYSQL_PWD The default password when connecting to mysqld. Note
							 | 
						|
								   that using this is insecure. See Section 5.3.2.2, "End-User
							 | 
						|
								   Guidelines for Password Security."
							 | 
						|
								   MYSQL_TCP_PORT The default TCP/IP port number.
							 | 
						|
								   MYSQL_UNIX_PORT The default Unix socket file name; used for
							 | 
						|
								   connections to localhost.
							 | 
						|
								   PATH Used by the shell to find MySQL programs.
							 | 
						|
								   TMPDIR The directory where temporary files are created.
							 | 
						|
								   TZ This should be set to your local time zone. See Section
							 | 
						|
								   B.5.4.6, "Time Zone Problems."
							 | 
						|
								   UMASK The user-file creation mode when creating files. See note
							 | 
						|
								   following table.
							 | 
						|
								   UMASK_DIR The user-directory creation mode when creating
							 | 
						|
								   directories. See note following table.
							 | 
						|
								   USER The default user name on Windows and NetWare used when
							 | 
						|
								   connecting to mysqld.
							 | 
						|
								
							 | 
						|
								   The UMASK and UMASK_DIR variables, despite their names, are used
							 | 
						|
								   as modes, not masks:
							 | 
						|
								
							 | 
						|
								     * If UMASK is set, mysqld uses ($UMASK | 0600) as the mode for
							 | 
						|
								       file creation, so that newly created files have a mode in the
							 | 
						|
								       range from 0600 to 0666 (all values octal).
							 | 
						|
								
							 | 
						|
								     * If UMASK_DIR is set, mysqld uses ($UMASK_DIR | 0700) as the
							 | 
						|
								       base mode for directory creation, which then is AND-ed with
							 | 
						|
								       ~(~$UMASK & 0666), so that newly created directories have a
							 | 
						|
								       mode in the range from 0700 to 0777 (all values octal). The
							 | 
						|
								       AND operation may remove read and write permissions from the
							 | 
						|
								       directory mode, but not execute permissions.
							 | 
						|
								
							 | 
						|
								   MySQL assumes that the value for UMASK or UMASK_DIR is in octal if
							 | 
						|
								   it starts with a zero.
							 | 
						|
								
							 | 
						|
								2.15. Perl Installation Notes
							 | 
						|
								
							 | 
						|
								   Perl support for MySQL is provided by means of the DBI/DBD client
							 | 
						|
								   interface. The interface requires Perl 5.6.0, and 5.6.1 or later
							 | 
						|
								   is preferred. DBI does not work if you have an older version of
							 | 
						|
								   Perl.
							 | 
						|
								
							 | 
						|
								   If you want to use transactions with Perl DBI, you need to have
							 | 
						|
								   DBD::mysql 2.0900. If you are using the MySQL 4.1 or newer client
							 | 
						|
								   library, you must use DBD::mysql 2.9003 or newer. Support for
							 | 
						|
								   server-side prepared statements requires DBD::mysql 3.0009 or
							 | 
						|
								   newer.
							 | 
						|
								
							 | 
						|
								   Perl support is not included with MySQL distributions. You can
							 | 
						|
								   obtain the necessary modules from http://search.cpan.org for Unix,
							 | 
						|
								   or by using the ActiveState ppm program on Windows. The following
							 | 
						|
								   sections describe how to do this.
							 | 
						|
								
							 | 
						|
								   Perl support for MySQL must be installed if you want to run the
							 | 
						|
								   MySQL benchmark scripts; see Section 7.1.3, "The MySQL Benchmark
							 | 
						|
								   Suite." It is also required for the MySQL Cluster ndb_size.pl
							 | 
						|
								   utility; see Section 17.4.21, "ndb_size.pl --- NDBCLUSTER Size
							 | 
						|
								   Requirement Estimator."
							 | 
						|
								
							 | 
						|
								2.15.1. Installing Perl on Unix
							 | 
						|
								
							 | 
						|
								   MySQL Perl support requires that you have installed MySQL client
							 | 
						|
								   programming support (libraries and header files). Most
							 | 
						|
								   installation methods install the necessary files. However, if you
							 | 
						|
								   installed MySQL from RPM files on Linux, be sure that you've
							 | 
						|
								   installed the developer RPM. The client programs are in the client
							 | 
						|
								   RPM, but client programming support is in the developer RPM.
							 | 
						|
								
							 | 
						|
								   If you want to install Perl support, the files you need can be
							 | 
						|
								   obtained from the CPAN (Comprehensive Perl Archive Network) at
							 | 
						|
								   http://search.cpan.org.
							 | 
						|
								
							 | 
						|
								   The easiest way to install Perl modules on Unix is to use the CPAN
							 | 
						|
								   module. For example:
							 | 
						|
								shell> perl -MCPAN -e shell
							 | 
						|
								cpan> install DBI
							 | 
						|
								cpan> install DBD::mysql
							 | 
						|
								
							 | 
						|
								   The DBD::mysql installation runs a number of tests. These tests
							 | 
						|
								   attempt to connect to the local MySQL server using the default
							 | 
						|
								   user name and password. (The default user name is your login name
							 | 
						|
								   on Unix, and ODBC on Windows. The default password is "no
							 | 
						|
								   password.") If you cannot connect to the server with those values
							 | 
						|
								   (for example, if your account has a password), the tests fail. You
							 | 
						|
								   can use force install DBD::mysql to ignore the failed tests.
							 | 
						|
								
							 | 
						|
								   DBI requires the Data::Dumper module. It may be installed; if not,
							 | 
						|
								   you should install it before installing DBI.
							 | 
						|
								
							 | 
						|
								   It is also possible to download the module distributions in the
							 | 
						|
								   form of compressed tar archives and build the modules manually.
							 | 
						|
								   For example, to unpack and build a DBI distribution, use a
							 | 
						|
								   procedure such as this:
							 | 
						|
								
							 | 
						|
								    1. Unpack the distribution into the current directory:
							 | 
						|
								shell> gunzip < DBI-VERSION.tar.gz | tar xvf -
							 | 
						|
								       This command creates a directory named DBI-VERSION.
							 | 
						|
								
							 | 
						|
								    2. Change location into the top-level directory of the unpacked
							 | 
						|
								       distribution:
							 | 
						|
								shell> cd DBI-VERSION
							 | 
						|
								
							 | 
						|
								    3. Build the distribution and compile everything:
							 | 
						|
								shell> perl Makefile.PL
							 | 
						|
								shell> make
							 | 
						|
								shell> make test
							 | 
						|
								shell> make install
							 | 
						|
								
							 | 
						|
								   The make test command is important because it verifies that the
							 | 
						|
								   module is working. Note that when you run that command during the
							 | 
						|
								   DBD::mysql installation to exercise the interface code, the MySQL
							 | 
						|
								   server must be running or the test fails.
							 | 
						|
								
							 | 
						|
								   It is a good idea to rebuild and reinstall the DBD::mysql
							 | 
						|
								   distribution whenever you install a new release of MySQL,
							 | 
						|
								   particularly if you notice symptoms such as that all your DBI
							 | 
						|
								   scripts fail after you upgrade MySQL.
							 | 
						|
								
							 | 
						|
								   If you do not have access rights to install Perl modules in the
							 | 
						|
								   system directory or if you want to install local Perl modules, the
							 | 
						|
								   following reference may be useful:
							 | 
						|
								   http://servers.digitaldaze.com/extensions/perl/modules.html#module
							 | 
						|
								   s
							 | 
						|
								
							 | 
						|
								   Look under the heading "Installing New Modules that Require
							 | 
						|
								   Locally Installed Modules."
							 | 
						|
								
							 | 
						|
								2.15.2. Installing ActiveState Perl on Windows
							 | 
						|
								
							 | 
						|
								   On Windows, you should do the following to install the MySQL DBD
							 | 
						|
								   module with ActiveState Perl:
							 | 
						|
								
							 | 
						|
								    1. Get ActiveState Perl from
							 | 
						|
								       http://www.activestate.com/Products/ActivePerl/ and install
							 | 
						|
								       it.
							 | 
						|
								
							 | 
						|
								    2. Open a console window (a "DOS window").
							 | 
						|
								
							 | 
						|
								    3. If necessary, set the HTTP_proxy variable. For example, you
							 | 
						|
								       might try a setting like this:
							 | 
						|
								set HTTP_proxy=my.proxy.com:3128
							 | 
						|
								
							 | 
						|
								    4. Start the PPM program:
							 | 
						|
								C:\> C:\perl\bin\ppm.pl
							 | 
						|
								
							 | 
						|
								    5. If you have not previously done so, install DBI:
							 | 
						|
								ppm> install DBI
							 | 
						|
								
							 | 
						|
								    6. If this succeeds, run the following command:
							 | 
						|
								ppm> install DBD-mysql
							 | 
						|
								
							 | 
						|
								   This procedure should work with ActiveState Perl 5.6 or newer.
							 | 
						|
								
							 | 
						|
								   If you cannot get the procedure to work, you should install the
							 | 
						|
								   MyODBC driver instead and connect to the MySQL server through
							 | 
						|
								   ODBC:
							 | 
						|
								use DBI;
							 | 
						|
								$dbh= DBI->connect("DBI:ODBC:$dsn",$user,$password) ||
							 | 
						|
								  die "Got error $DBI::errstr when connecting to $dsn\n";
							 | 
						|
								
							 | 
						|
								2.15.3. Problems Using the Perl DBI/DBD Interface
							 | 
						|
								
							 | 
						|
								   If Perl reports that it cannot find the ../mysql/mysql.so module,
							 | 
						|
								   the problem is probably that Perl cannot locate the
							 | 
						|
								   libmysqlclient.so shared library. You should be able to fix this
							 | 
						|
								   problem by one of the following methods:
							 | 
						|
								
							 | 
						|
								     * Compile the DBD::mysql distribution with perl Makefile.PL
							 | 
						|
								       -static -config rather than perl Makefile.PL.
							 | 
						|
								
							 | 
						|
								     * Copy libmysqlclient.so to the directory where your other
							 | 
						|
								       shared libraries are located (probably /usr/lib or /lib).
							 | 
						|
								
							 | 
						|
								     * Modify the -L options used to compile DBD::mysql to reflect
							 | 
						|
								       the actual location of libmysqlclient.so.
							 | 
						|
								
							 | 
						|
								     * On Linux, you can add the path name of the directory where
							 | 
						|
								       libmysqlclient.so is located to the /etc/ld.so.conf file.
							 | 
						|
								
							 | 
						|
								     * Add the path name of the directory where libmysqlclient.so is
							 | 
						|
								       located to the LD_RUN_PATH environment variable. Some systems
							 | 
						|
								       use LD_LIBRARY_PATH instead.
							 | 
						|
								
							 | 
						|
								   Note that you may also need to modify the -L options if there are
							 | 
						|
								   other libraries that the linker fails to find. For example, if the
							 | 
						|
								   linker cannot find libc because it is in /lib and the link command
							 | 
						|
								   specifies -L/usr/lib, change the -L option to -L/lib or add -L/lib
							 | 
						|
								   to the existing link command.
							 | 
						|
								
							 | 
						|
								   If you get the following errors from DBD::mysql, you are probably
							 | 
						|
								   using gcc (or using an old binary compiled with gcc):
							 | 
						|
								/usr/bin/perl: can't resolve symbol '__moddi3'
							 | 
						|
								/usr/bin/perl: can't resolve symbol '__divdi3'
							 | 
						|
								
							 | 
						|
								   Add -L/usr/lib/gcc-lib/... -lgcc to the link command when the
							 | 
						|
								   mysql.so library gets built (check the output from make for
							 | 
						|
								   mysql.so when you compile the Perl client). The -L option should
							 | 
						|
								   specify the path name of the directory where libgcc.a is located
							 | 
						|
								   on your system.
							 | 
						|
								
							 | 
						|
								   Another cause of this problem may be that Perl and MySQL are not
							 | 
						|
								   both compiled with gcc. In this case, you can solve the mismatch
							 | 
						|
								   by compiling both with gcc.
							 | 
						|
								
							 | 
						|
								   You may see the following error from DBD::mysql when you run the
							 | 
						|
								   tests:
							 | 
						|
								t/00base............install_driver(mysql) failed:
							 | 
						|
								Can't load '../blib/arch/auto/DBD/mysql/mysql.so' for module DBD::mys
							 | 
						|
								ql:
							 | 
						|
								../blib/arch/auto/DBD/mysql/mysql.so: undefined symbol:
							 | 
						|
								uncompress at /usr/lib/perl5/5.00503/i586-linux/DynaLoader.pm line 16
							 | 
						|
								9.
							 | 
						|
								
							 | 
						|
								   This means that you need to include the -lz compression library on
							 | 
						|
								   the link line. That can be done by changing the following line in
							 | 
						|
								   the file lib/DBD/mysql/Install.pm:
							 | 
						|
								$sysliblist .= " -lm";
							 | 
						|
								
							 | 
						|
								   Change that line to:
							 | 
						|
								$sysliblist .= " -lm -lz";
							 | 
						|
								
							 | 
						|
								   After this, you must run make realclean and then proceed with the
							 | 
						|
								   installation from the beginning.
							 | 
						|
								
							 | 
						|
								   If you want to install DBI on SCO, you have to edit the Makefile
							 | 
						|
								   in DBI-xxx and each subdirectory. Note that the following assumes
							 | 
						|
								   gcc 2.95.2 or newer:
							 | 
						|
								OLD:                                  NEW:
							 | 
						|
								CC = cc                               CC = gcc
							 | 
						|
								CCCDLFLAGS = -KPIC -W1,-Bexport       CCCDLFLAGS = -fpic
							 | 
						|
								CCDLFLAGS = -wl,-Bexport              CCDLFLAGS =
							 | 
						|
								
							 | 
						|
								LD = ld                               LD = gcc -G -fpic
							 | 
						|
								LDDLFLAGS = -G -L/usr/local/lib       LDDLFLAGS = -L/usr/local/lib
							 | 
						|
								LDFLAGS = -belf -L/usr/local/lib      LDFLAGS = -L/usr/local/lib
							 | 
						|
								
							 | 
						|
								LD = ld                               LD = gcc -G -fpic
							 | 
						|
								OPTIMISE = -Od                        OPTIMISE = -O1
							 | 
						|
								
							 | 
						|
								OLD:
							 | 
						|
								CCCFLAGS = -belf -dy -w0 -U M_XENIX -DPERL_SCO5 -I/usr/local/include
							 | 
						|
								
							 | 
						|
								NEW:
							 | 
						|
								CCFLAGS = -U M_XENIX -DPERL_SCO5 -I/usr/local/include
							 | 
						|
								
							 | 
						|
								   These changes are necessary because the Perl dynaloader does not
							 | 
						|
								   load the DBI modules if they were compiled with icc or cc.
							 | 
						|
								
							 | 
						|
								   If you want to use the Perl module on a system that does not
							 | 
						|
								   support dynamic linking (such as SCO), you can generate a static
							 | 
						|
								   version of Perl that includes DBI and DBD::mysql. The way this
							 | 
						|
								   works is that you generate a version of Perl with the DBI code
							 | 
						|
								   linked in and install it on top of your current Perl. Then you use
							 | 
						|
								   that to build a version of Perl that additionally has the DBD code
							 | 
						|
								   linked in, and install that.
							 | 
						|
								
							 | 
						|
								   On SCO, you must have the following environment variables set:
							 | 
						|
								LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/progressive/lib
							 | 
						|
								
							 | 
						|
								   Or:
							 | 
						|
								LD_LIBRARY_PATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
							 | 
						|
								    /usr/progressive/lib:/usr/skunk/lib
							 | 
						|
								LIBPATH=/usr/lib:/lib:/usr/local/lib:/usr/ccs/lib:\
							 | 
						|
								    /usr/progressive/lib:/usr/skunk/lib
							 | 
						|
								MANPATH=scohelp:/usr/man:/usr/local1/man:/usr/local/man:\
							 | 
						|
								    /usr/skunk/man:
							 | 
						|
								
							 | 
						|
								   First, create a Perl that includes a statically linked DBI module
							 | 
						|
								   by running these commands in the directory where your DBI
							 | 
						|
								   distribution is located:
							 | 
						|
								shell> perl Makefile.PL -static -config
							 | 
						|
								shell> make
							 | 
						|
								shell> make install
							 | 
						|
								shell> make perl
							 | 
						|
								
							 | 
						|
								   Then you must install the new Perl. The output of make perl
							 | 
						|
								   indicates the exact make command you need to execute to perform
							 | 
						|
								   the installation. On SCO, this is make -f Makefile.aperl inst_perl
							 | 
						|
								   MAP_TARGET=perl.
							 | 
						|
								
							 | 
						|
								   Next, use the just-created Perl to create another Perl that also
							 | 
						|
								   includes a statically linked DBD::mysql by running these commands
							 | 
						|
								   in the directory where your DBD::mysql distribution is located:
							 | 
						|
								shell> perl Makefile.PL -static -config
							 | 
						|
								shell> make
							 | 
						|
								shell> make install
							 | 
						|
								shell> make perl
							 | 
						|
								
							 | 
						|
								   Finally, you should install this new Perl. Again, the output of
							 | 
						|
								   make perl indicates the command to use.
							 |