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.
 |