manual.texi
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:1883k
- Sometimes the amount of memory (real and virtual) is relevant.
- If in doubt, include these values.
- @item
- If you are using a source distribution of @strong{MySQL}, the name and
- version number of the compiler used is needed.
- If you have a binary distribution, the distribution name is needed.
- @item
- If the problem occurs during compilation, include the exact error
- message(s) and also a few lines of context around the offending code in the
- file where the error occurred.
- @item
- If @code{mysqld} died, you should also report query that crashed
- @code{mysqld}. You can usually find this out by running @code{mysqld} with
- logging enabled. @xref{Using log files}.
- @item
- If any database table is related to the problem, include the output from
- @code{mysqldump --no-data db_name tbl_name1 tbl_name2 ...}. This is very easy
- to do and is a powerful way to get information about any table in a database
- that will help us create a situation matching the one you have.
- @item
- For speed-related bugs or problems with @code{SELECT} statements, you should
- always include the output of @code{EXPLAIN SELECT ...}, and at least the
- number of rows that the @code{SELECT} statement produces. The more
- information you give about your situation, the more likely it is that someone
- can help you! For example, the following is an example of a very good bug
- report (it should of course be posted with the @code{mysqlbug} script):
- Example run using the @code{mysql} command line tool (note the use of the
- @code{G} statement terminator for statements whose output width would
- otherwise exceed that of an 80-column display device):
- @example
- mysql> SHOW VARIABLES;
- mysql> SHOW COLUMNS FROM ...G
- <output from SHOW COLUMNS>
- mysql> EXPLAIN SELECT ...G
- <output from EXPLAIN>
- mysql> FLUSH STATUS;
- mysql> SELECT ...;
- <A short version of the output from SELECT,
- including the time taken to run the query>
- mysql> SHOW STATUS;
- <output from SHOW STATUS>
- @end example
- @item
- If a bug or problem occurs while running @strong{mysqld}, try to provide an
- input script that will reproduce the anomaly. This script should include any
- necessary source files. The more closely the script can reproduce your
- situation, the better. If you can make a repeatable test case, you should
- post this to @email{bugs@@lists.mysql.com} for a high priority treatment!
- If you can't provide a script, you should at least include the output
- from @code{mysqladmin variables extended-status processlist} in your mail to
- provide some information of how your system is performing!
- @item
- If you can't produce a test case in a few rows, or if the test table
- is too big to be mailed to the mailing list (more than 10 rows), you should
- dump your tables using @code{mysqldump} and create a @file{README} file
- that describes your problem.
- Create a compressed archive of your files using
- @code{tar} and @code{gzip} or @code{zip}, and use @code{ftp}
- to transfer the archive to @uref{ftp://support.mysql.com/pub/mysql/secret/}.
- Then send a short description of the problem to @email{bugs@@lists.mysql.com}.
- @item
- If you think that @strong{MySQL} produces a strange result from a query,
- include not only the result, but also your opinion of what the result
- should be and an account describing the basis for your opinion.
- @item
- When giving an example of the problem, it's better to use the variable names,
- table names, etc., that exist in your actual situation than to come up with
- new names. The problem could be related to the name of a variable or table!
- These cases are rare, perhaps, but it is better to be safe than
- sorry. After all, it should be easier for you to provide an example that
- uses your actual situation, and it is by all means better for us. In case you
- have data you don't want to show to others, you can use @code{ftp} to
- transfer it to @uref{ftp://support.mysql.com/pub/mysql/secret/}. If the data
- are really top secret and you don't want to show them even to us, then go ahead
- and provide an example using other names, but please regard this as the last
- choice.
- @item
- Include all the options given to the relevant programs, if possible. For
- example, indicate the options that you use when you start the @code{mysqld}
- daemon and that you use to run any @strong{MySQL} client programs. The
- options to programs like @code{mysqld} and @code{mysql}, and to the
- @code{configure} script, are often keys to answers and are very relevant!
- It is never a bad idea to include them anyway! If you use any modules, such
- as Perl or PHP, please include the version number(s) of those as well.
- @item
- If your question is related to the privilege system, please include the
- output of @code{mysqlaccess}, the output of @code{mysqladmin reload}, and all
- the error messages you get when trying to connect! When you test your
- privileges, you should first run @code{mysqlaccess}. After this, execute
- @code{mysqladmin reload version} and try to connect with the program that
- gives you trouble. @code{mysqlaccess} can be found in the @file{bin}
- directory under your @strong{MySQL} installation directory.
- @item
- If you have a patch for a bug, that is good, but don't assume the patch is
- all we need, or that we will use it, if you don't provide some necessary
- information, such as test cases showing the bug that your patch fixes. We
- might find problems with your patch or we might not understand it at all; if
- so, we can't use it.
- If we can't verify exactly what the patch is meant for, we won't use it.
- Test cases will help us here. Show that the patch will handle all the
- situations that may occur. If we find a borderline case (even a rare one)
- where the patch won't work, it may be useless.
- @item
- Guesses about what the bug is, why it occurs, or what it depends on,
- are usually wrong. Even the MySQL team can't guess such things without
- first using a debugger to determine the real cause of a bug.
- @item
- Indicate in your mail message that you have checked the reference manual
- and mail archive so others know that you have tried to solve the
- problem yourself.
- @item
- If you get a @code{parse error}, please check your syntax closely! If
- you can't find something wrong with it, it's extremely likely that your
- current version of @strong{MySQL} doesn't support the query you are
- using. If you are using the current version and the manual at
- @uref{http://www.mysql.com/documentation/manual.php} doesn't cover the
- syntax you are using, @strong{MySQL} doesn't support your query. In this
- case, your only options are to implement the syntax yourself or e-mail
- @email{mysql-licensing@@mysql.com} and ask for an offer to implement it!
- If the manual covers the syntax you are using, but you have an older version
- of @strong{MySQL}, you should check the @strong{MySQL} change history to see
- when the syntax was implemented. @xref{News}. In this case, you have the
- option of upgrading to a newer version of @strong{MySQL}.
- @item
- If you have a problem such that your data appears corrupt or you get
- errors when you access some particular table, you should first check and then
- try repairing your tables with @code{myisamchk} or @code{CHECK TABLE}/
- @code{REPAIR TABLE}.
- @xref{Maintenance}.
- @item
- If you often get corrupted tables you should try to find out when and
- why this happens! In this case, the
- @file{mysql-data-directory/'hostname'.err} file may contain some
- information about what happened. @xref{Error log}. Please include any relevant
- information from this file in your bug report! Normally @code{mysqld}
- should @strong{NEVER} crash a table if nothing killed it in the middle
- of an update! If you can find the cause of @code{mysqld} dying,
- it's much easier for us to provide you with a fix for the problem!
- @xref{What is crashing}.
- @item
- If possible, download the most recent version of @strong{MySQL} and check
- whether or not it solves your problem. All versions of @strong{MySQL} are
- thoroughly tested and should work without problems! We believe in making
- everything as backward compatible as possible, and you should be able to
- switch @strong{MySQL} versions in minutes! @xref{Which version}.
- @end itemize
- If you are a support customer, please cross-post the bug report to
- @email{mysql-support@@mysql.com} for higher priority treatment, as well as to
- the appropriate mailing list to see if someone else has experienced (and
- perhaps solved) the problem.
- @cindex technical support, mailing address
- @cindex support, mailing address
- @cindex customer support, mailing address
- @cindex mailing address, for customer support
- For information on reporting bugs in @strong{MyODBC}, see @ref{ODBC
- Problems}.
- For solutions to some common problems, see @xref{Problems}.
- When answers are sent to you individually and not to the mailing list,
- it is considered good etiquette to summarize the answers and send the
- summary to the mailing list so that others may have the benefit of
- responses you received that helped you solve your problem!
- @cindex net etiquette
- @cindex questions, answering
- @cindex answering questions, etiquette
- @cindex mailing lists, guidelines
- @node Answering questions, , Bug reports, Questions
- @section Guidelines for Answering Question on the Mailing List
- If you consider your answer to have broad interest, you may want to post it
- to the mailing list instead of replying directly to the individual who
- asked. Try to make your answer general enough that people other than the
- original poster may benefit from it. When you post to the list, please make
- sure that your answer is not a duplication of a previous answer.
- Try to summarize the essential part of the question in your reply; don't feel
- obliged to quote the entire original message.
- Please don't post mail messages from your browser with HTML mode turned on!
- Many users don't read mail with a browser!
- @cindex licensing terms
- @cindex support terms
- @node Licensing and Support, Installing, Questions, Top
- @chapter MySQL Licensing and Support
- @menu
- * Licensing policy:: @strong{MySQL} licensing policy
- * Copyright:: Copyrights used by @strong{MySQL}
- * Licensing examples:: Example licensing situations
- * Cost:: @strong{MySQL} licensing and support costs
- * Support:: Types of commercial support
- @end menu
- This chapter describes @strong{MySQL} support and licensing
- arrangements:
- @itemize @bullet
- @item The copyrights under which @strong{MySQL} is distributed
- (@pxref{Copyright})
- @item Sample situations illustrating when a license is required
- (@pxref{Licensing examples})
- @item Support costs (@pxref{Cost}) and support benefits
- (@pxref{Support})
- @item Commercial licensing costs
- @end itemize
- @cindex licensing policy
- @cindex technical support, licensing
- @cindex support, licensing
- @cindex General Public License, MySQL
- @node Licensing policy, Copyright, Licensing and Support, Licensing and Support
- @section MySQL Licensing Policy
- The formal terms of the GPL license can be found at @ref{GPL license}.
- Basically, our licensing policy and intepretation of the GPL is as follows:
- Note that older versions of @strong{MySQL} are still using a more
- @uref{http://www.mysql.com/support/arrangements/mypl.html, strict license}. See the documentation for that version for more information.
- If you need a commercial @strong{MySQL} license, because the GPL license
- doesn't suit your application, you can buy one at
- @uref{https://order.mysql.com/license.htmy}.
- For normal internal use, @strong{MySQL} costs nothing. You do not have
- to pay us if you do not want to.
- A license is required if:
- @itemize @minus
- @item
- You link a part of the of @strong{MySQL} that has a GPL Copyright to a
- program that is not free software (embedded usage of the @strong{MySQL}
- server). In this case your application would also become GPL through the
- clause in the GPL license that acts as a virus. By licensing
- @strong{MySQL} from us under a commercial license you will avoid this
- problem.
- @item
- You have a commercial application that ONLY works with @strong{MySQL}
- and ships the application with the @strong{MySQL} server. This is
- because we view this as linking even if it is done over the network.
- @item
- You have a distribution of @strong{MySQL} and you don't provide the
- source code for your copy of the @strong{MySQL} server, as defined in
- the GPL license.
- @end itemize
- A license is @strong{NOT} required if:
- @itemize @minus
- @item
- You do not need a license to include the client code in commercial
- programs. The client part of @strong{MySQL} licensed with the
- LGPL @code{GNU Library General Public License}. The @code{mysql} command-line
- client includes code from the @code{readline} library that is under
- the @code{GPL}.
- @item
- If your use of @strong{MySQL} does not require a license, but you
- like @strong{MySQL} and want to encourage further development, you are
- certainly welcome to purchase a license or @strong{MySQL} support anyway.
- @item
- If you use @strong{MySQL} in a commercial context such that
- you profit by its use, we ask that you further the development of
- @strong{MySQL} by purchasing some level of support. We feel that if
- @strong{MySQL} helps your business, it is reasonable to ask that you help
- @strong{MySQL}. (Otherwise, if you ask us support questions, you are not
- only using for free something into which we've put a lot a work, you're
- asking us to provide free support, too.)
- @end itemize
- For circumstances under which a @strong{MySQL} license is required, you
- need a license per machine that runs the @code{mysqld} server. However,
- a multiple-CPU machine counts as a single machine, and there is no
- restriction on the number of @strong{MySQL} servers that run on one
- machine, or on the number of clients concurrently connected to a server
- running on that machine!
- If you have any questions as to whether or not a license is required for
- your particular use of @strong{MySQL}, please read this again and then
- contact us. @xref{Contact information}.
- If you require a @strong{MySQL} license, the easiest way to pay for it
- is to use the license form on @strong{MySQL}'s secure server at
- @uref{https://order.mysql.com/license.htmy}. Other forms of payment are
- discussed in @ref{Payment information}.
- @cindex copyrights
- @node Copyright, Licensing examples, Licensing policy, Licensing and Support
- @section Copyrights Used by MySQL
- @menu
- * Copyright changes:: Possible future copyright changes
- @end menu
- There are several different copyrights on the @strong{MySQL} distribution:
- @enumerate
- @item
- The @strong{MySQL}-specific source needed to build the
- @code{mysqlclient} library is licensed under the @code{LGPL} and
- programs in the @file{client} directory is GPL. Each file has a header
- that shows which copyright is used for that file.
- @item The client library and the (GNU @code{getopt}) library are covered
- by the ``GNU LIBRARY GENERAL PUBLIC LICENSE.'' @xref{LGPL license}.
- @item Some parts of the source (the @code{regexp} library) are covered
- by a Berkeley-style copyright.
- @item
- All the source in the server and the (GNU @code{readline}) library
- is covered by the ``GNU GENERAL PUBLIC LICENSE.'' @xref{GPL
- license}. This is also available as the file @file{COPYING} in the
- distributions.
- @end enumerate
- One goal is that the SQL client library should be free enough that it is
- possible to add @strong{MySQL} support into commercial products
- without a license. For this reason, we chose the LGPL license for the
- client code.
- @cindex licensing, free
- @cindex free licensing
- This means that you can use @strong{MySQL} for free with any program that uses
- any of the free software licenses. @strong{MySQL} is also free for any end
- user for his own or company usage.
- However, if you use @strong{MySQL} for something important to you, you may
- want to help secure its development by purchasing licenses or a support
- contract. @xref{Support}.
- @node Copyright changes, , Copyright, Copyright
- @subsection Copyright Changes
- The stable versions of @strong{MySQL} are still using a more strict
- license. See the documentation for that version for more information.
- @node Licensing examples, Cost, Copyright, Licensing and Support
- @section Example Licensing Situations
- @menu
- * Products that use MySQL:: Selling products that use @strong{MySQL}
- * ISP:: ISP @strong{MySQL} services
- * Web server:: Running a web server using @strong{MySQL}.
- @end menu
- @cindex licensing, examples
- @cindex selling products
- @cindex products, selling
- This section describes some situations illustrating whether or not you
- must license the @strong{MySQL} server. Generally these examples
- involve providing @strong{MySQL} as an integral part of a product.
- Note that a single @strong{MySQL} license covers any number of CPUs and
- @code{mysqld} servers on a machine! There is no artificial limit on the number
- of clients that connect to the server in any way.
- @node Products that use MySQL, ISP, Licensing examples, Licensing examples
- @subsection Selling Products that use MySQL
- To determine whether or not you need a @strong{MySQL} license when
- selling your application, you should ask whether the proper functioning
- of your application is dependent on the use of @strong{MySQL} and
- whether you include the @strong{MySQL} server with your product. There
- are several cases to consider:
- @itemize @bullet
- @item
- Does your application require @strong{MySQL} to function properly?
- @item
- If your product requires @strong{MySQL}, you need a license for any
- machine that runs the @code{mysqld} server. For example, if you've
- designed your application around @strong{MySQL}, then you've really made
- a commercial product that requires the engine, so you need a license.
- @item
- If your application does not require @strong{MySQL}, you need not obtain
- a license. For example, if using @strong{MySQL} just adds some new optional
- features to your product (such as adding logging to a database if
- @strong{MySQL} is used rather than logging to a text file), it should
- fall within normal use, and a license would not be required.
- @item
- In other words, you need a license if you sell a product designed
- specifically for use with @strong{MySQL} or that requires the
- @strong{MySQL} server to function at all. This is true whether or not
- you provide @strong{MySQL} for your client as part of your product
- distribution.
- @item
- It also depends on what you're doing for the client. Do you plan to
- provide your client with detailed instructions on installing
- @strong{MySQL} with your software? Then your product may be contingent
- on the use of @strong{MySQL}; if so, you need to buy a license. If you
- are simply tying into a database that you expect already to have been
- installed by the time your software is purchased, then you probably
- don't need a license.
- @end itemize
- @node ISP, Web server, Products that use MySQL, Licensing examples
- @subsection ISP MySQL Services
- @cindex ISP services
- @cindex services, ISP
- @cindex services, web
- @cindex Internet Service Providers
- Internet Service Providers (ISPs) often host @strong{MySQL} servers for
- their customers. With the GPL license this does not require a license.
- On the other hand, we do encourage people to use ISPs that have
- @strong{MySQL} support, as this will give them the confidence that if
- they have some problem with their @strong{MySQL} installation, their ISP
- will be able to solve the problem for them (in some cases with the help
- from the @strong{MySQL} development team).
- All ISPs that want to keep themselves up-to-date should subscribe
- to our @code{announce} mailing list so that they can be aware of fatal issues
- that may be relevant for their @strong{MySQL} installations.
- Note that if the ISP doesn't have a license for @strong{MySQL},
- it should give its customers at least read access to the source of
- the @strong{MySQL} installation so that its customer can verify that
- it is patched correctly.
- @cindex web server, running
- @cindex running, a web server
- @node Web server, , ISP, Licensing examples
- @subsection Running a Web Server Using MySQL
- If you use @strong{MySQL} in conjunction with a Web server on Unix, you
- don't have to pay for a license.
- This is true even if you run a commercial Web server that uses
- @strong{MySQL}, because you are not selling an embedded @strong{MySQL}
- version yourself. However, in this case we would like you to purchase
- @strong{MySQL} support, because @strong{MySQL} is helping your
- enterprise.
- @cindex costs, licensing and support
- @cindex licensing costs
- @cindex support costs
- @cindex prices, licensing and support
- @node Cost, Support, Licensing examples, Licensing and Support
- @section MySQL Licensing and Support Costs
- @menu
- * Payment information:: Payment information
- * Contact information:: Contact information
- @end menu
- Our current license prices are shown below. These prices are now under
- review because of the change to a GPL copyright. New prices and terms
- will be posted on the @strong{MySQL} web site
- @uref{http://www.mysql.com/} as soon as they are ready.
- All prices are in US Dollars. If you pay by credit card, the currency is
- EURO (European Union Euro) so the prices will differ slightly.
- @multitable @columnfractions .3 .3 .3
- @item @strong{Number of licenses} @tab @strong{Per copy} @tab @strong{Total}
- @item 1 @tab 200 EURO @tab 200 EURO
- @item 10 pack @tab 150 EURO @tab 1500 EURO
- @item 50 pack @tab 120 EURO @tab 6000 EURO
- @end multitable
- For high volume (OEM) purchases, the following prices apply:
- @multitable @columnfractions .25 .2 .3 .25
- @item @strong{Number of licenses} @tab @strong{Per copy} @tab @strong{Minimum } @tab @strong{Minimum payment}
- @item 100-999 @tab 40 EURO @tab 100 @tab 4000 EURO
- @item 1000-2499 @tab 25 EURO @tab 200 @tab 5000 EURO
- @item 2500-4999 @tab 20 EURO @tab 400 @tab 8000 EURO
- @end multitable
- For OEM purchases, you must act as the middle-man for eventual problems
- or extension requests from your users. We also require that OEM
- customers have at least an extended e-mail support contract. Note that
- OEM licenses only apply for products where the user doesn't have direct
- access to the @strong{MySQL} server (embedded system). In other words,
- the @strong{MySQL} server should only be used with the application
- that was supplied you.
- If you have a low-margin high-volume product, you can always talk to us
- about other terms (for example, a percent of the sale price). If you do,
- please be informative about your product, pricing, market, and any other
- information that may be relevant.
- A full-price license is not a support agreement and includes very minimal
- support. This means that we try to answer any relevant questions. If the
- answer is in the documentation, we will direct you to the appropriate
- section. If you have not purchased a license or support, we probably will not
- answer at all.
- If you discover what we consider a real bug, we are likely to fix it in
- any case. But if you pay for support we will notify you about the fix
- status instead of just fixing it in a later release.
- More comprehensive support is sold separately. Descriptions of what each
- level of support includes are given in @ref{Support}. Costs for the various
- types of commercial support are shown below. Support level prices are in
- EURO (European Union Euro). One EURO is about 1.06 USD.
- @multitable @columnfractions .5 .5
- @item @strong{Type of support} @tab @strong{Cost per year}
- @item Basic e-mail support. @xref{Basic email support}. @tab EURO 200
- @item Extended e-mail support @xref{Extended email support}. @tab EURO 1000
- @item Login support @xref{Login support}. @tab EURO 2000
- @item Extended login support @xref{Extended login support}. @tab EURO 5000
- @item Telephone support @xref{Telephone support}. @tab EURO 12000
- @end multitable
- You may upgrade from any lower level of support to a higher level of
- support for the difference in price between the two support levels.
- We do also provide telephone support (mostly emergency support but also
- 24/7 support). This support option doesn't however have a fixed price
- but is negotiated for case to case. If you are interested in this option
- you can email @email{sales@@mysql.com} and tell us about your needs.
- Note that as our sales staff is very busy, it may take some time until
- your request is handled. Our support staff does however always answer
- promptly to support questions!
- @cindex payment information
- @node Payment information, Contact information, Cost, Cost
- @subsection Payment information
- Currently we can take SWIFT payments, checks, or credit cards.
- Payment should be made to:
- @example
- Postgirot Bank AB
- 105 06 STOCKHOLM, SWEDEN
- MySQL AB
- BOX 6434
- 11382 STOCKHOLM, SWEDEN
- SWIFT address: PGSI SESS
- Account number: 96 77 06 - 3
- @end example
- Specify: license and/or support and your name and e-mail address.
- In Europe and Japan you can use EuroGiro (that should be less expensive) to the
- same account.
- If you want to pay by check, make it payable to ``MySQL Finland AB'' and
- mail it to the address below:
- @example
- MySQL AB
- BOX 6434, Torsgatan 21
- 11382 STOCKHOLM, SWEDEN
- @end example
- If you want to pay by credit card over the Internet, you can use
- @uref{https://order.mysql.com/license.htmy, MySQL AB's secure license form}.
- You can also print a copy of the license form, fill it in, and send it by fax
- to:
- +46-8-729 69 05
- If you want us to bill you, you can use the license form and write ``bill
- us'' in the comment field. You can also mail a message to
- @email{sales@@mysql.com} (@strong{not} @code{mysql@@lists.mysql.com}!)
- with your company information and ask us to bill you.
- @cindex contact information
- @cindex licensing, contact information
- @cindex partnering, with MySQL
- @cindex employment with MySQL
- @cindex jobs at MySQL
- @node Contact information, , Payment information, Cost
- @subsection Contact Information
- For commercial licensing, please contact the @strong{MySQL} licensing
- team. The much preferred method is by e-mail to
- @email{licensing@@mysql.com}. Fax is also possible but handling of
- these may take much longer (Fax +46-8-729 69 05).
- If you represent a business that is interested in partnering with
- @strong{MySQL}, please send e-mail to @email{partner@@mysql.com}.
- For timely, precise answers to technical questions about @strong{MySQL}
- you should @uref{https://order.mysql.com/, order} one of our
- @uref{http://www.mysql.com/support/arrangements/types.html, support contracts}.
- @strong{MySQL} support is provided by the @strong{MySQL} developers so the
- standard is extremely high.
- If you are interested in placing a banner advertisement on our Web site,
- please send e-mail to @email{advertising@@mysql.com}.
- If you are interested in any of the jobs listed in our
- @uref{http://www.mysql.com/development/jobs/, jobs} section, please send e-mail
- to @email{jobs@@mysql.com}.
- For general discussion amongst our many users, please direct your attention to
- the appropriate @uref{http://www.mysql.com/documentation/lists.html, mailing
- list}.
- For general information inquires, please send e-mail to
- @email{info@@mysql.com}.
- For questions or comments about the workings or content of this Web site,
- please send e-mail to @email{webmaster@@mysql.com}.
- @cindex support, types
- @cindex types, of support
- @cindex commercial support, types
- @node Support, , Cost, Licensing and Support
- @section Types of Commercial Support
- @menu
- * Basic email support:: Basic email support
- * Extended email support:: Extended email support
- * Login support:: Login support
- * Extended login support:: Extended login support
- * Telephone support:: Telephone support
- * Table handler support:: Support for other table handlers
- @end menu
- @cindex email, technical support
- @cindex technical support, by email
- @node Basic email support, Extended email support, Support, Support
- @subsection Basic E-mail Support
- Basic e-mail support is a very inexpensive support option and should be
- thought of more as a way to support our development of @strong{MySQL}
- than as a real support option. We at @strong{MySQL} do give a lot of free
- support in all the different @strong{MySQL} lists, and the money we get from
- basic e-mail support is largely used to make this possible.
- At this support level, the @strong{MySQL} mailing lists are the preferred
- means of communication. Questions normally should be mailed to the primary
- mailing list (@email{mysql@@lists.mysql.com}) or one of the other regular
- lists (for example, @email{win32@@lists.mysql.com} for Windows-related
- @strong{MySQL} questions), as someone else already may have experienced and
- solved the problem you have. @xref{Asking questions}.
- However, by purchasing basic e-mail support, you also have access to the
- support address @email{mysql-support@@mysql.com}, which is not available
- as part of the minimal support that you get by purchasing a
- @strong{MySQL} license. This means that for especially critical
- questions, you can cross-post your message to
- @email{mysql-support@@mysql.com}. (If the message contains sensitive
- data, you should post only to @email{mysql-support@@mysql.com}.)
- @emph{REMEMBER!} to ALWAYS include your registration number and
- expiration date when you send a message to
- @email{mysql-support@@mysql.com}.
- Note that if you have encountered a critical repeatable bug and follow
- the rules outlined in the manual section of how to report bugs and send
- it to @email{bugs@@lists.mysql.com}, we promise to try to fix this as
- soon as possible, regardless of your support level! @xref{Bug reports}.
- Basic e-mail support includes the following types of service:
- @itemize @bullet
- @item
- If your question is already answered in the manual, we will inform you of the
- correct section in which you can find the answer. If the answer is not in
- the manual, we will point you in the right direction to solve your problem.
- @item
- We guarantee a timely answer for your e-mail messages. We can't guarantee
- that we can solve any problem, but at least you will receive an answer if we
- can contact you by e-mail.
- @item
- We will help with unexpected problems when you install @strong{MySQL} from a
- binary distribution on supported platforms. This level of support does not
- cover installing @strong{MySQL} from a source distribution. Supported
- platforms are those for which @strong{MySQL} is known to work.
- @xref{Which OS}.
- @item
- We will help you with bugs and missing features. Any bugs that are found are
- fixed for the next @strong{MySQL} release. If the bug is critical for
- you, we will mail you a patch for it as soon the bug is fixed. Critical
- bugs always have the highest priority for us, and we ensure that they are
- fixed as soon as possible.
- @item
- Your suggestions for the further development of @strong{MySQL} will be
- taken into consideration. By taking email support you have already
- helped the further development of @strong{MySQL}. If you want to have
- more input, upgrade to a higher level of support.
- @item
- If you want us to help optimize your system, you must upgrade to a
- higher level of support.
- @end itemize
- @cindex extended email support
- @node Extended email support, Login support, Basic email support, Support
- @subsection Extended E-mail Support
- Extended e-mail support includes everything in basic e-mail support with
- these additions:
- @itemize @bullet
- @item
- Your e-mail will be dealt with before mail from basic e-mail support users and
- non-registered users.
- @item
- Your suggestions for the further development of @strong{MySQL} will
- receive strong consideration. Simple extensions that suit the basic
- goals of @strong{MySQL} are implemented in a matter of days. By taking
- extended e-mail support you have already helped the further development
- of @strong{MySQL}.
- @item
- Typical situations that are covered by extended e-mail support are:
- @itemize @minus
- @item
- We will answer and (within reason) solve questions that relate to possible
- bugs in @strong{MySQL}. As soon as the bug is found and corrected, we
- will mail a patch for it.
- @item
- We will help with unexpected problems when you install @strong{MySQL} from a
- source or binary distribution on supported platforms.
- @item
- We will answer questions about missing features and offer hints how to work
- around them.
- @item
- We will provide hints on optimizing @code{mysqld} for your situation.
- @end itemize
- @item
- You are allowed to influence the priority of items on the @strong{MySQL}
- TODO List. @xref{TODO}. This will ensure that the features you really need
- will be implemented sooner than they might be otherwise.
- @end itemize
- @cindex login support
- @node Login support, Extended login support, Extended email support, Support
- @subsection Login Support
- Login support includes everything in extended e-mail support with
- these additions:
- @itemize @bullet
- @item
- Your e-mail will be dealt with even before e-mail from extended e-mail
- support users.
- @item
- Your suggestions for the further development of @strong{MySQL} will
- be taken into very high consideration. Realistic extensions that can be
- implemented in a couple of hours and that suit the basic goals of
- @strong{MySQL} will be implemented as soon as possible.
- @item
- If you have a very specific problem, we can try to log in on your system
- to solve the problem ``in place.''
- @item
- Like any database vendor, we can't guarantee that we can rescue any data from
- crashed tables, but if the worst happens, we will help you rescue as much as
- possible. @strong{MySQL} has proven itself very reliable, but anything is
- possible due to circumstances beyond our control (for example, if your system
- crashes or someone kills the server by executing a @code{kill -9} command).
- @item
- We will provide hints on optimizing your system and your queries.
- @item
- You are allowed to call a @strong{MySQL} developer (in moderation) and
- discuss your @strong{MySQL}-related problems. This option is however
- only to be used as a last result during an emergency after we have
- failed to grasp the total problem with email. To make efficient
- use of our time we need to first get all facts about the problem,
- before talking on phone, to be able to work as efficiently as possible on
- solving the problem.
- @end itemize
- @node Extended login support, Telephone support, Login support, Support
- @subsection Extended Login Support
- Extended login support includes everything in login support with these
- additions:
- @itemize @bullet
- @item
- Your e-mail has the highest possible priority.
- @item
- We will actively examine your system and help you optimize it and your
- queries. We may also optimize and/or extend @strong{MySQL} to better
- suit your needs.
- @item
- You may also request special extensions just for you. For example:
- @example
- mysql> select MY_FUNC(col1,col2) from table;
- @end example
- @item
- We will provide a binary distribution of all important @strong{MySQL}
- releases for your system, as long as we can get an account on a
- similar system. In the worst case, we may require access to your system
- to be able to create a binary distribution.
- @item
- If you can provide accommodations and pay for traveler fares, you can
- even get a @strong{MySQL} developer to visit you and offer you help with
- your troubles. Extended login support entitles you to one personal
- encounter per year, but we are always very flexible towards our
- customers! If the visit takes 16 hours or more, the first 8 hours is
- without charge. For the hours above 8 hours, you will be charged with a
- rate that is at least 20 % less than our standard rates.
- @end itemize
- @node Telephone support, Table handler support, Extended login support, Support
- @subsection Telephone Support
- Telephone support includes everything in extended login support with
- these additions:
- @itemize @bullet
- @item
- We will provide you with a dynamic web page showing the current list of
- @code{MySQL} developers that you can phone when you have a critical
- problem.
- @item
- For non critical problem, you can request a @strong{MySQL} developer to
- phone back within 48 hours to discuss @code{MySQL} related issues.
- @end itemize
- @cindex support, BDB Tables
- @cindex support, INNOBASE Tables
- @cindex support, GEMENI Tables
- @node Table handler support, , Telephone support, Support
- @subsection Support for other table handlers
- To get support for @code{BDB} tables, @code{INNOBASE} tables or
- @code{GEMINI} tales you has to pay and additional 30 % on the basic
- support price for each of the table handlers you want to get support on.
- This extra cost is cover the back support cost for the other table
- handlers.
- We at @code{MySQL AB} will help you create a proper bug report for the
- table handler and submit it to the developers for to specific table
- handler. We will also do our best to ensure that you will get a timely
- answer/solution from the developers of the table handler.
- Even if we are quite confident that we can solve most problems within a
- timely manner, we can't guarantee a quick solution for any problems you
- can get with the different table handlers. We will however do our best
- to help you get the problem solved.
- @node Installing, Compatibility, Licensing and Support, Top
- @chapter Installing MySQL
- @cindex installing, overview
- @menu
- * Getting MySQL:: How to get @strong{MySQL}
- * Which OS:: Operating systems supported by @strong{MySQL}
- * Which version:: Which @strong{MySQL} version to use
- * Many versions:: How and when updates are released
- * Installation layouts:: Installation layouts
- * Installing binary:: Installing a @strong{MySQL} binary distribution
- * Installing source:: Installing a @strong{MySQL} source distribution
- * Installing source tree:: Installing @strong{MySQL} from development source tree
- * Compilation problems:: Problems compiling?
- * MIT-pthreads:: MIT-pthreads notes
- * Perl support:: Perl installation comments
- * Source install system issues:: System-specific issues
- * Windows:: Windows notes
- * OS/2:: OS/2 notes
- * MySQL binaries:: MySQL binaries
- * Post-installation:: Post-installation setup and testing
- * Installing many servers:: Installing many servers on the same machine
- * Upgrade:: Upgrading/Downgrading MySQL
- @end menu
- This chapter describes how to obtain and install @strong{MySQL}:
- @itemize @bullet
- @item
- For a list of sites from which you can obtain @strong{MySQL}, see
- @ref{Getting MySQL, , Getting @strong{MySQL}}.
- @item
- To see which platforms are supported, see @ref{Which OS}.
- @item
- Several versions of @strong{MySQL} are available in both binary and
- source distributions. 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 @ref{Many versions}.
- @item
- Installation instructions for binary and source distributions are described
- in @ref{Installing binary} and @ref{Installing source}. Each set of
- instructions includes a section on system-specific problems you may run
- into.
- @item
- For post-installation procedures, see @ref{Post-installation}. These
- procedures apply whether you install @strong{MySQL} using a binary or
- source distribution.
- @end itemize
- @cindex downloading
- @cindex MySQL version
- @cindex version, latest
- @cindex getting MySQL
- @cindex mirror sites
- @cindex URLS for downloading MySQL
- @node Getting MySQL, Which OS, Installing, Installing
- @section How to Get MySQL
- Check the @uref{http://www.mysql.com/, @strong{MySQL} home page} for
- information about the current version and for downloading instructions.
- Our main download mirror is located at:
- @uref{http://download.sourceforge.net/mirrors/mysql/, http://download.sourceforge.net/mirrors/mysql/}
- If you are interested in becoming a @strong{MySQL} mirror site, you may
- anonymously rsync with: @code{rsync://download.sourceforge.net/mysql/}. Please
- send e-mail to @email{webmaster@@mysql.com} notifying us of your mirror to be
- added to the list below.
- If you have problems downloading from our main site, try using one of the
- mirrors listed below.
- Please report bad or out-of-date mirrors to @email{webmaster@@mysql.com}.
- @c START_OF_MIRROR_LISTING
- @strong{Europe:}
- @itemize @bullet
- @item
- @c EMAIL: sl@iuinfo.tuwien.ac.at (Tony Sprinzl)
- @image{Flags/austria} Austria [Univ. of Technology/Vienna] @
- @uref{http://gd.tuwien.ac.at/db/mysql/, WWW}
- @uref{ftp://gd.tuwien.ac.at/db/mysql/, FTP}
- @c @item
- @c Not ok 20000919; Old site (Matt)
- @c EMAIL: delian@naturella.com (Delian Delchev)
- @c @image{Flags/bulgaria} Bulgaria [Naturella] @
- @c @uref{http://archive.nat.bg/pub/mirror/mysql/, WWW}
- @c @uref{ftp://ftp.ntrl.net/pub/mirror/mysql/, FTP}
- @item
- @c EMAIL: salle@online.bg (Admin)
- @image{Flags/bulgaria} Bulgaria [online.bg/Sofia] @
- @uref{http://mysql.online.bg/, WWW}
- @uref{ftp://mysql.online.bg/, FTP}
- @c @item
- @c Added: 990614
- @c Not ok 20000919; Out of date (Matt)
- @c EMAIL: vuksan@veus.hr (Vladimir Vuksan)
- @c @image{Flags/croatia} Croatia [HULK] @
- @c @uref{http://ftp.linux.hr/pub/mysql/, WWW}
- @c @uref{ftp://ftp.linux.hr/pub/mysql/, FTP}
- @item
- @c Added: 990614
- @c EMAIL: kas@informatics.muni.cz (Jan Kasprzak)
- @image{Flags/czech-republic} Czech Republic [Masaryk University in Brno] @
- @uref{http://mysql.linux.cz/index.html, WWW}
- @uref{ftp://ftp.fi.muni.cz/pub/mysql/, FTP}
- @item
- @c Added: 990920
- @c EMAIL: <radek@sopik.cz> (Radek Libovicky)
- @image{Flags/czech-republic} Czech Republic [www.sopik.cz] @
- @uref{http://www.mysql.cz/, WWW}
- @item
- @c Added: 000418
- @c EMAIL: <feela@ipex.cz> (Ondrej Feela Filip)
- @image{Flags/czech-republic} Czech Republic [www.gin.cz] @
- @uref{http://mysql.gin.cz/, WWW}
- @uref{ftp://ftp.gin.cz/pub/MIRRORS/www.mysql.com/, FTP}
- @item
- @c removed 991020 (no DNS entry). New name 991026. Added 991121
- @c Statistics at http://mirror.borsen.dk/
- @c EMAIL: mirrorman@borsen.dk (Michael Kyed)
- @image{Flags/denmark} Denmark [Borsen] @
- @uref{ http://mysql.borsen.dk/, WWW}
- @item
- @c EMAIL: mkp@socsci.auc.dk (Martin Kasper Petersen)
- @image{Flags/denmark} Denmark [SunSITE] @
- @uref{http://SunSITE.auc.dk/mysql/, WWW}
- @uref{ftp://SunSITE.auc.dk/pub/databases/mysql/, FTP}
- @c @item
- @c T鮪u does not work there anymore :-) 990720
- @c EMAIL: tonu@tradenet.ee (T鮪u Samuel)
- @c @image{Flags/estonia} Estonia [Tradenet] @
- @c @uref{http://mysql.tradenet.ee, WWW}
- @item
- @c EMAIL: tonu@spam.ee (T鮪u Samuel)
- @image{Flags/estonia} Estonia [OKinteractive] @
- @uref{http://mysql.mirror.ok.ee, WWW}
- @c @item
- @c Changed 990531
- @c Not ok 20000919; Old site (Matt)
- @c EMAIL: Steeve.Devergne@minet.net (Steeve Devergne)
- @c @image{Flags/france} France [minet] @
- @c @uref{http://www.minet.net/devel/mysql/, WWW}
- @item
- @c EMAIL: alex@mtesa.net (Alexandre Dupouy)
- @image{Flags/france} France [mtesa.net] @
- @uref{http://mysql.mtesa.net/, WWW}
- @c @item
- @c Not ok 20000919; Old site (Matt)
- @c EMAIL: Jaakko.Hyvatti@eunet.fi
- @c @image{Flags/finland} Finland [EUnet] @
- @c @uref{http://mysql.eunet.fi/, WWW}
- @c @item
- @c Added 990829
- @c Not ok 20000919; Non-existent (Matt)
- @c EMAIL: tomi.hakala@clinet.fi (Tomi Hakala)
- @c @image{Flags/finland} Finland [clinet] @
- @c @uref{ftp://ftp.clinet.fi/mirrors/ftp.mysql.org/pub/mysql/, FTP}
- @item
- @c Added 20001019
- @c EMAIL: d@d.tj (Dominique L . Bouix)
- @image{Flags/finland} Finland [tonnikala.net] @
- @uref{http://mysql.tonnikala.org/, WWW}
- @item
- @c Added 981208
- @c EMAIL: noel@uni-bonn.de (Noel Koethe)
- @image{Flags/germany} Germany [Kernelnotes.de, Bonn] @
- @uref{http://www.kernelnotes.de/mysql/, WWW}
- @uref{ftp://ftp.kernelnotes.de/pub/mirror/mysql.org/, FTP}
- @item
- @c EMAIL: th@rz.fh-wolfenbuettel.de (Thorsten Ludewig)
- @image{Flags/germany} Germany [Wolfenbuettel] @
- @uref{http://www.fh-wolfenbuettel.de/ftp/pub/database/mysql/, WWW}
- @uref{ftp://ftp.fh-wolfenbuettel.de/pub/database/mysql/, FTP}
- @c @item
- @c Ok 980114. Removed 981208 (down > 3 days) ok 981214
- @c Not ok 20000919; Non-existent (Matt)
- @c EMAIL: straub@gks.de (Hans-Peter Straub)
- @c @image{Flags/germany} Germany [Staufen] @
- @c @uref{http://mysql.staufen.de/, WWW}
- @c @item
- @c Added 990614
- @c Not ok 20000919; Non-existent (Matt)
- @c EMAIL: thomas.rohde@ecrc.de (Thomas Rohde)
- @c @image{Flags/germany} Germany [Cable & Wireless] @
- @c @uref{ftp://ftp.ecrc.net/pub/database/mysql/, FTP}
- @item
- @c Added 981208
- @c EMAIL: christias@noc.ntua.gr (Panagiotis Christias)
- @image{Flags/greece} Greece [NTUA, Athens] @
- @uref{http://www.ntua.gr/mysql/, WWW}
- @uref{ftp://ftp.ntua.gr/pub/databases/mysql/, FTP}
- @item
- @c EMAIL: torlasz@xenia.sote.hu (Laszlo L. Tornoc)
- @image{Flags/hungary} Hungary [Xenia] @
- @uref{http://mysql.sote.hu/, WWW}
- @uref{ftp://xenia.sote.hu/pub/mirrors/www.mysql.com/, FTP}
- @item
- @c EMAIL: mirrors@gm.is (Tomas Edwardsson)
- @image{Flags/iceland} Iceland [GM] @
- @uref{http://mysql.gm.is/, WWW}
- @uref{ftp://ftp.gm.is/pub/mysql/, FTP}
- @c @item
- @c Out of date 990906
- @c EMAIL: bourbon@netvision.net.il (Zeev Suraski)
- @c @image{Flags/israel} Israel [Netvision] @
- @c @uref{http://mysql.netvision.net.il/, WWW}
- @c @item
- @c Not working 99.03.06
- @c EMAIL: maruzz@matrice.it (Giovanni Maruzzelli)
- @c @image{Flags/italy} Italy [Matrice] @
- @c @uref{http://www.matrice.it/risorse/mysql/, WWW}
- @item
- @c EMAIL: gabriele@feelinglinux.com (Giansante Gabriele)
- @image{Flags/italy} Italy [feelinglinux.com] @
- @uref{http://mysql.feelinglinux.com/, WWW}
- @item
- @c EMAIL: irena@yacc.it
- @image{Flags/italy} Italy [Teta Srl] @
- @uref{http://www.teta.it/mysql/, WWW}
- @item
- @c EMAIL: rudy@comm2000.it (Rudy)
- @image{Flags/italy} Italy [tzone.it] @
- @uref{http://mysql.tzone.it/, WWW}
- @c @item
- @c Added 991121
- @c Not ok 20000919; Old site (Matt)
- @c EMAIL: nick@iol.ie (Nick Hilliard)
- @c @image{Flags/ireland} Ireland [Ireland On-Line/Dublin] @
- @c @uref{http://mysql.iol.ie, WWW}
- @c @uref{ftp://ftp.iol.ie/pub/mysql, FTP}
- @item
- @c Added 20001031
- @c EMAIL: dave@esat.net (Dave Rynne)
- @image{Flags/ireland} Ireland [Esat Net] @
- @uref{http://ftp.esat.net/mirrors/download.sourceforge.net/pub/mirrors/mysql/, WWW}
- @uref{ftp://ftp.esat.net/mirrors/download.sourceforge.net/pub/mirrors/mysql/, FTP}
- @item
- @c Added 20001125
- @c EMAIL: mleicher@silverpoint.nl (Marcel Leicher)
- @image{Flags/netherlands} Netherlands [Silverpoint] @
- @uref{http://mysql.silverpoint.nl/, WWW}
- @item
- @c EMAIL: mysql@widexs.nl (Wouter de Jong)
- @image{Flags/netherlands} Netherlands [Widexs BV] @
- @uref{http://mysql.widexs.nl/, WWW}
- @uref{ftp://mysql.widexs.nl/pub/mysql/, FTP}
- @item
- @c EMAIL: W.Sylwestrzak@icm.edu.pl (Wojtek Sylwestrzak)
- @c mirroring nightly at 05:25
- @image{Flags/poland} Poland [Sunsite] @
- @uref{http://sunsite.icm.edu.pl/mysql/, WWW}
- @uref{ftp://sunsite.icm.edu.pl/pub/unix/mysql/, FTP}
- @item
- @c EMAIL: admin@net.ncservice.com.pl (Marian Witkowski)
- @image{Flags/poland} Poland [ncservice.com/Gdansk] @
- @uref{http://mysql.service.net.pl/, WWW}
- @c @item
- @c EMAIL: melo@co.telenet.pt (Pedro Melo)
- @c Temp out of service (email from Pedro)
- @c @image{Flags/portugal} Portugal [IP] @
- @c @uref{http://mysql.ip.pt, WWW}
- @c @item
- @c Not ok 20000919; Non-existent (Matt)
- @c EMAIL: Equipa de suporte do Leirianet <support@leirianet.pt>
- @c @image{Flags/portugal} Portugal [lerianet] @
- @c @uref{http://mysql.leirianet.pt, WWW}
- @c @uref{ftp://ftp.leirianet.pt/pub/mysql/,FTP}
- @item
- @c Added 20001031
- @c bofh@netc.pt (Bruno Rodrigues)
- @image{Flags/portugal} Portugal [Netc] @
- @uref{http://ftp.netc.pt/pub/mysql/, WWW}
- @uref{ftp://ftp.netc.pt/pub/mysql/, FTP}
- @item
- @c EMAIL: keeper@roedu.net (Mihai RUSU)
- @image{Flags/romania} Romania [roedu.net/Bucharest] @
- @uref{ftp://ftp.roedu.net/pub/mirrors/ftp.mysql.com/, FTP}
- @item
- @c EMAIL: kuzmin@dn.ru (Roma Kuzmin)
- @image{Flags/russia} Russia [DirectNet] @
- @uref{http://mysql.directnet.ru/, WWW}
- @uref{ftp://ftp.dn.ru/pub/MySQL/, FTP}
- @c @item
- @c down 990113
- @c EMAIL: nikkic@cityline.ru (Nikki Chumakov)
- @c @image{Flags/russia} Russia [Cityline] @
- @c @uref{ftp://mysql.cityline.ru/pub/mysql, FTP}
- @c @uref{http://mysql.cityline.ru, WWW}
- @c EMAIL: bar@izhcom.ru (Alexander I Barkov)
- @c @item
- @c Not ok 20000919; Non-existent (Matt)
- @c @image{Flags/russia} Russia [IZHCOM] @
- @c @uref{http://mysql.udm.net/, WWW}
- @c @uref{ftp://ftp.izhcom.ru/pub/mysql/,FTP}
- @item
- @c Added 990507
- @c EMAIL: demon@gpad.ac.ru (Dima Sivachenko)
- @image{Flags/russia} Russia [Scientific Center/Chernogolovka] @
- @uref{ftp://ftp.chg.ru/pub/databases/mysql/, FTP}
- @c @item
- @c Not ok 20000919; Old site (Matt)
- @c EMAIL: sebi@dnttm.ro (Sebastian DEAC)
- @c @image{Flags/romania} Romania [Timisoara] @
- @c @uref{http://download.dnttm.ro/mysql, WWW}
- @c @uref{ftp://ftp.dnttm.ro/pub/mysql, FTP}
- @c @item
- @c Not ok 20001123; Non-existant (Matt)
- @c EMAIL: tim@lbi.ro (Bogdan Surdu)
- @c @image{Flags/romania}
- @c Romania [Bucharest] @
- @c @uref{http://www.lbi.ro/MySQL/, WWW}
- @c @uref{ftp://ftp.lbi.ro/mirrors/ftp.tcx.se, FTP}
- @c @item
- @c Removed 20000521 because there is no mirror here.
- @c EMAIL: jips@masterd.es (Juan Ignacio P閞ez Sacrist醤)
- @c @image{Flags/spain} Spain [MasterD]
- @c @uref{http://mysql.masterd.es, WWW}
- @c @item
- @c Not ok 20000919; Old site (Matt)
- @c EMAIL: Patrik.Karen@sdi.slu.se (Patrik Karen)
- @c ftp -> remove old files
- @c @image{Flags/sweden} Sweden [Sunet] @
- @c @uref{http://ftp.sunet.se/pub/unix/databases/relational/mysql/, WWW}
- @c @uref{ftp://ftp.sunet.se/pub/unix/databases/relational/mysql/, FTP}
- @item
- @c EMAIL: archive@sunsite.cnlab-switch.ch (Thomas Lenggenhager)
- @image{Flags/switzerland} Switzerland [Sunsite] @
- @uref{http://sunsite.cnlab-switch.ch/ftp/mirror/mysql/, WWW}
- @uref{ftp://sunsite.cnlab-switch.ch/mirror/mysql/, FTP}
- @c @item
- @c Not ok 20000919; Non-existent (Matt)
- @c simon@oyster.co.uk (Simon Gornall)
- @c @image{Flags/great-britain} UK [Oyster/UK] @
- @c @uref{ftp://ftp.oyster.co.uk/pub/mysql, FTP}
- @item
- @c gareth@omnipotent.net (Gareth Watts)
- @image{Flags/great-britain} UK [Omnipotent/UK] @
- @uref{http://mysql.omnipotent.net/, WWW}
- @uref{ftp://mysql.omnipotent.net/, FTP}
- @item
- @c keet@mordor.plig.net (Christiaan Keet)
- @image{Flags/great-britain} UK [PLiG/UK] @
- @uref{http://ftp.plig.org/pub/mysql/, WWW}
- @uref{ftp://ftp.plig.org/pub/mysql/, FTP}
- @c @item
- @c lance@uklinux.net (Lance)
- @c @image{Flags/great-britain} UK [uklinux.net] @
- @c @uref{http://mirror.uklinux.net/mysql/, WWW}
- @c @uref{ftp://mirror.uklinux.net/pub/mysql/, FTP}
- @c @item
- @c unknown
- @c @image{Flags/great-britain} UK [MicroMuse] @
- @c @uref{ftp://ftp.micromuse.co.uk/pub/packages/unix/databases/mysql/, FTP}
- @c @item
- @c Not ok 20000919; Old site (Matt)
- @c lmjm@icparc.ic.ac.uk (Lee McLoughlin)
- @c @image{Flags/great-britain} UK [SunSITE] @
- @c @uref{http://sunsite.org.uk/packages/mysql/, WWW}
- @c @uref{ftp://sunsite.org.uk/packages/mysql/, FTP}
- @item
- @c sander@paco.net (Alexander Ivanov)
- @image{Flags/ukraine} Ukraine [PACO] @
- @uref{http://mysql.paco.net.ua, WWW}
- @uref{ftp://mysql.paco.net.ua/, FTP}
- @item
- @c mizi@alkar.net (Alexander Ryumshin)
- @image{Flags/ukraine} Ukraine [ISP Alkar Teleport/Dnepropetrovsk] @
- @uref{http://mysql.dp.ua/, WWW}
- @end itemize
- @strong{North America:}
- @itemize @bullet
- @c @item
- @c Not ok 990101 (only to 981007)
- @c EMAIL: sysop@polarcom.com (Seamus Venasse)
- @c @image{Flags/canada} Canada [Polaris Computing] @
- @c @uref{http://mysql.polaris.ca/, WWW}
- @item
- @c Ok 980109
- @c EMAIL: wojtek@tryc.on.ca (Wojtjeck Tryc)
- @image{Flags/canada} Canada [Tryc] @
- @uref{http://web.tryc.on.ca/mysql/, WWW}
- @c @item
- @c not updated 990218. Added again 990918
- @c Not ok 20000919; Non-existent (Matt)
- @c EMAIL: rhooper@cyberus.ca (Roy Hooper)
- @c @image{Flags/canada} Canada [Cyberus] @
- @c @uref{http://mysql.cyberus.ca/, WWW}
- @c @uref{ftp://mysql.cyberus.ca/, FTP}
- @item
- @c EMAIL: mleber@he.net (Mike Leber)
- @c Added 980312
- @image{Flags/usa} USA [Hurricane Electric/San Jose] @
- @uref{http://mysql.he.net/, WWW}
- @item
- @c EMAIL: ask@valueclick.com (Ask Bjoern Hansen)
- @c Added 20000925
- @image{Flags/usa} USA [ValueClick, Los Angeles CA] @
- @uref{http://mysql.valueclick.com/, WWW}
- @uref{ftp://mysql.valueclick.com/mysql/, FTP}
- @c @item
- @c Not ok 20000919; Non-existent (Matt)
- @c EMAIL: meltzer@icsnet.com (Jeffrey Meltzer)
- @c Added 000108
- @c @image{Flags/usa} USA [Meltzer/New York State] @
- @c @uref{ftp://ftp.meltzer.org/pub/mysql/, FTP}
- @c @item
- @c No such directory 990830
- @c EMAIL: tps@users.buoy.com (Tim Sailer)
- @c @image{Flags/usa} USA [Buoy/New York] @
- @c @uref{http://www.buoy.com/mysql/, WWW}
- @c @item
- @c EMAIL: db@hpnc.com (Douglas Bowyer)
- @c Added 980107, removed 981124 because of 'file not found'
- @c @image{Flags/usa} USA [Hypernet Communications/Dallas] @
- @c @uref{http://epsilon.hpnc.com/mysql, WWW}
- @c @item @c **********************************
- @c Not updated 980106
- @c EX: twh@iquest.net (Thomas Holt) who no longer works there
- @c @image{Flags/usa} USA [IQuest/Indiana] @
- @c @uref{http://mirrors.iquest.net/mysql/, WWW}
- @c @item @c **********************************
- @c Only a partial mirror so we exclude it from the list
- @c EX: lindberg@id.wustl.edu (Fred Lindberg)
- @c @image{Flags/usa} USA [Washington University/St. Louis] @
- @c @uref{ftp://ftp.id.wustl.edu/pub/database/mysql/, FTP}
- @c removed 991111 -> no answer
- @c @item
- @c EMAIL: andrew@netcasting.net (Andrew Sawyers)
- @c @image{Flags/usa} USA [Netcasting/West Coast] @
- @c @uref{ftp://ftp.netcasting.net/pub/mysql/, FTP}
- @c @item
- @c No mirror! 980809 David
- @c EMAIL: savages@savages.com (Shaun Savage)
- @c @image{Flags/usa} USA [Savages/Oregon] @
- @c @uref{http://mysql.savages.com, WWW}
- @item
- @c EMAIL: tcobb@staff.circle.net (Troy Cobb)
- @image{Flags/usa} USA [Circle Net/North Carolina] @
- @uref{http://www.mysql.net, WWW}
- @c @item
- @c Not ok 20000919; Non-existent (Matt)
- @c EMAIL: paul@gina.net (Paul Vining)
- @c mirrors ftp.sunet.se
- @c @image{Flags/usa} USA [Gina net/Florida] @
- @c @uref{http://www.gina.net/mysql/, WWW}
- @c Out of date 2000-01-08 (Not updated since 1999-10)
- @c @item
- @c EMAIL: wswanson@pingzero.net (Wylie Swanson)
- @c mirrors mysql.org
- @c @image{Flags/usa} USA [pingzero/Los Angeles] @
- @c @uref{http://mysql.pingzero.net/, WWW}
- @item
- @c EMAIL: ftpkeeper@mirror.sit.wisc.edu
- @image{Flags/usa} USA [Wisconsin University/Wisconsin] @
- @uref{http://mirror.sit.wisc.edu/mysql/, WWW}
- @uref{ftp://mirror.sit.wisc.edu/mirrors/mysql/, FTP}
- @c @item
- @c Not ok 20000919; Out of date (Matt)
- @c EMAIL: ftp-admin@digex.net
- @c @image{Flags/usa} USA [DIGEX] @
- @c @uref{ftp://ftp.digex.net/pub/packages/database/mysql/, FTP}
- @item
- @c EMAIL: andrew.sawyers@thelinuxstore.com
- @image{Flags/usa} USA [LinuxWired/Scottsdale, AZ] @
- @uref{http://mysql.linuxwired.net/, WWW}
- @uref{ftp://ftp.linuxwired.net/pub/mirrors/mysql/, FTP}
- @item
- @c EMAIL: dan@surfsouth.com (Dan Muntz)
- @image{Flags/usa} USA [Venoma.Org/Valdosta, GA] @
- @uref{http://mysql.venoma.org/, WWW}
- @item
- @c EMAIL: hkind@adgrafix.com (Hans Kind)
- @image{Flags/usa} USA [adgrafix.com/Boston, MA] @
- @uref{http://mysql.adgrafix.com/, WWW}
- @end itemize
- @strong{South America:}
- @itemize @bullet
- @item
- @c Added 20001102
- @c EMAIL: nico@bannerlandia.com (Nicolas Moldavsky)
- @image{Flags/argentina} Argentina [bannerlandia.com] @
- @uref{http://mysql.bannerlandia.com.ar/, WWW}
- @uref{ftp://mysql.bannerlandia.com.ar/mirrors/mysql/, FTP}
- @c @item
- @c Not ok 20000919; Non-existent (Matt)
- @c EMAIL: gaiser@matrix.com.br (Roberto Gaiser)
- @c @image{Flags/brazil} Brazil [Matrix] @
- @c @uref{http://mysql.matrix.com.br, WWW}
- @item
- @c jpabuyer@vision.cl
- @image{Flags/chile} Chile [Vision] @
- @uref{http://mysql.vision.cl/, WWW}
- @item
- @c EMAIL: bartschm@psi.com (Marcelo Bartsch)
- @image{Flags/chile} Chile [PSINet] @
- @uref{http://mysql.psinet.cl/, WWW}
- @uref{ftp://ftp.psinet.cl/pub/database/mysql/, FTP}
- @item
- @c EMAIL: jpabuyer@tecnoera.com (Juan Pablo Abuyeres)
- @image{Flags/chile} Chile [Tecnoera] @
- @uref{http://mysql.tecnoera.com/, WWW}
- @c @item
- @c Removed 990730
- @c @c EMAIL: dan@amerikanclaris.com (Danilo Lotina F.)
- @c @image{Flags/chile} Chile [Amerikanclaris] @
- @c @uref{http://www.labs.amerikanclaris.cl/mysql, WWW}
- @c @uref{ftp://ftp.amerikanclaris.cl/pub/mysql, FTP}
- @end itemize
- @strong{Asia:}
- @itemize @bullet
- @item
- @c EMAIL: mirnshi@263.net (Meng Lingbo)
- @image{Flags/china} China [Freecode] @
- @uref{http://www.freecode.net.cn/mirror/mysql/, WWW}
- @item
- @c EMAIL: yusun@atwell.co.jp (yu sun)
- @image{Flags/china} China [linuxforum.net] @
- @uref{http://www2.linuxforum.net/mirror/mysql/, WWW}
- @item
- @c EMAIL: Vincent_Fong@innovator.com.hk (Vincent Fong)
- @image{Flags/china} China [ISL/Hong Kong] @
- @uref{http://mysql.islnet.net, WWW}
- @item
- @c EMAIL: marquischan@hotmail.com (Marquis Chan)
- @image{Flags/china} China [TraLand.com/Hong Kong] @
- @uref{http://www.traland.com/mysql/, WWW}
- @c @item
- @c Not ok 20000919; Non-existent (Matt)
- @c EMAIL: george@netfirm.net (Hongsheng Zhu)
- @c @image{Flags/china} China [Netfirm] @
- @c @uref{http://mysql.netfirm.net, WWW}
- @c @item
- @c Not ok 20000919; Old site (Matt)
- @c EMAIL: ahmlhs@nmsvr.chosun.com (Ho-sun Lee)
- @c @image{Flags/south-korea} South Korea [KREONet] @
- @c @uref{http://linux.kreonet.re.kr/mysql/, WWW}
- @item
- @c EMAIL: jasper@webiiz.com (Kang, Tae-jin)
- @image{Flags/south-korea} South Korea [Webiiz] @
- @uref{http://mysql.webiiz.com/, WWW}
- @item
- @c EMAIL: hollywar@holywar.net (Oh Junseon)
- @image{Flags/south-korea} South Korea [PanworldNet] @
- @uref{http://mysql.holywar.net/, WWW}
- @c @item
- @c ftp -> remove old files
- @c EX: ahmlhs@nmsvr.chosun.com (Ho-sun Lee)
- @c @image{Flags/south-korea} South Korea [KREONet] @
- @c @uref{ftp://linux.kreonet.re.kr/pub/tools/db/mysql/, FTP}
- @item
- @c Ok 980805
- @c EMAIL: takeshi@SoftAgency.co.jp
- @image{Flags/japan} Japan [Soft Agency] @
- @uref{http://www.softagency.co.jp/MySQL, WWW}
- @item
- @c EMAIL: takafumi@u-aizu.ac.jp (Takafumi Hayashi)
- @image{Flags/japan} Japan [u-aizu.ac.jp/Aizu] @
- @uref{ftp://ftp.u-aizu.ac.jp/ftp/pub/dbms/mysql/mysql.com, FTP}
- @c @item
- @c Ok 980109 Removed 990730
- @c EMAIL: satoshi@HappySize.co.jp (Satoshi TATSUOKA)
- @c @image{Flags/japan} Japan [HappySize] @
- @c @uref{http://www.happysize.co.jp/mysql/, WWW}
- @c @uref{ftp://ftp.happysize.co.jp/pub/mysql/, FTP}
- @c @item
- @c Ok 981204
- @c Not ok 20000919; Old site (Matt)
- @c EMAIL: hiroyuki@nucba.ac.jp (hiroyuki kurimoto)
- @c @image{Flags/japan} Japan [Nagoya Syouka University] @
- @c @uref{http://mirror.nucba.ac.jp/mirror/mysql, WWW}
- @c @uref{ftp://mirror.nucba.ac.jp/mirror/mysql, FTP}
- @c @item
- @c Removed 990308
- @c EMAIL: terence@com5.net (Terence Chan)
- @c @image{Flags/singapore} Singapore [Com5 Productions] @
- @c @uref{http://mysql.com5.net, WWW}
- @c @uref{ftp://ftp.com5.net/pub/mysql, FTP}
- @item
- @c EMAIL: csy@hjc.edu.sg
- @image{Flags/singapore} Singapore [HJC] @
- @uref{http://mysql.hjc.edu.sg, WWW}
- @uref{ftp://ftp.hjc.edu.sg/mysql, FTP}
- @c @item
- @c Not ok 20000919; Old site (Matt)
- @c 991118: Removed because a user complained about that the page contains
- @c nothing about MySQL. 991119: Added again because it is a mirror again
- @c EMAIL: dean@ht.net.tw (Dean Lin)
- @c @image{Flags/taiwan} Taiwan [HT] @
- @c @uref{http://mysql.ht.net.tw, WWW}
- @item
- @c EMAIL: linda@ttn.com.tw (Linda Hu)
- @image{Flags/taiwan} Taiwan [TTN] @
- @uref{http://mysql.ttn.net, WWW}
- @c @item
- @c Ok 980321 No connect -> removed 990730
- @c EMAIL: tby@ccca.nctu.edu.tw (Bao-Yi Tuang)
- @c @image{Flags/taiwan} Taiwan [NCTU] @
- @c @uref{http://mysql.taconet.com.tw, WWW}
- @c @item
- @c Out of date 990905 (~2 months)
- @c @item @c **********************************
- @c Error 980106
- @c EX: WolfySu@acer.net (Wolfy Su)
- @c @image{Flags/taiwan} Taiwan [Acer] @
- @c @uref{http://mysql.acer.net/, WWW}
- @c @item @c **********************************
- @c files to delete
- @c EX: service@wownet.net
- @c @image{Flags/taiwan} Taiwan [Wownet] @
- @c @uref{ftp://ftp.wownet.net/mysql/, FTP}
- @c @item @c **********************************
- @c No conntact 980106
- @c EX: serge@oneway.net
- @c @image{Flags/taiwan} Taiwan [Oneway] @
- @c @uref{ftp://ftp.oneway.com.tw/pub/mysql/, FTP}
- @item
- @c Added 20001031
- @c EMAIL: ijliao@php.nctu.edu.tw (Ying-Chieh Liao)
- @image{Flags/taiwan} Taiwan [nctu.edu/HsinChu] @
- @uref{http://mysql.nctu.edu.tw/, WWW}
- @end itemize
- @strong{Australia:}
- @itemize @bullet
- @item
- @c Added 980610
- @c EMAIL: jason@dstc.edu.au (Jason Andrade)
- @image{Flags/australia} Australia [AARNet/Queensland] @
- @uref{http://mirror.aarnet.edu.au/mysql, WWW}
- @uref{ftp://mirror.aarnet.edu.au/pub/mysql, FTP}
- @c @item
- @c Added 980805. Removed 000102 'no such directory'
- @c EMAIL: sdd@ntccc.tas.gov.au (Scott Donovan)
- @c @image{Flags/australia} Australia [Tas] @
- @c @uref{http://ftp.tas.gov.au/mysql, WWW}
- @c @uref{ftp://ftp.tas.gov.au/pub/mysql, FTP}
- @c @item
- @c Ok 980623
- @c Not ok 20000919; Old site (Matt)
- @c EMAIL: samh@bluep.com (Sam Hadzajlic)
- @c @image{Flags/australia} Australia [Blue Planet/Melbourne] @
- @c @uref{http://mysql.bluep.com/, WWW}
- @c removed because ftp was not working 990729 & 30
- @c @uref{ftp://mysql.bluep.com/pub/mirror1/mysql/, FTP}
- @c @item
- @c Added 990531
- @c EMAIL: gavin@itworks.com.au (Gavin Cameron)
- @c @image{Flags/australia} Australia [ITworks Consulting/Victoria] @
- @c @uref{http://mysql.itworks.com.au, WWW}
- @c @item
- @c 980610 Only the toplevel dir!
- @c EMAIL: lucifer@maths.uq.edu.au (David Conran)
- @c @image{Flags/australia} Australia FTP @
- @c @uref{ftp://ftp.sage-au.org.au/pub/database/mysql, [Sage]}
- @end itemize
- @strong{Africa:}
- @itemize @bullet
- @item
- @c EMAIL: ftp-admin@mweb.com (Warren Baker)
- @image{Flags/south-africa1} South-Africa [Mweb] @
- @uref{http://www.mysql.mweb.co.za/, WWW}
- @item
- @c Ok 981010
- @c EMAIL: oskar@is.co.za (Oskar Pearson)
- @image{Flags/south-africa1} South Africa [The Internet Solution/Johannesburg] @
- @uref{ftp://ftp.is.co.za/linux/mysql/, FTP}
- @end itemize
- @c END_OF_MIRROR_LISTING
- @cindex operating systems, supported
- @cindex native thread support
- @cindex thread support
- @cindex process support
- @cindex support, for operating systems
- @node Which OS, Which version, Getting MySQL, Installing
- @section Operating Systems Supported by MySQL
- We use GNU Autoconf, so it is possible to port @strong{MySQL} to all modern
- systems with working Posix threads and a C++ compiler. (To compile only the
- client code, a C++ compiler is required but not threads.) We use and develop
- the software ourselves primarily on Sun Solaris (Versions 2.5 - 2.7) and
- RedHat Linux Version 6.x.
- Note that for many operating systems, the native thread support works only
- in the latest versions. @strong{MySQL} has been reported to compile
- sucessfully on the following operating system/thread package combinations:
- @itemize @bullet
- @item
- AIX 4.x with native threads. @xref{IBM-AIX}.
- @item
- BSDI 2.x with the included MIT-pthreads package. @xref{BSDI}.
- @item
- BSDI 3.0, 3.1 and 4.x with native threads. @xref{BSDI}.
- @item
- DEC Unix 4.x with native threads. @xref{Alpha-DEC-UNIX}.
- @item
- FreeBSD 2.x with the included MIT-pthreads package. @xref{FreeBSD}.
- @item
- FreeBSD 3.x and 4.x with native threads. @xref{FreeBSD}.
- @item
- HP-UX 10.20 with the included MIT-pthreads package. @xref{HP-UX 10.20}.
- @item
- HP-UX 11.x with the native threads. @xref{HP-UX 11.x}.
- @item
- Linux 2.0+ with LinuxThreads 0.7.1+ or @code{glibc} 2.0.7+ . @xref{Linux}.
- @item
- Mac OS X Server. @xref{Mac OS X}.
- @item
- NetBSD 1.3/1.4 Intel and NetBSD 1.3 Alpha (Requires GNU make). @xref{NetBSD}.
- @item
- OpenBSD > 2.5 with native therads. OpenBSD < 2.5 with the included
- MIT-pthreads package. @xref{OpenBSD}.
- @item
- OS/2 Warp 3, FixPack 29 and OS/2 Warp 4, FixPack 4. @xref{OS/2}.
- @item
- SGI Irix 6.x with native threads. @xref{SGI-Irix}.
- @item
- Solaris 2.5 and above with native threads on SPARC and x86. @xref{Solaris}.
- @item
- SunOS 4.x with the included MIT-pthreads package. @xref{Solaris}.
- @item
- SCO OpenServer with a recent port of the FSU Pthreads package. @xref{SCO}.
- @item
- SCO UnixWare 7.0.1. @xref{SCO Unixware}.
- @item
- Tru64 Unix
- @item
- Win95, Win98, NT, and Win2000. @xref{Windows}.
- @end itemize
- @cindex MySQL binary distribution
- @cindex MySQL source distribution
- @cindex release numbers
- @cindex version, choosing
- @cindex choosing, a MySQL version
- @node Which version, Many versions, Which OS, Installing
- @section Which MySQL Version to Use
- The first decision to make is whether you want to use the latest development
- release or the last stable release:
- @itemize @bullet
- @item
- Normally, if you are beginning to use @strong{MySQL} for the first time
- or trying to port it to some system for which there is no binary
- distribution, we recommend going with the development release (currently
- Version @value{mysql_version}. This is because there are usually no really
- serious bugs in the development release, and you can easily test it on
- your machine with the @code{crash-me} and benchmark tests.
- @xref{Benchmarks}. Note that all @strong{MySQL} releases are
- checked with the @strong{MySQL} benchmarks and an extensive test suite
- before each release.
- @item
- Otherwise, if you are running an old system and want to upgrade, but
- don't want to take chances with the development version, you should
- upgrade to the latest in the same branch you are using (where only the
- last version number is newer than yours). We have tried to fix only
- fatal bugs and make small, relatively safe changes to that version.
- @end itemize
- The second decision to make is whether you want to use a source
- distribution or a binary distribution. In most cases you should probably
- use a binary distribution, if there exist one for your platform, as this
- is generally, it will be easier to install than a source distribution.
- In the following cases you will probably be better of with a source
- installation:
- @itemize @bullet
- @item
- If you want to install @strong{MySQL} at some explicit location. (The standard
- binary distributions are 'ready to run' at any place, but you may want
- to get even more flexibility).
- @item
- If you want to configure @code{mysqld} with some extra feature that is NOT in
- the standard binary distributions. Here is a list of the most common
- extra options that you may want to use
- @itemize @bullet
- @item --with-berkeley-db
- @item --with-raid
- @item --with-libwrap
- @item --with-named-z-lib (This is done for some of the binaries)
- @item --with-debugging[=full]
- @end itemize
- @item
- The default binary distribution is normally compiled with support
- for all characters sets and should work on a variety of processors from
- the same processor family.
- If you want a faster @strong{MySQL} server you may want to recompile it
- with support for only the character sets you need, use a better compiler
- (like pgcc) or use compiler options that are better optimized for your
- processor.
- @item
- If you have found a bug and reported it to the @strong{MySQL}
- development team you will probably got a patch that you need to apply to
- the source distribution to get the bug fixed.
- @item
- If you want to read (and/or modify) the C and C++ code that makes up
- @strong{MySQL}, you should get a source distribution. The source code is
- always the ultimate manual. Source distributions also contain more
- tests and examples than binary distributions.
- @end itemize
- @cindex naming, releases of MySQL
- @cindex releases, naming scheme
- The @strong{MySQL} naming scheme uses release numbers that consist of three
- numbers and a suffix. For example, a release name like
- @code{mysql-3.21.17-beta} is interpreted like this:
- @itemize @bullet
- @item
- The first number (@code{3}) describes the file format. All
- Version 3 releases have the same file format. When a Version 4 appears, every
- table will have to be converted to the new format (nice tools for this will
- be included, of course.)
- @item
- The second number (@code{21}) is the release level. Normally there are two to
- choose from. One is the release/stable branch (currently @code{22}) and the
- other is the development branch (currently @code{23}) . Normally both are
- stable, but the development version may have quirks, missing documentation on
- new features, or may fail to compile on some systems.
- @item
- The third number (@code{17}) is the version number within the
- release level. This is incremented for each new distribution. Usually you
- want the latest version for the release level you have choosen.
- @item
- The suffix (@code{beta}) indicates the stability level of the release.
- The possible suffixes are:
- @itemize @minus
- @item @code{alpha} indicates that the release contains some large section of
- new code that hasn't been 100% tested. Known bugs (usually there are none)
- should be documented in the News section. @xref{News}. There are also new
- commands and extensions in most alpha releases. Active development that
- may involve major code changes can occur on an alpha release, but everything
- will be tested before doing a release. There should be no known bugs in any
- @strong{MySQL} release.
- @item
- @code{beta} means that all new code has been tested. No major new
- features that could cause corruption on old code are added. There should
- be no known bugs. A version changes from alpha to beta when there
- haven't been any reported fatal bugs within an alpha version for at least
- a month and we don't plan to add any features that could make any old command
- more unreliable.
- @item
- @code{gamma} is a beta that has been around a while and seems to work fine.
- Only minor fixes are added. This is what many other companies call a release.
- @item
- If there is no suffix, it means that the version has been run for a
- while at many different sites with no reports of bugs other than
- platform-specific bugs. Only critical bug fixes are applied to the
- release. This is what we call a stable release.
- @end itemize
- @end itemize
- All versions of @strong{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.
- @cindex releases, testing
- @cindex testing, of MySQL releases
- Note that all releases have been tested at least with:
- @table @asis
- @item An internal test suite
- This is part of a production system for a customer. It has many tables with
- hundreds of megabytes of data.
- @item The @strong{MySQL} benchmark suite
- This runs a range of common queries. It is also a test to see whether the
- latest batch of optimizations actually made the code faster.
- @xref{Benchmarks}.
- @item The @code{crash-me} test
- This tries to determine what features the database supports and what its
- capabilities and limitations are.
- @xref{Benchmarks}.
- @end table
- Another test is that we use the newest @strong{MySQL} version in our internal
- production environment, on at least one machine. We have more than 100
- gigabytes of data to work with.
- @cindex releases, updating
- @cindex updating, releases of MySQL
- @node Many versions, Installation layouts, Which version, Installing
- @section How and When Updates Are Released
- @strong{MySQL} is evolving quite rapidly here at MySQL AB and we want
- to share this with other @strong{MySQL} users. We try to make a release
- when we have very useful features that others seem to have a need for.
- We also try to help out users who request features that are easy to
- implement. We take note of what our licensed users want to have, and
- we especially take note of what our extended e-mail supported customers
- want and try to help them out.
- No one has to download a new release. The News section will tell you if
- the new release has something you really want. @xref{News}.
- We use the following policy when updating @strong{MySQL}:
- @itemize @bullet
- @item
- 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.
- @item
- Stable tested releases are meant to appear about 1-2 times a year, but
- if small bugs are found, a release with only bug fixes will be released.
- @item
- Working releases are meant to appear about every 1-8 weeks.
- @item
- Binary distributions for some platforms will be made by us for major releases.
- Other people may make binary distributions for other systems but probably
- less frequently.
- @item
- We usually make patches available as soon as we have located and fixed
- small bugs.
- @item
- For non-critical but annoying bugs, we will make patches available if they
- are sent to us. Otherwise we will combine many of them into a larger
- patch.
- @item
- If there is, by any chance, a fatal bug in a release we will make a new
- release as soon as possible. We would like other companies to do this,
- too.
- @end itemize
- The current stable release is Version 3.23; We have already moved active
- development to Version 4.0. Bugs will still be fixed in the stable version.
- We don't believe in a complete freeze, as this also leaves out bug fixes
- and things that ``must be done.'' ``Somewhat frozen'' means that we may
- add small things that ``almost surely will not affect anything that's
- already working.''
- @node Installation layouts, Installing binary, Many versions, Installing
- @section Installation Layouts
- @cindex installation layouts
- @cindex layout of installation
- @cindex directory structure, default
- @cindex default installation location
- This section describes the default layout of the directories created by
- installing binary and source distributions.
- A binary distribution is installed by unpacking it at the installation
- location you choose (typically @file{/usr/local/mysql}) and creates the
- following directories in that location:
- @multitable @columnfractions .3 .7
- @item @strong{Directory} @tab @strong{Contents of directory}
- @item @file{bin} @tab Client programs and the @code{mysqld} server
- @item @file{data} @tab Log files, databases
- @item @file{include} @tab Include (header) files
- @item @file{lib} @tab Libraries
- @item @file{scripts} @tab @code{mysql_install_db}
- @item @file{share/mysql} @tab Error message files
- @item @file{sql-bench} @tab Benchmarks
- @end multitable
- A source distribution is installed after you configure and compile it. By
- default, the installation step installs files under @file{/usr/local}, in the
- following subdirectories:
- @multitable @columnfractions .3 .7
- @item @strong{Directory} @tab @strong{Contents of directory}
- @item @file{bin} @tab Client programs and scripts
- @item @file{include/mysql} @tab Include (header) files
- @item @file{info} @tab Documentation in Info format
- @item @file{lib/mysql} @tab Libraries
- @item @file{libexec} @tab The @code{mysqld} server
- @item @file{share/mysql} @tab Error message files
- @item @file{sql-bench} @tab Benchmarks and @code{crash-me} test
- @item @file{var} @tab Databases and log files
- @end multitable
- Within an installation directory, the layout of a source installation differs
- from that of a binary installation in the following ways:
- @itemize @bullet
- @item
- The @code{mysqld} server is installed in the @file{libexec}
- directory rather than in the @file{bin} directory.
- @item
- The data directory is @file{var} rather than @file{data}.
- @item
- @code{mysql_install_db} is installed in the @file{/usr/local/bin} directory
- rather than in @file{/usr/local/mysql/scripts}.
- @item
- The header file and library directories are @file{include/mysql} and
- @file{lib/mysql} rather than @file{include} and @file{lib}.
- @end itemize
- You can create your own binary installation from a compiled source
- distribution by executing the script @file{scripts/make_binary_distribution}.
- @cindex installing, binary distribution
- @cindex binary distributions, installing
- @node Installing binary, Installing source, Installation layouts, Installing
- @section Installing a MySQL Binary Distribution
- @menu
- * Linux-RPM:: Linux RPM files
- * Building clients:: Building client programs
- * Binary install system issues:: System-specific issues
- @end menu
- You need the following tools to install a @strong{MySQL} binary distribution:
- @itemize @bullet
- @item
- GNU @code{gunzip} to uncompress the distribution.
- @item
- A reasonable @code{tar} to unpack the distribution. GNU @code{tar} is
- known to work. Sun @code{tar} is known to have problems.
- @end itemize
- @cindex RPM, defined
- @cindex RedHat Package Manager
- An alternative installation method under Linux is to use RPM (RedHat Package
- Manager) distributions. @xref{Linux-RPM}.
- @c texi2html fails to split chapters if I use strong for all of this.
- If you run into problems, @strong{PLEASE ALWAYS USE} @code{mysqlbug} when
- posting questions to @email{mysql@@lists.mysql.com}. Even if the problem
- isn't a bug, @code{mysqlbug} gathers system information that will help others
- solve your problem. By not using @code{mysqlbug}, you lessen the likelihood
- of getting a solution to your problem! You will find @code{mysqlbug} in the
- @file{bin} directory after you unpack the distribution. @xref{Bug reports}.
- @cindex commands, for binary distribution
- The basic commands you must execute to install and use a @strong{MySQL}
- binary distribution are:
- @example
- 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 mysql-VERSION-OS mysql
- shell> cd mysql
- shell> scripts/mysql_install_db
- shell> chown -R root /usr/local/mysql
- shell> chown -R mysql /usr/local/mysql/var
- shell> chgrp -R mysql /usr/local/mysql
- shell> chown -R root /usr/local/mysql/bin/
- shell> bin/safe_mysqld --user=mysql &
- @end example
- @cindex adding, new users
- @cindex new users, adding
- @cindex users, adding
- You can add new users using the @code{bin/mysql_setpermission} script if
- you install the @code{DBI} and @code{Msql-Mysql-modules} Perl modules.
- A more detailed description follows.
- To install a binary distribution, follow the steps below, then proceed
- to @ref{Post-installation}, for post-installation setup and testing:
- @enumerate
- @item
- Pick the directory under which you want to unpack the distribution, and move
- into it. In the example below, we unpack the distribution under
- @file{/usr/local} and create a directory @file{/usr/local/mysql} into which
- @strong{MySQL} is installed. (The following instructions therefore assume
- you have permission to create files in @file{/usr/local}. If that directory
- is protected, you will need to perform the installation as @code{root}.)
- @item
- Obtain a distribution file from one of the sites listed in
- @ref{Getting MySQL, , Getting @strong{MySQL}}.
- @strong{MySQL} binary distributions are provided as compressed @code{tar}
- archives and have names like @file{mysql-VERSION-OS.tar.gz}, where
- @code{VERSION} is a number (for example, @code{3.21.15}), and @code{OS}
- indicates the type of operating system for which the distribution is intended
- (for example, @code{pc-linux-gnu-i586}).
- @item
- Add a user and group for @code{mysqld} to run as:
- @example
- shell> groupadd mysql
- shell> useradd -g mysql mysql
- @end example
- These commands add the @code{mysql} group and the @code{mysql} user. The
- syntax for @code{useradd} and @code{groupadd} may differ slightly on different
- Unixes. They may also be called @code{adduser} and @code{addgroup}. You may
- wish to call the user and group something else instead of @code{mysql}.
- @item
- Change into the intended installation directory:
- @example
- shell> cd /usr/local
- @end example
- @item
- Unpack the distribution and create the installation directory:
- @example
- shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
- shell> ln -s mysql-VERSION-OS mysql
- @end example
- The first command creates a directory named @file{mysql-VERSION-OS}. The
- second command makes a symbolic link to that directory. This lets you refer
- more easily to the installation directory as @file{/usr/local/mysql}.
- @item
- Change into the installation directory:
- @example
- shell> cd mysql
- @end example
- You will find several files and subdirectories in the @code{mysql} directory.
- The most important for installation purposes are the @file{bin} and
- @file{scripts} subdirectories.
- @table @file
- @item bin
- @tindex PATH environment variable
- @tindex Environment variable, PATH
- This directory contains client programs and the server
- You should add the full pathname of this directory to your
- @code{PATH} environment variable so that your shell finds the @strong{MySQL}
- programs properly. @xref{Environment variables}.
- @item scripts
- This directory contains the @code{mysql_install_db} script used to initialize
- the server access permissions.
- @end table
- @item
- If you would like to use @code{mysqlaccess} and have the @strong{MySQL}
- distribution in some nonstandard place, you must change the location where
- @code{mysqlaccess} expects to find the @code{mysql} client. Edit the
- @file{bin/mysqlaccess} script at approximately line 18. Search for a line
- that looks like this:
- @example
- $MYSQL = '/usr/local/bin/mysql'; # path to mysql executable
- @end example
- Change the path to reflect the location where @code{mysql} actually is
- stored on your system. If you do not do this, you will get a @code{Broken
- pipe} error when you run @code{mysqlaccess}.
- @item
- Create the @strong{MySQL} grant tables (necessary only if you haven't
- installed @strong{MySQL} before):
- @example
- shell> scripts/mysql_install_db
- @end example
- Note that @strong{MySQL} versions older than Version 3.22.10 started the
- @strong{MySQL} server when you run @code{mysql_install_db}. This is no
- longer true!
- @item
- Change ownership of binaries to @code{root} and ownership of the data
- directory to the user that you will run @code{mysqld} as:
- @example
- shell> chown -R root /usr/local/mysql
- shell> chown -R mysql /usr/local/mysql/var
- shell> chgrp -R mysql /usr/local/mysql
- @end example
- The first command changes the @code{owner} attribute of the files to the
- @code{root} user, the second one changes the @code{owner} attribute of the
- data directory to the @code{mysql} user, and the third one changes the
- @code{group} attribute to the @code{mysql} group.
- @item
- If you want to install support for the Perl @code{DBI}/@code{DBD} interface,
- see @ref{Perl support}.
- @item
- If you would like @strong{MySQL} to start automatically when you boot your
- machine, you can copy @code{support-files/mysql.server} to the location where
- your system has its startup files. More information can be found in the
- @code{support-files/mysql.server} script itself and in @ref{Automatic
- start}.
- @end enumerate
- After everything has been unpacked and installed, you should initialize
- and test your distribution.
- You can start the @strong{MySQL} server with the following command:
- @example
- shell> bin/safe_mysqld --user=mysql &
- @end example
- @xref{safe_mysqld}.
- @xref{Post-installation}.
- @cindex RPM file
- @cindex RedHat Package Manager
- @c This node name is special
- @node Linux-RPM, Building clients, Installing binary, Installing binary
- @subsection Linux RPM Notes
- The recommended way to install @strong{MySQL} on Linux is by using an RPM
- file. The @strong{MySQL} RPMs are currently being built on a RedHat Version
- 6.2 system but should work on other versions of Linux that support @code{rpm}
- and use @code{glibc}.
- If you have problems with an RPM file, for example, if you receive the error
- ``@code{Sorry, the host 'xxxx' could not be looked up}'', see
- @ref{Binary notes-Linux}.
- The RPM files you may want to use are:
- @itemize @bullet
- @item @code{MySQL-VERSION.i386.rpm}
- The @strong{MySQL} server. You will need this unless you only want to
- connect to a @strong{MySQL} server running on another machine.
- @item @code{MySQL-client-VERSION.i386.rpm}
- The standard @strong{MySQL} client programs. You probably always want to
- install this package.
- @item @code{MySQL-bench-VERSION.i386.rpm}
- Tests and benchmarks. Requires Perl and msql-mysql-modules RPMs.
- @item @code{MySQL-devel-VERSION.i386.rpm}
- Libraries and include files needed if you want to compile other
- @strong{MySQL} clients, such as the Perl modules.
- @item @code{MySQL-VERSION.src.rpm}
- This contains the source code for all of the above packages. It can also
- be used to try to build RPMs for other architectures (for example, Alpha
- or SPARC).
- @end itemize
- To see all files in an RPM package, run:
- @example
- shell> rpm -qpl MySQL-VERSION.i386.rpm
- @end example
- To perform a standard minimal installation, run:
- @example
- shell> rpm -i MySQL-VERSION.i386.rpm MySQL-client-VERSION.i386.rpm
- @end example
- To install just the client package, run:
- @example
- shell> rpm -i MySQL-client-VERSION.i386.rpm
- @end example
- The RPM places data in @file{/var/lib/mysql}. The RPM also creates the
- appropriate entries in @file{/etc/rc.d/} to start the server automatically
- at boot time. (This means that if you have performed a previous
- installation, you may want to make a copy of your previously installed
- @strong{MySQL} startup file if you made any changes to it, so you don't lose
- your changes.)
- After installing the RPM file(s), the @file{mysqld} daemon should be running
- and you should now be able to start using @strong{MySQL}.
- @xref{Post-installation}.
- If something goes wrong, you can find more information in the binary
- installation chapter. @xref{Installing binary}.
- @cindex client programs, building
- @cindex linking
- @cindex building, client programs
- @cindex programs, client
- @node Building clients, Binary install system issues, Linux-RPM, Installing binary
- @subsection Building Client Programs
- If you compile @strong{MySQL} clients that you've written yourself or that
- you obtain from a third party, they must be linked using the
- @code{-lmysqlclient} option on the link command. You may also need to
- specify a @code{-L} option to tell the linker where to find the library. For
- example, if the library is installed in @file{/usr/local/mysql/lib}, use
- @code{-L/usr/local/mysql/lib -lmysqlclient} on the link command.
- For clients that use @strong{MySQL} header files, you may need to specify a
- @code{-I} option when you compile them (for example,
- @code{-I/usr/local/mysql/include}), so the compiler can find the header
- files.
- @node Binary install system issues, , Building clients, Installing binary
- @subsection System-specific Issues
- @menu
- * Binary notes-Linux:: Linux notes for binary distribution
- * Binary notes-HP-UX:: HP-UX notes for binary distribution
- @end menu
- The following sections indicate some of the issues that have been observed
- on particular systems when installing @strong{MySQL} from a binary
- distribution.
- @cindex binary distributions, on Linux
- @cindex Linux, binary distribution
- @node Binary notes-Linux, Binary notes-HP-UX, Binary install system issues, Binary install system issues
- @subsubsection Linux Notes for Binary Distributions
- @strong{MySQL} needs at least Linux Version 2.0.
- The binary release is linked with @code{-static}, which means you do not
- normally need to worry about which version of the system libraries you
- have. You need not install LinuxThreads, either. A program linked with
- @code{-static} is slightly bigger than a dynamically linked program but
- also slightly faster (3-5%). One problem, however, is that you can't use
- user-definable functions (UDFs) with a statically linked program. If
- you are going to write or use UDF functions (this is something only for
- C or C++ programmers), you must compile @strong{MySQL} yourself, using
- dynamic linking.
- If you are using a @code{libc}-based system (instead of a @code{glibc2}
- system), you will probably get some problems with hostname resolving and
- getpwnam() with the binary release. (This is because @code{glibc}
- unfortunately depends on some external libraries to resolve hostnames
- and getpwent() , even when compiled with @code{-static}). In this case
- you probably get the following error message when you run
- @code{mysql_install_db}:
- @example
- Sorry, the host 'xxxx' could not be looked up
- @end example
- or the following error when you try to run mysqld with the @code{--user}
- option:
- @example
- getpwnam: No such file or directory
- @end example
- You can solve this problem in one of the following ways:
- @itemize @bullet
- @item
- Get a @strong{MySQL} source distribution (an RPM or the @code{tar.gz}
- distribution) and install this instead.
- @item
- Execute @code{mysql_install_db --force}; This will not execute the
- @code{resolveip} test in @code{mysql_install_db}. The downside is that
- you can't use host names in the grant tables; you must use IP numbers
- instead (except for @code{localhost}). If you are using an old @strong{MySQL}
- release that doesn't support @code{--force}, you have to remove the
- @code{resolveip} test in @code{mysql_install} with an editor.
- @item
- Start mysqld with @code{su} instead of using @code{--user}.
- @end itemize
- The Linux-Intel binary and RPM releases of @strong{MySQL} are configured
- for the highest possible speed. We are always trying to use the fastest
- stable compiler available.
- @strong{MySQL} Perl support requires Version Perl 5.004_03 or newer.
- On some Linux 2.2 versions, you may get the error @code{Resource
- temporarily unavailable} when you do a lot of new connections to a
- @code{mysqld} server over TCP/IP.
- The problem is that Linux has a delay between when you close a TCP/IP
- socket and until this is actually freed by the system. As there is only
- room for a finite number of TCP/IP slots, you will get the above error if
- you try to do too many new TCP/IP connections during a small time, like
- when you run the @strong{MySQL} @file{test-connect} benchmark over
- TCP/IP.
- We have mailed about this problem a couple of times to different Linux
- mailing lists but have never been able to resolve this properly.
- The only known 'fix' to this problem is to use persistent connections in
- your clients or use sockets, if you are running the database server
- and clients on the same machine. We hope that the @code{Linux 2.4}
- kernel will fix this problem in the future.
- @cindex HP-UX, binary distribution
- @cindex binary distributions, on HP-UX
- @node Binary notes-HP-UX, , Binary notes-Linux, Binary install system issues
- @subsubsection HP-UX Notes for Binary Distributions
- Some of the binary distributions of @strong{MySQL} for HP-UX is
- distributed as an HP depot file and as a tar file. To use the depot
- file you must be running at least HP-UX 10.x to have access to HP's
- software depot tools.
- The HP version of @strong{MySQL} was compiled on an HP 9000/8xx server
- under HP-UX 10.20, and uses MIT-pthreads. It is known to work
- well under this configuration.
- @strong{MySQL} Version 3.22.26 and newer can also be built with HP's native
- thread package.
- Other configurations that may work:
- @itemize @bullet
- @item
- HP 9000/7xx running HP-UX 10.20+
- @item
- HP 9000/8xx running HP-UX 10.30
- @end itemize
- The following configurations almost definitely won't work:
- @itemize @bullet
- @item
- HP 9000/7xx or 8xx running HP-UX 10.x where x < 2
- @item
- HP 9000/7xx or 8xx running HP-UX 9.x
- @end itemize
- To install the distribution, use one of the commands below, where
- @code{/path/to/depot} is the full pathname of the depot file:
- @itemize @bullet
- @item
- To install everything, including the server, client and development tools:
- @example
- shell> /usr/sbin/swinstall -s /path/to/depot mysql.full
- @end example
- @item
- To install only the server:
- @example
- shell> /usr/sbin/swinstall -s /path/to/depot mysql.server
- @end example
- @item
- To install only the client package:
- @example
- shell> /usr/sbin/swinstall -s /path/to/depot mysql.client
- @end example
- @item
- To install only the development tools:
- @example
- shell> /usr/sbin/swinstall -s /path/to/depot mysql.developer
- @end example
- @end itemize
- The depot places binaries and libraries in @file{/opt/mysql} and data in
- @file{/var/opt/mysql}. The depot also creates the appropriate entries in
- @file{/etc/init.d} and @file{/etc/rc2.d} to start the server automatically
- at boot time. Obviously, this entails being @code{root} to install.
- To install the HP-UX tar.gz distribution, you must have a copy of GNU
- @code{tar}.
- @cindex installing, source distribution
- @cindex source distribution, installing
- @cindex installation overview
- @node Installing source, Installing source tree, Installing binary, Installing
- @section Installing a MySQL Source Distribution
- You need the following tools to build and install @strong{MySQL} from source:
- @itemize @bullet
- @item
- GNU @code{gunzip} to uncompress the distribution.
- @item
- A reasonable @code{tar} to unpack the distribution. GNU @code{tar} is
- known to work. Sun @code{tar} is known to have problems.
- @item
- A working ANSI C++ compiler. @code{gcc} >= 2.8.1, @code{egcs} >=
- 1.0.2, SGI C++, and SunPro C++ are some of the compilers that are known to
- work. @code{libg++} is not needed when using @code{gcc}. @code{gcc}
- 2.7.x has a bug that makes it impossible to compile some perfectly legal
- C++ files, such as @file{sql/sql_base.cc}. If you only have @code{gcc} 2.7.x,
- you must upgrade your @code{gcc} to be able to compile @strong{MySQL}.
- @code{gcc} >= 2.95.2 is recommended when compiling @strong{MySQL}
- Version 3.23.x.
- @item
- A good @code{make} program. GNU @code{make} is always recommended and is
- sometimes required. If you have problems, we recommend trying GNU
- @code{make} 3.75 or newer.
- @end itemize
- @c texi2html fails to split chapters if I use strong for all of this.
- If you run into problems, @strong{PLEASE ALWAYS USE @code{mysqlbug}} when
- posting questions to @email{mysql@@lists.mysql.com}. Even if the problem
- isn't a bug, @code{mysqlbug} gathers system information that will help others
- solve your problem. By not using @code{mysqlbug}, you lessen the likelihood
- of getting a solution to your problem! You will find @code{mysqlbug} in the
- @file{scripts} directory after you unpack the distribution. @xref{Bug
- reports}.
- @menu
- * Quick install:: Quick installation overview
- * Applying patches:: Applying patches
- * configure options:: Typical @code{configure} options
- @end menu
- @node Quick install, Applying patches, Installing source, Installing source
- @subsection Quick Installation Overview
- The basic commands you must execute to install a @strong{MySQL} source
- distribution are:
- @example
- 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> scripts/mysql_install_db
- shell> chown -R root /usr/local/mysql
- shell> chown -R mysql /usr/local/mysql/var
- shell> chgrp -R mysql /usr/local/mysql
- shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
- @end example
- If you start from a source RPM, then do the following:
- @example
- shell> rpm --rebuild MySQL-VERSION.src.rpm
- @end example
- This will make a binary RPM that you can install.
- You can add new users using the @code{bin/mysql_setpermission} script if
- you install the @code{DBI} and @code{Msql-Mysql-modules} Perl modules.
- A more detailed description follows.
- To install a source distribution, follow the steps below, then proceed
- to @ref{Post-installation}, for post-installation initialization and testing:
- @enumerate
- @item
- Pick the directory under which you want to unpack the distribution, and move
- into it.
- @item
- Obtain a distribution file from one of the sites listed in
- @ref{Getting MySQL, , Getting @strong{MySQL}}.
- @item
- If you are interested in using Berkeley DB tables with MySQL, you
- will need to obtain a patched version of the Berkeley DB source
- code. Please read the chapter on Berkeley DB tables before
- proceeding. @xref{BDB}.
- @strong{MySQL} source distributions are provided as compressed @code{tar}
- archives and have names like @file{mysql-VERSION.tar.gz}, where
- @code{VERSION} is a number like @value{mysql_version}.
- @item
- Add a user and group for @code{mysqld} to run as:
- @example
- shell> groupadd mysql
- shell> useradd -g mysql mysql
- @end example
- These commands add the @code{mysql} group, and the @code{mysql} user. The
- syntax for @code{useradd} and @code{groupadd} may differ slightly on different
- Unixes. They may also be called @code{adduser} and @code{addgroup}. You may
- wish to call the user and group something else instead of @code{mysql}.
- @item
- Unpack the distribution into the current directory:
- @example
- shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
- @end example
- This command creates a directory named @file{mysql-VERSION}.
- @item
- Change into the top-level directory of the unpacked distribution:
- @example
- shell> cd mysql-VERSION
- @end example
- Note that currently you must configure and build @strong{MySQL} from
- this top-level directory. You can not build it in a different
- directory.
- @item
- Configure the release and compile everything:
- @example
- shell> ./configure --prefix=/usr/local/mysql
- shell> make
- @end example
- When you run @code{configure}, you might want to specify some options.
- Run @code{./configure --help} for a list of options.
- @ref{configure options, , @code{configure} options}, discusses some of the
- more useful options.
- If @code{configure} fails, and you are going to send mail to
- @email{mysql@@lists.mysql.com} to ask for assistance, please include any
- lines from @file{config.log} that you think can help solve the problem. Also
- include the last couple of lines of output from @code{configure} if
- @code{configure} aborts. Post the bug report using the @code{mysqlbug}
- script. @xref{Bug reports}.
- If the compile fails, see @ref{Compilation problems}, for help with
- a number of common problems.
- @item
- Install everything:
- @example
- shell> make install
- @end example
- You might need to run this command as @code{root}.
- @item
- Create the @strong{MySQL} grant tables (necessary only if you haven't
- installed @strong{MySQL} before):
- @example
- shell> scripts/mysql_install_db
- @end example
- Note that @strong{MySQL} versions older than Version 3.22.10 started the
- @strong{MySQL} server when you run @code{mysql_install_db}. This is no
- longer true!
- @item
- Change ownership of binaries to @code{root} and ownership of the data
- directory to the user that you will run @code{mysqld} as:
- @example
- shell> chown -R root /usr/local/mysql
- shell> chown -R mysql /usr/local/mysql/var
- shell> chgrp -R mysql /usr/local/mysql
- @end example
- The first command changes the @code{owner} attribute of the files to the
- @code{root} user, the second one changes the @code{owner} attribute of the
- data directory to the @code{mysql} user, and the third one changes the
- @code{group} attribute to the @code{mysql} group.
- @item
- If you want to install support for the Perl @code{DBI}/@code{DBD} interface,
- see @ref{Perl support}.
- @item
- If you would like @strong{MySQL} to start automatically when you boot your
- machine, you can copy @code{support-files/mysql.server} to the location where
- your system has its startup files. More information can be found in the
- @code{support-files/mysql.server} script itself and in @ref{Automatic
- start}.
- @end enumerate
- After everything has been installed, you should initialize and test your
- distribution:
- @example
- shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
- @end example
- If that command fails immediately with @code{mysqld daemon ended} then you can
- find some information in the file
- @file{mysql-data-directory/'hostname'.err}. The likely reason is that
- you already have another @code{mysqld} server running. @xref{Multiple
- servers}.
- @xref{Post-installation}.
- @cindex patches, applying
- @cindex applying, patches
- @node Applying patches, configure options, Quick install, Installing source
- @subsection Applying Patches
- Sometimes patches appear on the mailing list or are placed in the
- @uref{http://www.mysql.com/Downloads/Patches, patches area} of the
- @strong{MySQL} Web site.
- To apply a patch from the mailing list, save the message in which the patch
- appears in a file, change into the top-level directory of your @strong{MySQL}
- source tree, and run these commands:
- @example
- shell> patch -p1 < patch-file-name
- shell> rm config.cache
- shell> make clean
- @end example
- Patches from the FTP site are distributed as plain text files or as files
- compressed with @code{gzip}. Apply a plain patch as shown above for
- mailing list patches. To apply a compressed patch, change into the
- top-level directory of your @strong{MySQL} source tree and run these
- commands:
- @example
- shell> gunzip < patch-file-name.gz | patch -p1
- shell> rm config.cache
- shell> make clean
- @end example
- After applying a patch, follow the instructions for a normal source install,
- beginning with the @code{./configure} step. After running the @code{make
- install} step, restart your @strong{MySQL} server.
- You may need to bring down any currently running server before you run
- @code{make install}. (Use @code{mysqladmin shutdown} to do this.) Some
- systems do not allow you to install a new version of a program if it replaces
- the version that is currently executing.
- @cindex @code{configure} script
- @cindex options, configure
- @cindex configuration options
- @findex without-server option
- @cindex log files
- @cindex files, log
- @node configure options, , Applying patches, Installing source
- @subsection Typical @code{configure} Options
- The @code{configure} script gives you a great deal of control over how
- you configure your @strong{MySQL} distribution. Typically you do this
- using options on the @code{configure} command line. You can also affect
- @code{configure} using certain environment variables. @xref{Environment
- variables}. For a list of options supported by @code{configure}, run
- this command:
- @example
- shell> ./configure --help
- @end example
- Some of the more commonly-used @code{configure} options are described below:
- @itemize @bullet
- @item
- To compile just the @strong{MySQL} client libraries and client programs and
- not the server, use the @code{--without-server} option:
- @example
- shell> ./configure --without-server
- @end example
- @c FIX incorrect..
- If you don't have a C++ compiler, @code{mysql} will not compile (it is the
- one client program that requires C++). In this case,
- you can remove the code in @code{configure} that tests for the C++ compiler
- and then run @code{./configure} with the @code{--without-server} option. The
- compile step will still try to build @code{mysql}, but you can ignore any
- warnings about @file{mysql.cc}. (If @code{make} stops, try @code{make -k}
- to tell it to continue with the rest of the build even if errors occur.)
- @item
- If you don't want your log files and database directories located under
- @file{/usr/local/var}, use a @code{configure} command, something like one
- of these:
- @example
- shell> ./configure --prefix=/usr/local/mysql
- shell> ./configure --prefix=/usr/local
- --localstatedir=/usr/local/mysql/data
- @end example
- The first command changes the installation prefix so that everything is
- installed under @file{/usr/local/mysql} rather than the default of
- @file{/usr/local}. The second command preserves the default installation
- prefix, but overrides the default location for database directories
- (normally @file{/usr/local/var}) and changes it to
- @code{/usr/local/mysql/data}.
- @item
- If you are using Unix and you want the @strong{MySQL} socket located somewhere
- other than the default location (normally in the directory @file{/tmp} or
- @file{/var/run}) use a @code{configure} command like this:
- @example
- shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
- @end example
- Note that the given file must be an absolute pathname!
- @cindex socket location
- @item
- If you want to compile statically linked programs (for example, to make a
- binary distribution, to get more speed, or to work around problems with some
- RedHat distributions), run @code{configure} like this:
- @example
- shell> ./configure --with-client-ldflags=-all-static
- --with-mysqld-ldflags=-all-static
- @end example
- @cindex statistically-linked programs
- @item
- If you are using @code{gcc} and don't have @code{libg++} or @code{libstdc++}
- installed, you can tell @code{configure} to use @code{gcc} as your C++
- compiler:
- @tindex CC environment variable
- @tindex Environment variable, CC
- @tindex CXX environment variable
- @tindex Environment variable, CXX
- @example
- shell> CC=gcc CXX=gcc ./configure
- @end example
- @cindex gcc
- @cindex C++ complier, gcc
- @cindex compiler, C++ gcc
- When you use @code{gcc} as your C++ compiler, it will not attempt to link in
- @code{libg++} or @code{libstdc++}.
- Here is some common environment variables to set depending on
- the compiler you are using:
- @tindex CXXFLAGS environment variable
- @tindex Environment variable, CXXFLAGS
- @multitable @columnfractions .20 .80
- @item gcc 2.7.2.1 @tab
- CC=gcc CXX=gcc CXXFLAGS="-O6 -felide-constructors"
- @item egcs 1.0.3a @tab
- CC=gcc CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti"
- @item gcc 2.95.2 @tab
- CFLAGS="-O6 -mpentiumpro" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti"
- @item pgcc 2.90.29 or newer @tab
- CFLAGS="-O6 -mpentiumpro -mstack-align-double" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti"
- @end multitable
- In most cases you can get a resonable optimal @strong{MySQL} binary
- picking the options from the above and add the following options to the
- configure line:
- @example
- --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static
- @end example
- The full configure line would in other words be something like the
- following for all recent gcc versions:
- @example
- CFLAGS="-O6 -mpentiumpro" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static
- @end example
- The binaries we provide at on the MySQL home site
- @uref{http://www.mysql.com}, are all compiled with full optimization and
- should be ok for most users. @xref{MySQL binaries}. There is some
- things one can tweak to make an even faster binary, but this is only for
- advanced users. @xref{Compile and link options}.
- If the build fails and produces errors about your compiler or linker not
- being able to create the shared library @file{libmysqlclient.so.#} (@samp{#}
- is a version number), you can work around this problem by giving the
- @code{--disable-shared} option to @code{configure}. In this case,
- @code{configure} will not build a shared @code{libmysqlclient.so.#} library.
- @item
- You can configure @strong{MySQL} not to use @code{DEFAULT} column values for
- non-@code{NULL} columns (that is, columns that are not allowed to be
- @code{NULL}). This causes @code{INSERT} statements to generate an error
- unless you explicitly specify values for all columns that require a
- non-@code{NULL} value. To suppress use of default values, run
- @code{configure} like this:
- @tindex CXXFLAGS environment variable
- @tindex Environment variable, CXXFLAGS
- @example
- shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
- @end example
- @cindex default values, suppression
- @cindex suppression, default values
- @item
- By default, @strong{MySQL} uses the ISO-8859-1 (Latin1) character set. To
- change the default set, use the @code{--with-charset} option:
- @example
- shell> ./configure --with-charset=CHARSET
- @end example
- @code{CHARSET} may be one of @code{big5}, @code{cp1251}, @code{cp1257},
- @code{czech}, @code{danish}, @code{dec8}, @code{dos}, @code{euc_kr},
- @code{gb2312}, @code{gbk}, @code{german1}, @code{hebrew}, @code{hp8},
- @code{hungarian}, @code{koi8_ru}, @code{koi8_ukr}, @code{latin1},
- @code{latin2}, @code{sjis}, @code{swe7}, @code{tis620}, @code{ujis},
- @code{usa7}, or @code{win1251ukr}.
- @xref{Character sets}.
- @cindex character sets
- @findex CHARSET
- If you want to convert characters between the server and the client,
- you should take a look at the @code{SET OPTION CHARACTER SET} command.
- @xref{SET OPTION, , @code{SET OPTION}}.
- @cindex @code{myisamchk}
- @strong{Warning:} If you change character sets after having created any
- tables, you will have to run @code{myisamchk -r -q} on every table. Your
- indexes may be sorted incorrectly otherwise. (This can happen if you
- install @strong{MySQL}, create some tables, then reconfigure
- @strong{MySQL} to use a different character set and reinstall it.)
- @item
- To configure
- @strong{MySQL} with debugging code, use the @code{--with-debug} option:
- @example
- shell> ./configure --with-debug
- @end example
- This causes a safe memory allocator to be included that can find some errors
- and that provides output about what is happening.
- @xref{Debugging server}.
- @item
- If your client programs are using threads, you need to also compile a
- thread-safe version of the @strong{MySQL} client library with the
- @code{--with-thread-safe-client} configure options. This will create a
- @code{libmysqlclient_r} library with which you should link your threaded
- applications. @xref{Thread-safe clients}.
- @item
- Options that pertain to particular systems can be found in the
- system-specific sections later in this chapter.
- @xref{Source install system issues}.
- @end itemize
- @node Installing source tree, Compilation problems, Installing source, Installing
- @section Installing from development source tree
- @strong{CAUTION:} You should only read this section if you are
- interested in helping us test our new code. If you just want to get
- @strong{MySQL} up and running on your system, you should use either
- source or binary distribution.
- Below are the instructions to obtain our most recent development
- source tree:
- @itemize
- @item
- Download @strong{BitKeeper} from
- @uref{http://www.bitmover.com/cgi-bin/download.cgi}. You will need
- @strong{Bitkeeper} 2.0 or newer to access our repository.
- @item
- Follow the instructions to install it.
- @item
- Once @strong{BitKeeper} is installed, if you want to clone 3.23 branch,
- @code{bk clone bk://work.mysql.com:7000 mysql}, and
- @code{bk clone bk://work.mysql.com:7001 mysql-4.0} for 4.0 branch
- The initial download may take a while, depending on the speed of your
- connection.
- @item
- You will need GNU autoconf/automake, libtool, and m4 to do the next stage.
- If you get some strange error during the first stage, check that you really
- have libtool installed!
- @example
- cd mysql
- bk -r edit
- aclocal; autoheader; autoconf; automake;
- ./configure # Add your favorite options here
- make
- @end example
- We have a collection of our standard configure scripts in the
- @code{BUILD/} subdirectory - if you are lazy, you can do
- @code{BUILD/compile-pentium-debug} . It will actually work on a lot of
- non-x86 machines despite its name.
- @item
- Once the build is done, @code{make install}. Be careful with this on
- a production machine - this may overwrite your live release binary. We
- recommend that if you have another installation of @strong{MySQL} that
- you @code{./configure} with different values for @code{prefix},
- @code{tcp-port}, and @code{unix-socket-path}.
- @item
- Play hard with your new installation and try to make the new features
- crash. Start by running @code{make test}. @xref{MySQL test suite}.
- @item
- If you have gotten to the @code{make} stage and it does not compile,
- please report it to @email{bugs@@lists.mysql.com}. If you have
- installed the update version of the required GNU tools, and they crash
- trying to process our configuration files, please report it also. However,
- if you execute @code{aclocal} and get @code{command not found}, or a
- similar problem, do not report it - make sure all the needed tools are
- installed and your @code{PATH} variable is set correctly.
- @item
- After the initial @code{bk clone}, do @code{bk pull} to get the updates. If
- you are using the most recent beta version of BitKeeper, you should use
- @code{bk opull} instead.
- @item
- You can examine change history of the tree with all the diffs with
- @code{bk sccstool}. If you see some funny diffs or code that you have a
- question about, do not hesitate and e-mail
- @email{internals@@lists.mysql.com}. Also if you think you have a
- better idea on how to do something, send an email to the same place
- with a patch - @code{bk diffs} will produce a patch for you after you
- have made changes to the source. If you do not have the time to code
- your idea, just send a description.
- @item
- @strong{BitKeeper} has a nice help utility - @code{bk helptool}.
- @end itemize
- @cindex compiling, problems
- @cindex problems, compiling
- @cindex reconfiguring
- @cindex @code{config.cache} file
- @cindex files, @code{config.cache}
- @node Compilation problems, MIT-pthreads, Installing source tree, Installing
- @section Problems Compiling?
- All @strong{MySQL} programs compile cleanly for us with no warnings on
- Solaris using @code{gcc}. On other systems, warnings may occur due to
- differences in system include files. See @ref{MIT-pthreads}, for warnings
- that may occur when using MIT-pthreads. For other problems, check the list
- below.
- The solution to many problems involves reconfiguring. If you do need to
- reconfigure, take note of the following:
- @cindex running @code{configure} after prior invocation
- @cindex @code{configure}, running after prior invocation
- @itemize @bullet
- @item
- If @code{configure} is run after it already has been run, it may use
- information that was gathered during its previous invocation. This
- information is stored in @file{config.cache}. When @code{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.
- @item
- Each time you run @code{configure}, you must run @code{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.
- @end itemize
- To prevent old configuration information or object files from being used,
- run these commands before rerunning @code{configure}:
- @example
- shell> rm config.cache
- shell> make clean
- @end example
- Alternatively, you can run @code{make distclean}.
- The list below describes some of the problems compiling @strong{MySQL}
- that have been found to occur most often:
- @itemize @bullet
- @item
- @cindex @code{cc1plus} problems
- @cindex @code{fatal signal 11}
- @cindex @code{sql_yacc.cc} problems
- @cindex internal compiler errors
- @cindex virtual memory, problems while compiling
- If you get errors when compiling @file{sql_yacc.cc}, such as the ones shown
- below, you have probably run out of memory or swap space:
- @example
- Internal compiler error: program cc1plus got fatal signal 11
- or
- Out of virtual memory
- or
- Virtual memory exhausted
- @end example
- The problem is that @code{gcc} requires huge amounts of memory to compile
- @file{sql_yacc.cc} with inline functions. Try running @code{configure} with
- the @code{--with-low-memory} option:
- @example
- shell> ./configure --with-low-memory
- @end example
- This option causes @code{-fno-inline} to be added to the compile line if you
- are using @code{gcc} and @code{-O0} if you are using something else. You
- should try the @code{--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 @code{--with-low-memory} option usually fixes it.
- @item
- By default, @code{configure} picks @code{c++} as the compiler name and
- GNU @code{c++} links with @code{-lg++}. If you are using @code{gcc},
- that behavior can cause problems during configuration such as this:
- @cindex C++ compiler cannot create executables
- @example
- configure: error: installation or configuration problem:
- C++ compiler cannot create executables.
- @end example
- @tindex CXX environment variable
- @tindex Environment variable, CXX
- You might also observe problems during compilation related to
- @code{g++}, @code{libg++}, or @code{libstdc++}.
- One cause of these problems is that you may not have @code{g++}, or you may
- have @code{g++} but not @code{libg++}, or @code{libstdc++}. Take a look at
- the @file{config.log} file. It should contain the exact reason why your c++
- compiler didn't work! To work around these problems, you can use @code{gcc}
- as your C++ compiler. Try setting the environment variable @code{CXX} to
- @code{"gcc -O3"}. For example:
- @tindex CXX environment variable
- @tindex Environment variables, CXX
- @example
- shell> CXX="gcc -O3" ./configure
- @end example
- This works because @code{gcc} compiles C++ sources as well as @code{g++}
- does, but does not link in @code{libg++} or @code{libstdc++} by default.
- Another way to fix these problems, of course, is to install @code{g++},
- @code{libg++} and @code{libstdc++}.
- @item
- If your compile fails with errors, such as any of the following,
- you must upgrade your version of @code{make} to GNU @code{make}:
- @example
- 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
- @end example
- @cindex Solaris troubleshooting
- @cindex FreeBSD troubleshooting
- @cindex troubleshooting, Solaris
- @cindex troubleshooting, FreeBSD
- Solaris and FreeBSD are known to have troublesome @code{make} programs.