diff options
Diffstat (limited to 'INSTALL-SOURCE')
-rw-r--r-- | INSTALL-SOURCE | 8255 |
1 files changed, 2 insertions, 8253 deletions
diff --git a/INSTALL-SOURCE b/INSTALL-SOURCE index b6f4fe546c7..32cfa9792a7 100644 --- a/INSTALL-SOURCE +++ b/INSTALL-SOURCE @@ -1,8254 +1,3 @@ -Installing and Upgrading MariaDB +Instructions for building MariaDB can be found at: +https://kb.askmonty.org/en/compiling-mariadb-from-source/ -This file contains chapter two of the MySQL manual and describes how -to obtain and install MySQL. The instructions below are generally -applicable to both MySQL and MariaDB, but differ in some particulars -(like, for example, the GPG signing key we use is different). - -Detailed, MariaDB-specific instructions are available at: -http://kb.askmonty.org/en/getting-installing-and-upgrading-mariadb/ - -- - - - - -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-dbug="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-dbug 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-dbug 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. |