diff options
author | jcole@abel.spaceapes.com <> | 2001-04-04 01:38:47 -0500 |
---|---|---|
committer | jcole@abel.spaceapes.com <> | 2001-04-04 01:38:47 -0500 |
commit | feca8212dce157fb8f7c6481e042ddded33b51db (patch) | |
tree | 16254ac1219c1d5391aedb44e14336d61cd48494 | |
parent | 09fa56ff86c35cc0161ace77d1b411b341614f5a (diff) | |
download | mariadb-git-feca8212dce157fb8f7c6481e042ddded33b51db.tar.gz |
Edits to first 10,000 lines from read-through of manual.texi.
-rw-r--r-- | Docs/manual.texi | 2473 |
1 files changed, 1272 insertions, 1201 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index d30601fc3b7..131a18a5bca 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -1102,20 +1102,20 @@ Debugging a MySQL server @end menu This is the @strong{MySQL} reference manual; it documents @strong{MySQL} -Version @value{mysql_version}. As @strong{MySQL} is work in progress, -the manual gets updated frequently. There is a very good chance that -this version is out of date, unless you are looking at it online. The +Version @value{mysql_version}. As @strong{MySQL} is work in progress, +the manual gets updated frequently. There is a very good chance that +this version is out of date, unless you are looking at it online. The most recent version of this manual is available at -@uref{http://www.mysql.com/documentation/} in many different formats. If you +@uref{http://www.mysql.com/documentation/} in many different formats. If you have a hard time finding information in the manual, you can try the searchable PHP version at @uref{http://www.mysql.com/documentation/manual.php}. @strong{MySQL} is a very fast, multi-threaded, multi-user, and robust SQL (Structured Query Language) database server. -@strong{MySQL} is free software. It is licensed with the @strong{GNU +@strong{MySQL} is free software. It is licensed with the @strong{GNU GENERAL PUBLIC LICENSE} @uref{http://www.gnu.org/}. - @xref{Licensing and Support}. +@xref{Licensing and Support}. @uref{http://www.mysql.com/, The @strong{MySQL} home page} provides the latest information about @strong{MySQL}. @@ -1124,7 +1124,8 @@ The following list describes some useful sections of the manual: @itemize @bullet @item -To get information about the company behind MySQL, see @xref{What is MySQL AB}. +For information about the company behind @strong{MySQL}, see +@ref{What is MySQL AB}. @item For a discussion of @strong{MySQL}'s capabilities, see @ref{Features}. @@ -1137,12 +1138,11 @@ For tips on porting @strong{MySQL} to new architectures or operating systems, see @ref{Porting}. @item -For information about upgrading from a Version 3.21 release, see -@ref{Upgrading-from-3.21}. +For information about upgrading from a Version 3.22 release, see +@ref{Upgrading-from-3.22}. @item -For a tutorial introduction to @strong{MySQL}, see -@ref{Tutorial}. +For a tutorial introduction to @strong{MySQL}, see @ref{Tutorial}. @item For examples of SQL and benchmarking information, see the benchmarking @@ -1180,12 +1180,11 @@ security bug in @strong{MySQL}, you should send an email to @cindex @code{mysqlbug} script, location If you have any suggestions concerning additions or corrections to this -manual, please send them to the manual team at -(@email{docs@@mysql.com}). +manual, please send them to the manual team at @email{docs@@mysql.com}. This is a reference manual; it does not provide general instruction on SQL or relational database concepts. If you want general information about SQL, -see @ref{General-SQL}. For books that focus more specifically on +see @ref{General-SQL}. For books that focus more specifically on @strong{MySQL}, see @ref{MySQL-Books}. @cindex MySQL, defined @@ -1202,11 +1201,11 @@ builds its business providing services around the @strong{MySQL} database. @item @strong{MySQL} is a database management system. -A database is a structured collection of data. It may be anything from a +A database is a structured collection of data. It may be anything from a simple shopping list to a picture gallery or the vast amounts of -information in a corporate network. To add, access, and process data +information in a corporate network. To add, access, and process data stored in a computer database, you need a database management system -such as @strong{MySQL}. Since computers are very good at handling large +such as @strong{MySQL}. Since computers are very good at handling large amounts of data, database management plays a central role in computing, as stand-alone utilities, or as parts of other applications. @@ -1215,9 +1214,9 @@ as stand-alone utilities, or as parts of other applications. @item @strong{MySQL} is a relational database management system. A relational database stores data in separate tables rather than putting -all the data in one big storeroom. This adds speed and flexibility. The +all the data in one big storeroom. This adds speed and flexibility. The tables are linked by defined relations making it possible to combine -data from several tables on request. The SQL part of @strong{MySQL} +data from several tables on request. The SQL part of @strong{MySQL} stands for "Structured Query Language" - the most common standardized language used to access databases. @@ -1225,12 +1224,12 @@ language used to access databases. @cindex SQL, defined @item @strong{MySQL} is Open Source Software. -Open source means that it is possible for anyone to use and modify. +Open Source means that it is possible for anyone to use and modify. Anybody can download @strong{MySQL} from the Internet and use it -without paying anything. Anybody so inclined can study the source code -and change it to fit their needs. @strong{MySQL} uses the GPL (GNU +without paying anything. Anybody so inclined can study the source code +and change it to fit their needs. @strong{MySQL} uses the GPL (GNU General Public License) @uref{http://www.gnu.org}, to define what you -may and may not do with the software in different situations. If you +may and may not do with the software in different situations. If you feel uncomfortable with the GPL or need to embed @strong{MySQL} into a commercial application you can buy a commercially licensed version from us. @@ -1240,17 +1239,17 @@ us. @item Why use @strong{MySQL}? -@strong{MySQL} is very fast, reliable, and easy to use. If that is what -you are looking for, you should give it a try. @strong{MySQL} also has a +@strong{MySQL} is very fast, reliable, and easy to use. If that is what +you are looking for, you should give it a try. @strong{MySQL} also has a very practical set of features developed in very close cooperation with -our users. You can find a performance comparison of @strong{MySQL} -to some other database managers on our benchmark page. @xref{Benchmarks}. +our users. You can find a performance comparison of @strong{MySQL} +to some other database managers on our benchmark page. @xref{Benchmarks}. @strong{MySQL} was originally developed to handle very large databases much faster than existing solutions and has been successfully used in highly demanding production environments for several years. Though under constant development, @strong{MySQL} today offers a rich and very -useful set of functions. The connectivity, speed, and security make +useful set of functions. The connectivity, speed, and security make @strong{MySQL} highly suited for accessing databases on the Internet. @item The technical features of @strong{MySQL} @@ -1258,7 +1257,7 @@ useful set of functions. The connectivity, speed, and security make For advanced technical information, see @ref{Reference}. @strong{MySQL} is a client/server system that consists of a multi-threaded SQL server that supports different backends, several different client programs and -libraries, administrative tools, and a programming interface. +libraries, administrative tools, and several programming interfaces. We also provide @strong{MySQL} as a multi-threaded library which you can link into your application to get a smaller, faster, easier to manage @@ -1266,8 +1265,8 @@ product. @item @strong{MySQL} has a lot of contributed software available. -It is very likely that you will find that your favorite -application/language already supports @strong{MySQL}. +It is very likely that you will find that your favorite application or +language already supports @strong{MySQL}. @end table @@ -1282,51 +1281,51 @@ MY-SEQUEL). But we try to avoid correcting people who say MY-SEQUEL. @section What Is MySQL AB @strong{MySQL AB} is the Swedish company owned and run by the @strong{MySQL} -founders and main developers. We are dedicated to developing -@strong{MySQL} and spreading our database to new users. @strong{MySQL AB} -owns the copyright to the @strong{MySQL} server source code and the -@strong{MySQL} trademark. A significant amount of revenues from our -services goes to developing @strong{MySQL}. @xref{What-is}. +founders and main developers. We are dedicated to developing @strong{MySQL} +and spreading our database to new users. @strong{MySQL AB} owns the copyright +to the @strong{MySQL} server source code and the @strong{MySQL} trademark. +A significant amount of revenues from our services goes to developing +@strong{MySQL}. @xref{What-is}. @strong{MySQL AB} has been profitable providing @strong{MySQL} from the start. We don't get any outside funding, but have earned all our money ourselves. -We are searching after partners that would like to support our -development of @strong{MySQL} so that we could accelerate the -development pace. If you are interested in doing this, you can email -@email{partner@@mysql.com} about this! +We are searching after partners that would like to support our development +of @strong{MySQL} so that we could accelerate the development pace. If you +are interested in doing this, you can email @email{partner@@mysql.com} about +this! -@strong{MySQL AB} has currently 20+ people on its payroll and is -growing rapidly. @uref{http://www.mysql.com/development/team.html}. +@strong{MySQL AB} has currently 20+ people on its payroll and is growing +rapidly. @uref{http://www.mysql.com/development/team.html}. Our main sources of income are: @itemize @bullet @item -Commercial high quality support for @strong{MySQL} provided by -@strong{MySQL} developers. If you are interested in getting support, -please visit @uref{https://order.mysql.com/} to view our support options -or to order support. +Commercial high quality support for @strong{MySQL} provided by the +@strong{MySQL} developers themselves. If you are interested in purchasing +a support contract, please visit @uref{https://order.mysql.com/} to view our +support options or to order support. @item -Consulting services. We have developers/consults in 12 countries and -partners in many other countries that can help you with almost any +Consulting services. We have developers and consultants in 12 countries +and partners in many other countries that can help you with almost any @strong{MySQL} related issues. If you need consulting services, please email a good description of your needs to @email{info@@mysql.com}! If we can't handle this ourselves we can usually find a partner or a developer that can help you with your problems. @item -We sell licenses for using @strong{MySQL} as an embedded -database. @xref{Cost}. If you have a commercial product for which you -need a fast, high quality database, but you can't afford to make your -product Open Source, you can buy the right to use the @strong{MySQL} server -under a normal commercial copyright. If you are interested in this you can -buy @strong{MySQL} licenses at @uref{https://order.mysql.com/} or contact -us at @email{licensing@@mysql.com}. +We sell licenses for using @strong{MySQL} as an embedded database. +@xref{Cost}. If you have a commercial product for which you need a fast, +high quality database, but you can't afford to make your product Open Source, +you can buy the right to use the @strong{MySQL} server under a normal +commercial copyright. If you are interested in this you can buy +@strong{MySQL} licenses at @uref{https://order.mysql.com/} or contact us +at @email{licensing@@mysql.com}. @item -Advertising; @uref{http://www.mysql.com/} is a very popular web site with +Advertising. @uref{http://www.mysql.com/} is a very popular web site with more than 10,000,000 page views per months (January 2001). By putting a banner on this you are guaranteed to reach a lot of potential customers in the Open source, Linux and database community. If you are interested @@ -1340,12 +1339,12 @@ of @strong{MySQL AB} please visit @email{partner@@mysql.com}. @item -We provide @strong{MySQL} training through our partner programs. For more +We provide @strong{MySQL} training through our partner programs. For more information, please email @email{info@@mysql.com}. @item The @strong{MySQL} brand has, since 1995, been associated with speed and -reliability, and is known to be something you can depend upon. If you are +reliability, and is known to be something you can depend upon. If you are interested in using the @strong{MySQL} trademark in your marketing, you can email @email{info@@mysql.com} about this. @end itemize @@ -1363,7 +1362,7 @@ Available and affordable for all. @item Easy to use. @item -Continuously improving while remaining fast and safe. +Continuously improved while remaining fast and safe. @item Fun to use and improve. @item @@ -1405,7 +1404,7 @@ and @code{dvips}. The PDF version is produced with @code{pdftex}. @cindex Texinfo This manual is written and maintained by David Axmark, Michael (Monty) -Widenius, Jeremy Cole, and Paul DuBois. For other contributors, +Widenius, Jeremy Cole, and Paul DuBois. For other contributors, see @ref{Credits}. @node Manual conventions, , Manual-info, Manual-info @@ -1532,22 +1531,23 @@ alternatives are listed within braces (@samp{@{} and @samp{@}}): @{DESCRIBE | DESC@} tbl_name @{col_name | wild@} @end example -@cindex MySQL version @cindex MySQL history @cindex history of MySQL +@cindex MySQL name +@cindex My, derivation @node History, MySQL-Books, Manual-info, Introduction @section History of MySQL We once started out with the intention of using @code{mSQL} to connect to our tables using our own fast low-level (ISAM) routines. However, after some testing we came to the conclusion that @code{mSQL} was not fast enough nor -flexible enough for our needs. This resulted in a new SQL interface to our -database but with almost the same API interface as @code{mSQL}. This API was +flexible enough for our needs. This resulted in a new SQL interface to our +database but with almost the same API interface as @code{mSQL}. This API was chosen to ease porting of third-party code. The derivation of the name @strong{MySQL} is not perfectly clear. Our base directory and a large number of our libraries and tools have had the prefix -``my'' for well over 10 years. However, Monty's daughter (some years younger) +``my'' for well over 10 years. However, Monty's daughter (some years younger) is also named My. Which of the two gave its name to @strong{MySQL} is still a mystery, even for us. @@ -1568,8 +1568,7 @@ contributing to the development of @strong{MySQL}. @emph{MySQL} @multitable @columnfractions .3 .7 -@item Available @tab -@uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0735709211&bfmtype=book, Barnes and Noble} +@item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0735709211&bfmtype=book, Barnes and Noble} @item Publisher @tab New Riders @item Author @tab Paul DuBois @item Pub Date @tab 1st Edition December 1999 @@ -1581,51 +1580,55 @@ contributing to the development of @strong{MySQL}. @item Errata @tab @uref{http://www.mysql.com/documentation/pauls-mysql-book-errata.html, are available here} @end multitable -Foreword by Michael ``Monty'' Widenius, @strong{MySQL} Moderator.@* + +Foreword by Michael ``Monty'' Widenius, @strong{MySQL} Moderator. +@* In @emph{MySQL}, Paul DuBois provides you with a comprehensive guide to -one of the most popular relational database systems. Paul has +one of the most popular relational database systems. Paul has contributed to the online documentation for @strong{MySQL} and is an -active member of the @strong{MySQL} community. The principal @strong{MySQL} +active member of the @strong{MySQL} community. The principal @strong{MySQL} developer, Monty Widenius, and a network of his fellow developers reviewed the manuscript, and provided Paul with the kind of insight -no one else could supply.@* +no one else could supply. +@* Instead of merely giving you a general overview of @strong{MySQL}, Paul -teaches you how to make the most of its capabilities. Through two +teaches you how to make the most of its capabilities. Through two sample database applications that run throughout the book, he -gives you solutions to problems you're sure to face. He helps you +gives you solutions to problems you're sure to face. He helps you integrate @strong{MySQL} efficiently with third-party tools, such as PHP and Perl, enabling you to generate dynamic Web pages through -database queries. He teaches you to write programs that access +database queries. He teaches you to write programs that access @strong{MySQL} databases, and also provides a comprehensive set of references to column types, operators, functions, SQL syntax, @strong{MySQL} programming, C API, Perl @code{DBI}, and PHP API. @emph{MySQL} simply gives you the kind of information you won't find -anywhere else.@* +anywhere else. +@* If you use @strong{MySQL}, this book provides you with: @itemize @bullet @item -An introduction to @strong{MySQL} and SQL +An introduction to @strong{MySQL} and SQL. @item -Coverage of @strong{MySQL}'s data types and how to use them +Coverage of @strong{MySQL}'s data types and how to use them. @item -Thorough treatment of how to write client programs in C +Thorough treatment of how to write client programs in C. @item A guide to using the Perl @code{DBI} and PHP APIs for developing -command-line and Web-based applications +command-line and Web-based applications. @item Tips on administrative issues such as user accounts, backup, -crash recovery, and security +crash recovery, and security. @item -Help in choosing an ISP for @strong{MySQL} access +Help in choosing an ISP for @strong{MySQL} access. @item A comprehensive reference for @strong{MySQL}'s data types, operators, -functions, and SQL statements and utilities +functions, and SQL statements and utilities. @item Complete reference guides for @strong{MySQL}'s C API, the Perl @code{DBI} API, -and PHP's @strong{MySQL}-related functions +and PHP's @strong{MySQL}-related functions. @end itemize @* @@ -1642,11 +1645,11 @@ and PHP's @strong{MySQL}-related functions This book teaches you how to use @strong{MySQL} and @code{mSQL}, two popular and robust database products that support key subsets of SQL on both Linux -and Unix systems. Anyone who knows basic C, Java, Perl, or Python can +and Unix systems. Anyone who knows basic C, Java, Perl, or Python can write a program to interact with a database, either as a stand-alone -application or through a Web page. This book takes you through the +application or through a Web page. This book takes you through the whole process, from installation and configuration to programming -interfaces and basic administration. Includes ample tutorial +interfaces and basic administration. Includes plenty of tutorial material. @* @@ -1661,14 +1664,16 @@ material. @item Price @tab $39.99 @end multitable -Sams Teach Yourself @strong{MySQL} in 21 Days is for -intermediate Linux users who want to move into databases. A large share of -the audience is Web developers who need a database to store large amounts of -information that can be retrieved via the Web. -@emph{Sams' Teach Yourself MySQL in 21 Days} is a practical, step-by-step +Sams' @emph{Teach Yourself MySQL in 21 Days} is for intermediate Linux users +who want to move into databases. A large share of the audience is Web +developers who need a database to store large amounts of information that +can be retrieved via the Web. + +Sams' @emph{Teach Yourself MySQL in 21 Days} is a practical, step-by-step tutorial. The reader will learn to design and employ this open source -database technology into his/her Web site using practical, hands-on examples -to follow.@* +database technology into his or her Web site using practical, hands-on +examples to follow. +@* @emph{E-Commerce Solutions with MySQL} @multitable @columnfractions .3 .7 @@ -1696,9 +1701,9 @@ No description available. @end multitable This book puts together information on installing, setting up, and -troubleshooting Apache, MySQL, PHP3, and IMP into one complete -volume. You also learn how each piece is part of a whole by learning, -step-by-step, how to create a web-based e-mail system. Learn to run +troubleshooting Apache, @strong{MySQL}, PHP3, and IMP into one complete +volume. You also learn how each piece is part of a whole by learning, +step-by-step, how to create a web-based e-mail system. Learn to run the equivalent of Active Server Pages (ASP) using PHP3, set up an e-commerce site using a database and the Apache web server, and create a data entry system (such as sales, product quality tracking, customer @@ -1730,13 +1735,13 @@ No description available. @item Price @tab $47.99 @end multitable -In this follow-up to the best-selling Beginning Linux Programming, you -will learn from the authors' real-world knowledge and experience of +In this follow-up to the best-selling @emph{Beginning Linux Programming}, +you will learn from the authors' real-world knowledge and experience of developing software for Linux; you'll be taken through the development of a sample 'DVD Store' application, with 'theme' chapters addressing -different aspects of its implementation. Meanwhile, individual -'take-a-break' chapters cover important topics that go beyond the -bounds of the central theme. All focus on the practical aspects of +different aspects of its implementation. Meanwhile, individual +``take-a-break'' chapters cover important topics that go beyond the +bounds of the central theme. All focus on the practical aspects of programming, showing how crucial it is to choose the right tools for the job, use them as they should be used, and get things right first time. @@ -1753,15 +1758,15 @@ time. @item Price @tab $49.99 @end multitable -PHP3 and MySQL Web Development introduces you to the advantages of -implementing both MySQL and PHP3. These advantages are detailed -through the provision of both statistics and several case studies. A +@emph{PHP and MySQL Web Development} introduces you to the advantages +of implementing both @strong{MySQL} and PHP. These advantages are detailed +through the provision of both statistics and several case studies. A practical web application is developed throughout the book, providing you with the tools necessary to implement a functional online -database. Each function is developed separately, allowing you the +database. Each function is developed separately, allowing you the choice to incorporate only those parts that you would like to -implement. Programming concepts of the PHP3 language are highlighted, -including functions which tie MySQL support into a PHP3 script and +implement. Programming concepts of the PHP language are highlighted, +including functions which tie @strong{MySQL} support into a PHP script and advanced topics regarding table manipulation. @* @@ -1779,7 +1784,7 @@ advanced topics regarding table manipulation. @end multitable This book contains complete descriptions of the new standards for -syntax, data structures, and retrieval processes of SQL databases. As +syntax, data structures, and retrieval processes of SQL databases. As an example-based reference manual, it includes all of the CLI functions, information, schema tables, and status codes, as well as a working SQL database provided on the companion disk. @@ -1797,9 +1802,9 @@ working SQL database provided on the companion disk. @end multitable A new and improved revision of the bestselling C language -reference. This manual introduces the notion of "Clean C, " writing C +reference. This manual introduces the notion of "Clean C", writing C code that can be compiled as a C++ program, C programming style that -emphasizes correctness, portability, and maintainability. and +emphasizes correctness, portability, maintainability, and incorporates the ISO C Amendment 1 (1994) which specifies new facilities for writing portable, international programs in C. @* @@ -1815,16 +1820,17 @@ facilities for writing portable, international programs in C. @item Price @tab $39.95 @end multitable -C++ For Real Programmers bridges the gap between C++ as described in -beginner and intermediate-level books and C++ as it is practiced by -experts. Numerous valuable techniques are described, organized into +@emph{C++ For Real Programmers} bridges the gap between C++ as described +in beginner and intermediate-level books and C++ as it is practiced by +experts. Numerous valuable techniques are described, organized into three simple themes: indirection, class hierarchies, and memory -management. It also provides indepth coverage of template creation, -exception handling, pointers and optimization techniques. The focus of -the book is on ANSI C++ and so is compiler independent. C++ For Real -Programmers is a revision of Secrets of the C++ Masters and includes a -new appendix comparing C++ with Java. The book comes with a 3.5" disk -for Windows with source code. +management. It also provides in-depth coverage of template creation, +exception handling, pointers and optimization techniques. The focus of +the book is on ANSI C++ and, as such, is compiler independent. + +@emph{C++ For Real Programmers} is a revision of +@emph{Secrets of the C++ Masters} and includes a new appendix comparing C++ +with Java. The book comes with a 3.5" disk for Windows with source code. @* @emph{Algorithms in C} @@ -1838,11 +1844,11 @@ for Windows with source code. @item Price @tab $45.75 @end multitable -Algorithms in C describes a variety of algorithms in a number of areas -of interest, including: sorting, searching, string-processing, and -geometric, graph and mathematical algorithms. The book emphasizes -fundamental techniques, providing readers with the tools to -confidently implement, run, and debug useful algorithms. +@emph{Algorithms in C} describes a variety of algorithms in a number of +areas of interest, including: sorting, searching, string-processing, and +geometric, graph and mathematical algorithms. The book emphasizes +fundamental techniques, providing readers with the tools to confidently +implement, run, and debug useful algorithms. @* @emph{Multithreaded Programming with Pthreads} @@ -1856,13 +1862,13 @@ confidently implement, run, and debug useful algorithms. @item Price @tab $34.95 @end multitable -Based on the best-selling Threads Primer, Multithreaded Programming -with Pthreads gives you a solid understanding of Posix threads: what -they are, how they work, when to use them, and how to optimize -them. It retains the clarity and humor of the Primer, but includes -expanded comparisons to Win32 and OS/2 implementations. Code examples -tested on all of the major UNIX platforms are featured along with -detailed explanations of how and why they use threads. +Based on the best-selling @emph{Threads Primer}, +@emph{Multithreaded Programming with Pthreads} gives you a solid +understanding of Posix threads: what they are, how they work, when to use +them, and how to optimize them. It retains the clarity and humor of +@emph{Threads Primer}, but includes expanded comparisons to Win32 and OS/2 +implementations. Code examples tested on all of the major UNIX platforms +are featured along with detailed explanations of how and why they use threads. @* @emph{Programming the PERL DBI: Database Programming with PERL} @@ -1876,27 +1882,27 @@ detailed explanations of how and why they use threads. @item Price @tab $27.96 @end multitable -Programming the Perl DBI is coauthored by Alligator Descartes, one of -the most active members of the DBI community, and by Tim Bunce, the -inventor of DBI. For the uninitiated, the book explains the -architecture of DBI and shows you how to write DBI-based programs. For -the experienced DBI dabbler, this book explains DBI's nuances and the -peculiarities of each individual DBD. +@emph{Programming the Perl DBI} is coauthored by Alligator Descartes, one +of the most active members of the DBI community, and by Tim Bunce, the +inventor of DBI. For the uninitiated, the book explains the architecture +of DBI and shows you how to write DBI-based programs. For the experienced +DBI dabbler, this book explains DBI's nuances and the peculiarities of each +individual DBD. The book includes: @itemize @bullet @item -An introduction to DBI and its design +An introduction to DBI and its design. @item -How to construct queries and bind parameters +How to construct queries and bind parameters. @item -Working with database, driver, and statement handles +Working with database, driver, and statement handles. @item -Debugging techniques +Debugging techniques. @item -Coverage of each existing DBD +Coverage of each existing DBD. @item -A complete reference to DBI +A complete reference to DBI. @end itemize @* @@ -1914,28 +1920,29 @@ of @strong{MySQL}: @c with max limits (from crash-me) and so on. @itemize @bullet @item -Fully multi-threaded using kernel threads. That means it can easily +Fully multi-threaded using kernel threads. This means it can easily use multiple CPUs if available. @item -C, C++, Eiffel, Java, Perl, PHP, Python and Tcl APIs. @xref{Clients}. +C, C++, Eiffel, Java, Perl, PHP, Python and Tcl APIs. @xref{Clients}. @item -Works on many different platforms. @xref{Which OS}. +Works on many different platforms. @xref{Which OS}. @item Many column types: signed/unsigned integers 1, 2, 3, 4, and 8 bytes long, @code{FLOAT}, @code{DOUBLE}, @code{CHAR}, @code{VARCHAR}, @code{TEXT}, @code{BLOB}, @code{DATE}, @code{TIME}, @code{DATETIME}, -@code{TIMESTAMP}, @code{YEAR}, @code{SET}, and @code{ENUM} types. @xref{Column -types}. +@code{TIMESTAMP}, @code{YEAR}, @code{SET}, and @code{ENUM} types. +@xref{Column types}. @item Very fast joins using an optimized one-sweep multi-join. @item Full operator and function support in the @code{SELECT} and @code{WHERE} -parts of queries. Example: +parts of queries. For example: + @example mysql> SELECT CONCAT(first_name, " ", last_name) FROM tbl_name WHERE income/dependents > 10000 AND age > 30; @@ -1943,14 +1950,13 @@ mysql> SELECT CONCAT(first_name, " ", last_name) FROM tbl_name @item SQL functions are implemented through a highly optimized class library and -should be as fast as they can get! Usually there shouldn't be any memory -allocation at all after query initialization. +should be as fast as possible! Usually there isn't any memory allocation +at all after query initialization. @item -Full support for SQL @code{GROUP BY} and @code{ORDER BY} -clauses. Support for group functions (@code{COUNT()}, -@code{COUNT(DISTINCT)}, @code{AVG()}, @code{STD()}, @code{SUM()}, -@code{MAX()} and @code{MIN()}). +Full support for SQL @code{GROUP BY} and @code{ORDER BY} clauses. Support +for group functions (@code{COUNT()}, @code{COUNT(DISTINCT ...)}, +@code{AVG()}, @code{STD()}, @code{SUM()}, @code{MAX()} and @code{MIN()}). @item Support for @code{LEFT OUTER JOIN} and @code{RIGHT OUTER JOIN} with ANSI @@ -1961,22 +1967,22 @@ You can mix tables from different databases in the same query (as of Version 3.22). @item -A privilege and password system that is very flexible and secure and +A privilege and password system that is very flexible and secure, and allows host-based verification. Passwords are secure because all password traffic is encrypted when you connect to a server. @item -ODBC (Open-DataBase-Connectivity) support for Win32 (with source). All +ODBC (Open-DataBase-Connectivity) support for Win32 (with source). All ODBC 2.5 functions and many others. For example, you can use MS Access to -connect to your @strong{MySQL} server. @xref{ODBC}. +connect to your @strong{MySQL} server. @xref{ODBC}. @item Very fast B-tree disk tables with index compression. @item -Up to 32 indexes per table are allowed. Each index may consist of 1 to 16 -columns or parts of columns. The maximum index length is 500 bytes (this -may be changed when compiling @strong{MySQL}). An index may use a prefix +Up to 32 indexes per table are allowed. Each index may consist of 1 to 16 +columns or parts of columns. The maximum index length is 500 bytes (this +may be changed when compiling @strong{MySQL}). An index may use a prefix of a @code{CHAR} or @code{VARCHAR} field. @item @@ -1996,38 +2002,38 @@ subset of a table's columns; those columns that are not explicitly given values are set to their default values. @item -Uses GNU Automake, Autoconf, and @code{libtool} for portability. +Uses GNU Automake, Autoconf, and Libtool for portability. @item -Written in C and C++. Tested with a broad range of different compilers. +Written in C and C++. Tested with a broad range of different compilers. @item A very fast thread-based memory allocation system. @item -No memory leaks. Tested with a commercial memory leakage detector -(@code{purify}). +No memory leaks. @strong{MySQL} has been tested with Purify, a commercial +memory leakage detector. @item Includes @code{myisamchk}, a very fast utility for table checking, -optimization, and repair. -@xref{Maintenance}. +optimization, and repair. All of the functionality of @code{myisamchk} +is also available through the SQL interface as well. @xref{Maintenance}. @item Full support for several different character sets, including -ISO-8859-1 (Latin1), big5, ujis, and more. For example, the +ISO-8859-1 (Latin1), big5, ujis, and more. For example, the Scandinavian characters `@ringaccent{a}', `@"a' and `@"o' are allowed in table and column names. @item -All data are saved in the chosen character set. All comparisons for normal +All data are saved in the chosen character set. All comparisons for normal string columns are case insensitive. @item Sorting is done according to the chosen character set (the Swedish -way by default). It is possible to change this when the @strong{MySQL} server +way by default). It is possible to change this when the @strong{MySQL} server is started up. To see an example of very advanced sorting, look at the -Czech sorting code. @strong{MySQL} supports many different character sets +Czech sorting code. @strong{MySQL} supports many different character sets that can be specified at compile and run time. @item @@ -2035,22 +2041,23 @@ Aliases on tables and columns are allowed as in the SQL92 standard. @item @code{DELETE}, @code{INSERT}, @code{REPLACE}, and @code{UPDATE} return -how many rows were changed (affected). It is possible to return the number -of rows matched instead by setting a flag when connecting to the server. +the number of rows that were changed (affected). It is possible to return +the number of rows matched instead by setting a flag when connecting to the +server. @item -Function names do not clash with table or column names. For example, @code{ABS} -is a valid column name. The only restriction is that for a function call, no -spaces are allowed between the function name and the @samp{(} that follows it. -@xref{Reserved words}. +Function names do not clash with table or column names. For example, +@code{ABS} is a valid column name. The only restriction is that for a +function call, no spaces are allowed between the function name and the +@samp{(} that follows it. @xref{Reserved words}. @item All @strong{MySQL} programs can be invoked with the @code{--help} or @code{-?} options to obtain online assistance. @item -The server can provide error messages to clients in many -languages. @xref{Languages}. +The server can provide error messages to clients in many languages. +@xref{Languages}. @item Clients may connect to the @strong{MySQL} server using TCP/IP Sockets, @@ -2058,7 +2065,7 @@ Unix Sockets (Unixes), or Named Pipes (NT). @item The @strong{MySQL}-specific @code{SHOW} command can be used to retrieve -information about databases, tables, and indexes. The @code{EXPLAIN} command +information about databases, tables, and indexes. The @code{EXPLAIN} command can be used to determine how the optimizer resolves a query. @end itemize @@ -2066,30 +2073,28 @@ can be used to determine how the optimizer resolves a query. @node Stability, Year 2000 compliance, Features, Introduction @section How Stable Is MySQL? -This section addresses the questions ``How stable is -@strong{MySQL}?'' and ``Can I depend on @strong{MySQL} in this project?'' -We will try to clarify some issues and to answer some of the more -important questions that seem to concern many people. This section has been -put together from information gathered from the mailing list (which is very -active in reporting bugs). +This section addresses the questions ``How stable is @strong{MySQL}?'' and +``Can I depend on @strong{MySQL} in this project?'' We will try to clarify +some issues and to answer some of the more important questions that seem to +concern many people. This section has been put together from information +gathered from the mailing list (which is very active in reporting bugs). At TcX, @strong{MySQL} has worked without any problems in our projects since -mid-1996. When @strong{MySQL} was released to a wider public, we noticed that +mid-1996. When @strong{MySQL} was released to a wider public, we noticed that there were some pieces of ``untested code'' that were quickly found by the new users who made queries in a manner different than our own. Each new release has had fewer portability problems than the previous one (even though each has had many new features). - @c FIX We've been stable for quite a while now. :) (jcole) Each release of @strong{MySQL} has been usable, and there have been problems -only when users start to use code from the ``gray zones.'' Naturally, outside +only when users start to use code from the ``gray zones.'' Naturally, outside users don't know what the gray zones are; this section attempts to indicate -those that are currently known. The descriptions deal with Version 3.23.x -of @strong{MySQL}. All known and reported bugs are fixed in the -latest version, with the exception of the bugs listed in the bugs section, -which are things that are design-related. @xref{Bugs}. +those that are currently known. The descriptions deal with Version 3.23 +of @strong{MySQL}. All known and reported bugs are fixed in the latest +version, with the exception of the bugs listed in the bugs section, which +are things that are design-related. @xref{Bugs}. @strong{MySQL} is written in multiple layers and different independent modules. These modules are listed below with an indication of how @@ -2100,12 +2105,12 @@ well-tested each of them is: @table @strong @item The ISAM table handler --- Stable This manages storage and retrieval of all data in @strong{MySQL} Version 3.22 -and earlier. In all @strong{MySQL} releases there hasn't been a -single (reported) bug in this code. The only known way to get a -corrupted table is to kill the server in the middle of an update. Even -that is unlikely to destroy any data beyond rescue, because all data are -flushed to disk between each query. There hasn't been a single bug -report about lost data because of bugs in @strong{MySQL}. +and earlier. In all @strong{MySQL} releases there hasn't been a single +(reported) bug in this code. The only known way to get a corrupted table +is to kill the server in the middle of an update. Even that is unlikely +to destroy any data beyond rescue, because all data are flushed to disk +between each query. There hasn't been a single bug report about lost data +because of bugs in @strong{MySQL}. @cindex ISAM table handler @cindex storing, data @@ -2113,15 +2118,15 @@ report about lost data because of bugs in @strong{MySQL}. @cindex data, ISAM table handler @item The MyISAM table handler --- Gamma -This is new in @strong{MySQL} Version 3.23. It's largely based on the ISAM +This is new in @strong{MySQL} Version 3.23. It's largely based on the ISAM table code but has a lot of new and very useful features. @item The parser and lexical analyser --- Stable There hasn't been a single reported bug in this system for a long time. @item The C client code --- Stable -No known problems. In early Version 3.20 releases, there were some limitations -in the send/receive buffer size. As of Version 3.21, the buffer size is now +No known problems. In early Version 3.20 releases, there were some limitations +in the send/receive buffer size. As of Version 3.21, the buffer size is now dynamic up to a default of 16M. @item Standard client programs --- Stable @@ -2130,7 +2135,7 @@ These include @code{mysql}, @code{mysqladmin}, @code{mysqlshow}, @item Basic SQL --- Stable The basic SQL function system and string classes and dynamic memory -handling. Not a single reported bug in this system. +handling. Not a single reported bug in this system. @item Query optimizer --- Stable @@ -2139,7 +2144,7 @@ handling. Not a single reported bug in this system. @item Join optimizer --- Stable @item Locking --- Gamma -This is very system-dependent. On some systems there are big problems +This is very system-dependent. On some systems there are big problems using standard OS locking (@code{fcntl()}). In these cases, you should run the @strong{MySQL} daemon with the @code{--skip-locking} flag. Problems are known to occur on some Linux systems, and on SunOS when using NFS-mounted file @@ -2148,20 +2153,20 @@ systems. @item Linux threads --- Stable The major problem found has been with the @code{fcntl()} call, which is fixed by using the @w{@code{--skip-locking}} option to -@code{mysqld}. Some people have reported lockup problems with Version 0.5. +@code{mysqld}. Some people have reported lockup problems with Version 0.5. LinuxThreads will need to be recompiled if you plan to use -1000+ concurrent connections. Although it is possible to run that many +1000+ concurrent connections. Although it is possible to run that many connections with the default LinuxThreads (however, you will never go above 1021), the default stack spacing of 2 MB makes the application unstable, and we have been able to reproduce a coredump after creating -1021 idle connections. See Linux Notes for more details. +1021 idle connections. @xref{Linux}. @item Solaris 2.5+ pthreads --- Stable We use this for all our production work. @item MIT-pthreads (Other systems) --- Stable There have been no reported bugs since Version 3.20.15 and no known bugs since -Version 3.20.16. On some systems, there is a ``misfeature'' where some +Version 3.20.16. On some systems, there is a ``misfeature'' where some operations are quite slow (a 1/20 second sleep is done between each query). Of course, MIT-pthreads may slow down everything a bit, but index-based @code{SELECT} statements are usually done in one time frame so there shouldn't @@ -2173,19 +2178,19 @@ in @strong{MySQL}, but most often in the thread implementation itself. @item @code{LOAD DATA ...}, @code{INSERT ... SELECT} --- Stable Some people thought they had found bugs here, but these usually have -turned out to be misunderstandings. Please check the manual before reporting +turned out to be misunderstandings. Please check the manual before reporting problems! @item @code{ALTER TABLE} --- Stable Small changes in Version 3.22.12. @item DBD --- Stable -Now maintained by Jochen Wiedmann -@email{wiedmann@@neckar-alb.de}. Thanks! +Now maintained by Jochen Wiedmann +(@email{wiedmann@@neckar-alb.de}). Thanks! @item @code{mysqlaccess} --- Stable -Written and maintained by Yves Carlier -@email{Yves.Carlier@@rug.ac.be}. Thanks! +Written and maintained by Yves Carlier +(@email{Yves.Carlier@@rug.ac.be}). Thanks! @item @code{GRANT} --- Stable Big changes made in @strong{MySQL} Version 3.22.12. @@ -2204,9 +2209,9 @@ between @strong{MySQL} and BDB tables, so it will take some time before this is as tested as the other table types. @item Innobase Tables -- Alpha -This is a very recent addition to @code{MySQL} and are not very tested yet. +This is a very recent addition to @code{MySQL} and is not very tested yet. -@item Automatic recovery of MyISAM tables - Beta. +@item Automatic recovery of MyISAM tables - Beta This only affects the new code that checks if the table was closed properly on open and executes an automatic check/repair of the table if it wasn't. @@ -2215,14 +2220,14 @@ The usage of keys on @code{MERGE} tables is still not that tested. The other part of the @code{MERGE} code is quite well tested. @item FULLTEXT -- Beta -Text search seams to work, but is still not widely used. +Text search seems to work, but is still not widely used. @end table -MySQL AB provides e-mail support for paying customers, but the @strong{MySQL} -mailing list usually provides answers to common questions. Bugs are -usually fixed right away with a patch; for serious bugs, there is almost -always a new release. +@strong{MySQL AB} provides e-mail support for paying customers, but the +@strong{MySQL} mailing list usually provides answers to common questions. +Bugs are usually fixed right away with a patch; for serious bugs, there is +almost always a new release. @cindex Year 2000 compliance @cindex compliance, Y2K @@ -2240,9 +2245,8 @@ until @code{2069}; all 2-digit years are regarded to be in the range @code{year} column, @strong{MySQL} treats it as @code{2001}. @item -All @strong{MySQL} date -functions are stored in one file @file{sql/time.cc} and coded very carefully -to be year 2000-safe. +All @strong{MySQL} date functions are stored in one file @file{sql/time.cc} +and coded very carefully to be year 2000-safe. @item In @strong{MySQL} Version 3.22 and later, the new @code{YEAR} column type @@ -2265,20 +2269,28 @@ any problems with dates until the year 2030: @example mysql> DROP TABLE IF EXISTS y2k; +Query OK, 0 rows affected (0.01 sec) + mysql> CREATE TABLE y2k (date date, date_time datetime, time_stamp timestamp); -mysql> INSERT INTO y2k VALUES ("1998-12-31","1998-12-31 23:59:59",19981231235959); -mysql> INSERT INTO y2k VALUES ("1999-01-01","1999-01-01 00:00:00",19990101000000); -mysql> INSERT INTO y2k VALUES ("1999-09-09","1999-09-09 23:59:59",19990909235959); -mysql> INSERT INTO y2k VALUES ("2000-01-01","2000-01-01 00:00:00",20000101000000); -mysql> INSERT INTO y2k VALUES ("2000-02-28","2000-02-28 00:00:00",20000228000000); -mysql> INSERT INTO y2k VALUES ("2000-02-29","2000-02-29 00:00:00",20000229000000); -mysql> INSERT INTO y2k VALUES ("2000-03-01","2000-03-01 00:00:00",20000301000000); -mysql> INSERT INTO y2k VALUES ("2000-12-31","2000-12-31 23:59:59",20001231235959); -mysql> INSERT INTO y2k VALUES ("2001-01-01","2001-01-01 00:00:00",20010101000000); -mysql> INSERT INTO y2k VALUES ("2004-12-31","2004-12-31 23:59:59",20041231235959); -mysql> INSERT INTO y2k VALUES ("2005-01-01","2005-01-01 00:00:00",20050101000000); -mysql> INSERT INTO y2k VALUES ("2030-01-01","2030-01-01 00:00:00",20300101000000); -mysql> INSERT INTO y2k VALUES ("2050-01-01","2050-01-01 00:00:00",20500101000000); +Query OK, 0 rows affected (0.00 sec) + +mysql> INSERT INTO y2k VALUES + -> ("1998-12-31","1998-12-31 23:59:59",19981231235959), + -> ("1999-01-01","1999-01-01 00:00:00",19990101000000), + -> ("1999-09-09","1999-09-09 23:59:59",19990909235959), + -> ("2000-01-01","2000-01-01 00:00:00",20000101000000), + -> ("2000-02-28","2000-02-28 00:00:00",20000228000000), + -> ("2000-02-29","2000-02-29 00:00:00",20000229000000), + -> ("2000-03-01","2000-03-01 00:00:00",20000301000000), + -> ("2000-12-31","2000-12-31 23:59:59",20001231235959), + -> ("2001-01-01","2001-01-01 00:00:00",20010101000000), + -> ("2004-12-31","2004-12-31 23:59:59",20041231235959), + -> ("2005-01-01","2005-01-01 00:00:00",20050101000000), + -> ("2030-01-01","2030-01-01 00:00:00",20300101000000), + -> ("2050-01-01","2050-01-01 00:00:00",20500101000000); +Query OK, 13 rows affected (0.01 sec) +Records: 13 Duplicates: 0 Warnings: 0 + mysql> SELECT * FROM y2k; +------------+---------------------+----------------+ | date | date_time | time_stamp | @@ -2297,8 +2309,8 @@ mysql> SELECT * FROM y2k; | 2030-01-01 | 2030-01-01 00:00:00 | 20300101000000 | | 2050-01-01 | 2050-01-01 00:00:00 | 00000000000000 | +------------+---------------------+----------------+ - 13 rows in set (0.00 sec) + @end example This shows that the @code{DATE} and @code{DATETIME} types will not @@ -2306,8 +2318,8 @@ give any problems with future dates (they handle dates until the year 9999). The @code{TIMESTAMP} type, which is used to store the current time, has a -range up to only @code{2030-01-01}. @code{TIMESTAMP} has a range of -@code{1970} to @code{2030} on 32-bit machines (signed value). On 64-bit +range up to only @code{2030-01-01}. @code{TIMESTAMP} has a range of +@code{1970} to @code{2030} on 32-bit machines (signed value). On 64-bit machines it handles times up to @code{2106} (unsigned value). Even though @strong{MySQL} is Y2K-compliant, it is your responsibility to @@ -2346,10 +2358,6 @@ Alameda, CA USA A SQL tutorial is available on the net at http://www.geocities.com/SiliconValley/Vista/2207/sql1.html. -@c A nice german 404 error. (jcole) -@c SQL in 21 Tagen (online book in German language): -@c http://www.mut.de/leseecke/buecher/sql/inhalt.htm - @node Useful Links, , General-SQL, Introduction @section Useful MySQL-related Links @@ -2362,450 +2370,448 @@ Apart from the following links, you can find and download a lot of @cindex related information URLs @strong{MySQL} @subheading Tutorials and Manuals -@itemize @bullet -@item @uref{http://www.4t2.com/mysql}@* +@table @asis +@item @uref{http://www.4t2.com/mysql} Information about the German MySQL mailing list. @item @uref{http://www2.rent-a-database.de/mysql/} @strong{MySQL} manual in German. -@item @uref{http://www.bitmover.com:8888//home/bk/mysql}@* +@item @uref{http://www.bitmover.com:8888//home/bk/mysql} Web access to the @strong{MySQL} BitKeeper repository. -@item @uref{http://www.analysisandsolutions.com/code/mybasic.htm}@* +@item @uref{http://www.analysisandsolutions.com/code/mybasic.htm} Beginners @strong{MySQL} Tutorial on how to install and set up @strong{MySQL} on a Windows machine. -@item @uref{http://www.devshed.com/Server_Side/MySQL/}@* +@item @uref{http://www.devshed.com/Server_Side/MySQL/} A lot of @strong{MySQL} tutorials. -@item @uref{http://mysql.hitstar.com/}@* +@item @uref{http://mysql.hitstar.com/} MySQL manual in Chinese. -@item @uref{http://www.linuxplanet.com/linuxplanet/tutorials/1046/1/}@* +@item @uref{http://www.linuxplanet.com/linuxplanet/tutorials/1046/1/} Setting Up a @strong{MySQL}-based Web site. -@item @uref{http://www.hotwired.com/webmonkey/backend/tutorials/tutorial1.html}@* +@item @uref{http://www.hotwired.com/webmonkey/backend/tutorials/tutorial1.html} @strong{MySQL}-Perl tutorial. -@item @uref{http://www.iserver.com/support/contrib/perl5/modules.html}@* +@item @uref{http://www.iserver.com/support/contrib/perl5/modules.html} Installing new Perl modules that require locally installed modules. -@item @uref{http://www.hotwired.com/webmonkey/databases/tutorials/tutorial4.html}@* +@item @uref{http://www.hotwired.com/webmonkey/databases/tutorials/tutorial4.html} PHP/@strong{MySQL} Tutorial. -@item @uref{http://www.useractive.com/}@* +@item @uref{http://www.useractive.com/} Hands on tutorial for @strong{MySQL}. -@end itemize +@end table @subheading Porting MySQL/Using MySQL on Different Systems -@itemize @bullet -@item @uref{http://xclave.macnn.com/MySQL/}@* -The Mac OS Xclave. Running @strong{MySQL} on Mac OS X -@item @uref{http://www.prnet.de/RegEx/mysql.html}@* +@table @asis +@item @uref{http://xclave.macnn.com/MySQL/} +The Mac OS Xclave. Running @strong{MySQL} on Mac OS X. + +@item @uref{http://www.prnet.de/RegEx/mysql.html} MySQL for Mac OS X Server. -@item @uref{http://www.latencyzero.com/macosx/mysql.html}@* -Bulding MySQL for Mac OS X -@item @uref{http://www.essencesw.com/Software/mysqllib.html}@* + +@item @uref{http://www.latencyzero.com/macosx/mysql.html} +Building MySQL for Mac OS X. + +@item @uref{http://www.essencesw.com/Software/mysqllib.html} New Client libraries for the Mac OS Classic (Macintosh). -@item @uref{http://www.lilback.com/macsql/}@* + +@item @uref{http://www.lilback.com/macsql/} Client libraries for Mac OS Classic (Macintosh). -@end itemize +@end table @subheading Perl-related Links -@itemize @bullet -@item @uref{http://dbimysql.photoflux.com/}@* + +@table @asis +@item @uref{http://dbimysql.photoflux.com/} Perl DBI with @strong{MySQL} FAQ. -@end itemize +@end table @subheading MySQL Discussion Forums -@itemize @bullet -@item @uref{http://www.weberdev.com/}@* + +@table @asis +@item @uref{http://www.weberdev.com/} Examples using @strong{MySQL}; (check Top 20) -@item @uref{http://futurerealm.com/forum/futureforum.htm}@* + +@item @uref{http://futurerealm.com/forum/futureforum.htm} FutureForum Web Discussion Software. -@end itemize +@end table @c FIX We should get longer descriptions for things in this category! @subheading Commercial Applications that Support MySQL -@itemize @bullet -@item @uref{http://www.supportwizard.com/}@* +@table @asis +@item @uref{http://www.supportwizard.com/} SupportWizard; Interactive helpdesk on the Web (This product includes a licensed copy of @strong{MySQL}.) -@item @uref{http://www.sonork.com/}@* -Sonork, Instant Messenger that is not only Internet oriented. It's +@item @uref{http://www.sonork.com/} +Sonork, Instant Messenger that is not only Internet oriented. It's focused on private networks and on small to medium companies. Client is free, server is free for up to 5 seats. -@item @uref{http://www.stweb.org/}@* +@item @uref{http://www.stweb.org/} StWeb - Stratos Web and Application server - An easy-to-use, cross platform, Internet/Intranet development and deployment system for -development of web-enabled applications. The standard version of StWeb +development of web-enabled applications. The standard version of StWeb has a native interface to @strong{MySQL} database. -@item @uref{http://www.rightnowtech.com/}@* +@item @uref{http://www.rightnowtech.com/} Right Now Web; Web automation for customer service. -@item @uref{http://www.icaap.org/Bazaar/}@* +@item @uref{http://www.icaap.org/Bazaar/} Bazaar; Interactive Discussion Forums with Web interface. @cindex PhoneSweep -@item @uref{http://www.phonesweep.com/}@* -PhoneSweepT is the world's first commercial Telephone Scanner. Many break-ins +@item @uref{http://www.phonesweep.com/} +PhoneSweepT is the world's first commercial Telephone Scanner. Many break-ins in recent years have come not through the Internet, but through unauthorized -dial-up modems. PhoneSweep lets you find these modems by repeatedly placing +dial-up modems. PhoneSweep lets you find these modems by repeatedly placing phone calls to every phone number that your organization -controls. PhoneSweep has a built-in expert system that can recognize +controls. PhoneSweep has a built-in expert system that can recognize more than 250 different kinds of remote-access programs, including -Carbon Copy(TM), pcANYWHERE(TM), and Windows NT RAS. All information is stored -in the SQL database. It then generates a comprehensive report detailing -which services were discovered on which dial-up numbers in your -organization. - -@end itemize +Carbon Copy(TM), pcANYWHERE(TM), and Windows NT RAS. All information is stored +in the SQL database. It then generates a comprehensive report detailing +which services were discovered on which dial-up numbers in your organization. +@end table @subheading SQL Clients and Report Writers -@itemize @bullet -@item @uref{http://www.urbanresearch.com/software/utils/urbsql/index.html}@* +@table @asis +@item @uref{http://www.urbanresearch.com/software/utils/urbsql/index.html} @strong{MySQL} Editor/Utility for MS Windows Platforms. -@item @uref{http://ksql.sourceforge.net/}@* +@item @uref{http://ksql.sourceforge.net/} KDE @strong{MySQL} client. -@item @uref{http://www.ecker-software.de}@* +@item @uref{http://www.ecker-software.de} A Windows GUI client by David Ecker. -@item @uref{http://www.icaap.org/software/kiosk/}@* -Kiosk; a @strong{MySQL} client for database management. Written in Perl. +@item @uref{http://www.icaap.org/software/kiosk/} +Kiosk; a @strong{MySQL} client for database management. Written in Perl. Will be a part of Bazaar. @item @uref{http://www.casestudio.com/} Db design tool that supports MySQL 3.23. -@item @uref{http://home.skif.net/~voland/zeos/eng/index.html}@* +@item @uref{http://home.skif.net/~voland/zeos/eng/index.html} Zeos - A client that supports @strong{MySQL}, Interbase and PostgreSQL. @item @uref{http://www.geocities.com/SiliconValley/Ridge/4280/GenericReportWriter/grwhome.html} A free report writer in Java -@item @uref{http://www.javaframework.de}@* +@item @uref{http://www.javaframework.de} MySQLExport - Export of @strong{MySQL} create statements and data in a lot of different formats (SQL, HTML, CVS, text, ZIP, GZIP...) -@item @uref{http://dlabs.4t2.com}@* -M2D, a MySQL-ADmin-client for windows. It supports administration of -MySQL-Databases, creating of new DBs and tables, editing etc. +@item @uref{http://dlabs.4t2.com} +M2D, a @strong{MySQL} Administration client for Windows. M2D supports +administration of @strong{MySQL} databases, creation of new databasess and +tables, editing, and more. -@item @uref{http://www.scibit.com/Products/Software/Utils/Mascon.asp}@* -Mascon is a powerful Win32 GUI for the administering MySQL server databases. +@item @uref{http://www.scibit.com/Products/Software/Utils/Mascon.asp} +Mascon is a powerful Win32 GUI for administering MySQL databases. -@item @uref{http://www.rtlabs.com/}@* +@item @uref{http://www.rtlabs.com/} MacSQL Monitor. GUI for MySQL, ODBC, and JDBC databases for the Mac OS. -@end itemize +@end table @subheading Distributions that Include MySQL @c FIX add the rest (at least a couple more Linuxes) -@itemize @bullet -@item @uref{http://www.suse.com/}@* +@table @asis +@item @uref{http://www.suse.com/} SuSE Linux (6.1 and above) -@item @uref{http://www.redhat.com/}@* + +@item @uref{http://www.redhat.com/} RedHat Linux (7.0 and above) + @item @uref{http://distro.conectiva.com.br} Conectiva Linux (4.0 and above) -@end itemize +@end table @subheading Web Development Tools that Support @strong{MySQL} -@itemize @bullet -@item @uref{http://www.php.net/}@* +@table @asis +@item @uref{http://www.php.net/} PHP: A server-side HTML-embedded scripting language. -@item @uref{http://www.midgard-project.org}@* +@item @uref{http://www.midgard-project.org} The Midgard Application Server; a powerful Web development environment based on @strong{MySQL} and PHP. -@item @uref{http://www.smartworker.org}@* +@item @uref{http://www.smartworker.org} SmartWorker is a platform for Web application development. -@item @uref{http://xsp.lentus.se/}@* +@item @uref{http://xsp.lentus.se/} XSP: e(X)tendible (S)erver (P)ages and is a HTML embedded tag language written in Java (previously known as XTAGS.) @cindex dbServ -@item @uref{http://www.dbServ.de/}@* +@item @uref{http://www.dbServ.de/} dbServ is an extension to a web server to integrate database output into -your HTML code. You may use any HTML function in your output. Only the -client will stop you. It works as standalone server or as JAVA servlet. +your HTML code. You may use any HTML function in your output. Only the +client will stop you. It works as standalone server or as Java servlet. -@item @uref{http://www.chilisoft.com/}@* +@item @uref{http://www.chilisoft.com/} Platform independent ASP from Chili!Soft -@c @item -@c no answer from server 990830 -@c @uref{http://www.voicenet.com/~zellert/tjFM}@* -@c A JDBC driver for @strong{MySQL}. +@item @uref{http://www.voicenet.com/~zellert/tjFM} +A JDBC driver for @strong{MySQL}. -@item @uref{http://www.wernhart.priv.at/php/}@* +@item @uref{http://www.wernhart.priv.at/php/} @strong{MySQL} + PHP demos. -@item @uref{http://www.dbwww.com/}@* +@item @uref{http://www.dbwww.com/} ForwardSQL: HTML interface to manipulate @strong{MySQL} databases. -@item @uref{http://www.daa.com.au/~james/www-sql/}@* +@item @uref{http://www.daa.com.au/~james/www-sql/} WWW-SQL: Display database information. -@item @uref{http://www.minivend.com/minivend/}@* +@item @uref{http://www.minivend.com/minivend/} Minivend: A Web shopping cart. -@item @uref{http://www.heitml.com/}@* +@item @uref{http://www.heitml.com/} HeiTML: A server-side extension of HTML and a 4GL language at the same time. -@item @uref{http://www.metahtml.com/}@* +@item @uref{http://www.metahtml.com/} Metahtml: A Dynamic Programming Language for WWW Applications. -@item @uref{http://www.binevolve.com/}@* +@item @uref{http://www.binevolve.com/} VelocityGen for Perl and Tcl. -@item @uref{http://hawkeye.net/}@* +@item @uref{http://hawkeye.net/} Hawkeye Internet Server Suite. -@item @uref{http://www.fastflow.com/}@* +@item @uref{http://www.fastflow.com/} Network Database Connection For Linux -@item @uref{http://www.wdbi.net/}@* +@item @uref{http://www.wdbi.net/} WDBI: Web browser as a universal front end to databases which supports @strong{MySQL} well. -@item @uref{http://www.webgroove.com/}@* +@item @uref{http://www.webgroove.com/} WebGroove Script: HTML compiler and server-side scripting language. -@item @uref{http://www.ihtml.com/}@* +@item @uref{http://www.ihtml.com/} A server-side Web site scripting language. -@item @uref{ftp://ftp.igc.apc.org/pub/myodbc/README}@* +@item @uref{ftp://ftp.igc.apc.org/pub/myodbc/README} How to use @strong{MySQL} with ColdFusion on Solaris. -@item @uref{http://calistra.com/MySQL/}@* +@item @uref{http://calistra.com/MySQL/} Calistra's ODBC @strong{MySQL} Administrator. @cindex Webmerger -@item @uref{http://www.webmerger.com}@* +@item @uref{http://www.webmerger.com} Webmerger - This CGI tool interprets files and generates dynamic output -based on a set of simple tags. Ready-to-run drivers for @strong{MySQL} and +based on a set of simple tags. Ready-to-run drivers for @strong{MySQL} and PostgreSQL through ODBC. -@item @uref{http://phpclub.net/}@* +@item @uref{http://phpclub.net/} PHPclub - Tips and tricks for PHP. -@item @uref{http://www.penguinservices.com/scripts}@* +@item @uref{http://www.penguinservices.com/scripts} @strong{MySQL} and Perl Scripts. -@item @uref{http://www.widgetchuck.com}@* +@item @uref{http://www.widgetchuck.com} The Widgetchuck; Web Site Tools and Gadgets -@item @uref{http://www.adcycle.com/}@* +@item @uref{http://www.adcycle.com/} AdCycle - advertising management software. @cindex pwPage -@item @uref{http://sourceforge.net/projects/pwpage/}@* -pwPage - provides an extremely -fast and simple approach to the creation of database forms. That is, -if a database table exists and an HTML page has been constructed using -a few simple guidelines, pwPage can be immediately used for table data -selections, insertions, updates, deletions and selectable table content -reviewing. - -@item @uref{http://www.omnis-software.com/products/studio/studio.html}@* +@item @uref{http://sourceforge.net/projects/pwpage/} +pwPage - provides an extremely fast and simple approach to the creation +of database forms. That is, if a database table exists and an HTML page +has been constructed using a few simple guidelines, pwPage can be +immediately used for table data selections, insertions, updates, deletions +and selectable table content reviewing. + +@item @uref{http://www.omnis-software.com/products/studio/studio.html} OMNIS Studio is a rapid application development (RAD) tool. @cindex Web+ -@item @uref{http://www.webplus.com}@* +@item @uref{http://www.webplus.com} talentsoft Web+ 4.6 - a powerful and comprehensive development language for use in creating web-based client/server applications without writing complicated, low-level, and time-consuming CGI programs. - -@end itemize +@end table @subheading Database Design Tools with MySQL Support -@itemize @bullet -@item @uref{http://www.mysql.com/documentation/dezign/}@* + +@table @asis +@item @uref{http://www.mysql.com/documentation/dezign/} "DeZign for databases" is a database development tool that uses an entity relationship diagram (ERD). -@end itemize +@end table @subheading Web Servers with @strong{MySQL} Tools -@itemize @bullet -@item @uref{http://bourbon.netvision.net.il/mysql/mod_auth_mysql/}@* +@table @asis +@item @uref{http://bourbon.netvision.net.il/mysql/mod_auth_mysql/} An Apache authentication module. -@item @uref{http://www.roxen.com/}@* + +@item @uref{http://www.roxen.com/} The Roxen Challenger Web server. -@end itemize +@end table @subheading Extensions for Other Programs -@itemize @bullet -@item @uref{http://www.seawood.org/msql_bind/}@* +@table @asis +@item @uref{http://www.seawood.org/msql_bind/} @strong{MySQL} support for BIND (The Internet Domain Name Server). -@item @uref{http://www.inet-interactive.com/sendmail/}@* +@item @uref{http://www.inet-interactive.com/sendmail/} @strong{MySQL} support for Sendmail and Procmail. -@end itemize +@end table @subheading Using @strong{MySQL} with Other Programs -@itemize @bullet +@table @asis @item @uref{http://www.iserver.com/support/addonhelp/database/mysql/msaccess.html} Using @strong{MySQL} with Access. @item @uref{http://www.iserver.com/support/contrib/perl5/modules.html} Installing new Perl modules that require locally installed modules. -@end itemize +@end table @subheading ODBC-related Links -@itemize @bullet -@item @uref{http://www.iodbc.org/}@* -Popular iODBC Driver Manager (libiodbc) now available in Open Source format. +@table @asis +@item @uref{http://www.iodbc.org/} +Popular iODBC Driver Manager (libiodbc) now available as Open Source. -@item @uref{http://users.ids.net/~bjepson/freeODBC/}@* +@item @uref{http://users.ids.net/~bjepson/freeODBC/} The FreeODBC Pages. -@item @uref{http:/http://genix.net/unixODBC/}@* +@item @uref{http:/http://genix.net/unixODBC/} The unixODBC Project goals are to develop and promote unixODBC to be the -definitive standard for ODBC on the Linux platform. This is to include GUI +definitive standard for ODBC on the Linux platform. This is to include GUI support for KDE. -@item @uref{http://www.sw-soft.com/products/BtrieveODBC/}@* -A @strong{MySQL}-based ODBC drivers for Btrieve. From SWsoft. -@end itemize +@item @uref{http://www.sw-soft.com/products/BtrieveODBC/} +A @strong{MySQL}-based ODBC driver for Btrieve. +@end table @subheading @strong{API}-related Links -@itemize @bullet -@c FIX i get no route on this host on 7/31/2k, check later (jcole) -@item @uref{http://www.amedea.cz/mysqlx/index.html}@* -MySQL COM extension - With this COM object you can use MySQL also on -Windows with ASP pages or with Delphi, Visual Basic, Visual C++, etc. - -@item @uref{http://www.jppp.com/}@* +@table @asis +@item @uref{http://www.jppp.com/} Partially implemented TDataset-compatible components for @strong{MySQL}. -@item @uref{http://www.riverstyx.net/qpopmysql/}@* +@item @uref{http://www.riverstyx.net/qpopmysql/} qpopmysql - A patch to allow POP3 authentication from a @strong{MySQL} -database. There's also a link to Paul Khavkine's patch for Procmail to allow -any MTA to deliver to users in a @strong{MySQL} database. +database. There's also a link to Paul Khavkine's patch for Procmail to +allow any MTA to deliver to users in a @strong{MySQL} database. -@item @uref{http://www.pbc.ottawa.on.ca}@* +@item @uref{http://www.pbc.ottawa.on.ca} Visual Basic class generator for Active X. -@item @uref{http://www.essencesw.com/Software/mysqllib.html}@* +@item @uref{http://www.essencesw.com/Software/mysqllib.html} New Client libraries for the Mac OS Classic (Macintosh). -@item @uref{http://www.lilback.com/macsql/}@* +@item @uref{http://www.lilback.com/macsql/} Client libraries for the Macintosh. -@item @uref{http://www.essencesw.com/Plugins/mysqlplug.html}@* -Plugin for REALbasic (for Machintosh) +@item @uref{http://www.essencesw.com/Plugins/mysqlplug.html} +Plugin for REALbasic (for Macintosh) -@item @uref{http://www.iis.ee.ethz.ch/~neeri/macintosh/gusi-qa.html}@* -A library that emulates BSD sockets and pthreads on Macintosh. This can -be used if you want to compile the @strong{MySQL} client library on Mac. It -could probably even be sued to port @strong{MySQL} to Macintosh, but we +@item @uref{http://www.iis.ee.ethz.ch/~neeri/macintosh/gusi-qa.html} +A library that emulates BSD sockets and pthreads on Macintosh. This can +be used if you want to compile the @strong{MySQL} client library on Mac. +It could probably even be sued to port @strong{MySQL} to Macintosh, but we don't know of anyone that has tried that. -@c 404 not found -@c @item @uref{http://tfdec1.fys.kuleuven.ac.be/~michael/fpc-linux/mysql}@* -@c @strong{MySQL} binding to Free Pascal. - -@item @uref{http://www.dedecker.net/jessie/scmdb/}@* +@cindex SCMDB +@item @uref{http://www.dedecker.net/jessie/scmdb/} SCMDB - an add-on for SCM that ports the mysql C library to scheme (SCM). With this library scheme developers can make connections to a mySQL database and use embedded SQL in their programs. -@cindex SCMDB -@end itemize +@end table @subheading Other @strong{MySQL}-related Links -@itemize @bullet +@table @asis @item @uref{http://www.satisoft.com/, SAT} The Small Application Toolkit (SAT) is a collection of utilities intended to simplify the development of small, multi-user, GUI based applications in a (Microsoft -or- X) Windows Client / Unix Server environment. -@item @uref{http://www.wix.com/mysql-hosting/}@* +@item @uref{http://www.wix.com/mysql-hosting/} Registry of Web providers who support @strong{MySQL}. -@item @uref{http://www.softagency.co.jp/mysql/index.en.phtml}@* +@item @uref{http://www.softagency.co.jp/mysql/index.en.phtml} Links about using @strong{MySQL} in Japan/Asia. -@item @uref{http://abattoir.cc.ndsu.nodak.edu/~nem/mysql/udf/}@* +@item @uref{http://abattoir.cc.ndsu.nodak.edu/~nem/mysql/udf/} @strong{MySQL} UDF Registry. -@item @uref{http://www.open.com.au/products.html}@* +@item @uref{http://www.open.com.au/products.html} Commercial Web defect tracking system. -@item @uref{http://www.stonekeep.com/pts/}@* +@item @uref{http://www.stonekeep.com/pts/} PTS: Project Tracking System. -@item @uref{http://tomato.nvgc.vt.edu/~hroberts/mot}@* +@item @uref{http://tomato.nvgc.vt.edu/~hroberts/mot} Job and software tracking system. -@item @uref{http://www.cynergi.net/non-secure/exportsql/}@* +@item @uref{http://www.cynergi.net/non-secure/exportsql/} ExportSQL: A script to export data from Access95+. -@item @uref{http://SAL.KachinaTech.COM/H/1/MYSQL.html}@* +@item @uref{http://SAL.KachinaTech.COM/H/1/MYSQL.html} SAL (Scientific Applications on Linux) @strong{MySQL} entry. -@item @uref{http://www.infotech-nj.com/itech/index.shtml}@* +@item @uref{http://www.infotech-nj.com/itech/index.shtml} A consulting company which mentions @strong{MySQL} in the right company. -@item @uref{http://www.pmpcs.com/}@* -PMP Computer Solutions. Database developers using @strong{MySQL} and +@item @uref{http://www.pmpcs.com/} +PMP Computer Solutions. Database developers using @strong{MySQL} and @code{mSQL}. -@item @uref{http://www.aewa.org/}@* +@item @uref{http://www.aewa.org/} Airborne Early Warning Association. -@item @uref{http://www.dedserius.com/y2kmatrix/}@* +@item @uref{http://www.dedserius.com/y2kmatrix/} Y2K tester. -@end itemize +@end table @subheading SQL and Database Interfaces -@itemize @bullet -@item @uref{http://java.sun.com/products/jdbc/}@* + +@table @asis +@item @uref{http://java.sun.com/products/jdbc/} The JDBC database access API. -@item @uref{http://www.gagme.com/mysql}@* +@item @uref{http://www.gagme.com/mysql} Patch for @code{mSQL} Tcl. -@item @uref{http://www.amsoft.ru/easysql/}@* +@item @uref{http://www.amsoft.ru/easysql/} EasySQL: An ODBC-like driver manager. -@item @uref{http://www.lightlink.com/hessling/rexxsql.html}@* +@item @uref{http://www.lightlink.com/hessling/rexxsql.html} A REXX interface to SQL databases. -@item @uref{http://www.mytcl.cx/}@* +@item @uref{http://www.mytcl.cx/} Tcl interface based on tcl-sql with many bugfixes. -@item @uref{http://www.binevolve.com/~tdarugar/tcl-sql/}@* +@item @uref{http://www.binevolve.com/~tdarugar/tcl-sql/} Tcl interface. -@end itemize +@end table @subheading Examples of MySQL Use -@itemize @bullet +@table @asis @c Added 990601 @c EMAIL: thuss@little6.com (Todd Huss) -@item @uref{http://www.little6.com/about/linux/}@* +@item @uref{http://www.little6.com/about/linux/} Little6 Inc., An online contract and job finding site that is powered by @strong{MySQL}, PHP3, and Linux. @@ -2815,124 +2821,115 @@ Little6 Inc., An online contract and job finding site that is powered by DELECis - A tool that makes it very easy to create an automatically generated table documentation. They have used @strong{MySQL} as an example. -@c @item -@c Added 990531. Removed 000201 -> No answer from server -@c EMAIL: sfambro@hotmail.com (Steve Fambro) -@c @uref{http://shredder.elen.utah.edu/steve.html, Steve Fambro} -@c Uses @strong{MySQL} and webmerger. There is an employee database, and a -@c license plate database with all of the registered Utah vehicles (over -@c 1.2 million). The License plate field is indexed.....so the *searches* -@c are instantaneous. - @c Added 990521 @c EMAIL: info@worldrecords.com (Jim Rota) -@item @uref{http://www.worldrecords.com}@* +@item @uref{http://www.worldrecords.com} World Records - A search engine for information about music that uses @strong{MySQL} and PHP. -@item @uref{http://www.webtechniques.com/archives/1998/01/note/}@* +@item @uref{http://www.webtechniques.com/archives/1998/01/note/} A Contact Database using @strong{MySQL} and PHP. -@item @uref{http://modems.rosenet.net/mysql/}@* +@item @uref{http://modems.rosenet.net/mysql/} Web based interface and Community Calendar with PHP. -@item @uref{http://www.odbsoft.com/cook/sources.htm}@* +@item @uref{http://www.odbsoft.com/cook/sources.htm} Perl package to generate html from a SQL table structure and for generating SQL statements from an html form. -@item @uref{http://www.gusnet.cx/proj/telsql/}@* +@item @uref{http://www.gusnet.cx/proj/telsql/} Basic telephone database using @code{DBI}/@code{DBD}. -@item @uref{http://tecfa.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break}@* +@item @uref{http://tecfa.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break} JDBC examples by Daniel K. Schneider. @item @uref{http://www.spade.com/linux/howto/PostgreSQL-HOWTO-41.html} SQL BNF -@item @uref{http://www.ooc.com/}@* +@item @uref{http://www.ooc.com/} Object Oriented Concepts Inc; CORBA applications with examples in source. -@item @uref{http://www.pbc.ottawa.on.ca/}@* +@item @uref{http://www.pbc.ottawa.on.ca/} DBWiz; Includes an example of how to manage cursors in VB. @cindex Pluribus -@item @uref{http://keilor.cs.umass.edu/pluribus/}@* +@item @uref{http://keilor.cs.umass.edu/pluribus/} Pluribus is a free search engine that learns to improve -the quality of its results over time. Pluribus works by recording -which pages a user prefers among those returned for a query. A user +the quality of its results over time. Pluribus works by recording +which pages a user prefers among those returned for a query. A user votes for a page by selecting it; Pluribus then uses that knowledge to improve the quality of the results when someone else submits the -same (or similar) query. Uses PHP and @strong{MySQL}. +same (or similar) query. Uses PHP and @strong{MySQL}. @c EMAIL: paul@sword.damocles.com (Paul Bannister) -@item @uref{http://www.stopbit.com/}@* +@item @uref{http://www.stopbit.com/} Stopbit - A technology news site using @strong{MySQL} and PHP. @c Added 990604 @c EMAIL: ah@dybdahl.dk -@item @uref{http://www.jokes2000.com/scripts/}@* +@item @uref{http://www.jokes2000.com/scripts/} Example scripts at Jokes2000. -@item @uref{http://www.linuxsupportline.com/~kalendar/}@* +@item @uref{http://www.linuxsupportline.com/~kalendar/} KDE based calendar manager - The calendar manager has both single user (file based) and multi-user (@strong{MySQL} database) support. -@item @uref{http://tim.desert.net/~tim/imger/}@* +@item @uref{http://tim.desert.net/~tim/imger/} Example of storing/retrieving images with @strong{MySQL} and CGI. -@item @uref{http://www.penguinservices.com/scripts}@* +@item @uref{http://www.penguinservices.com/scripts} Online shopping cart system. - @c Added 990928 from editor@city-gallery.com @cindex Old Photo Album -@item @uref{http://www.city-gallery.com/album/}@* +@item @uref{http://www.city-gallery.com/album/} Old Photo Album - The album is a collaborative popular history of photography project that generates all pages from data stored in a @strong{MySQL} -database. Pages are dynamically generated through a php3 interface to the -database content. Users contribute images and descriptions. Contributed images -are stored on the web server to avoid storing them in the database as BLOBs. -All other information is stored on the shared @strong{MySQL} server. -@end itemize +database. Pages are dynamically generated through a php3 interface to the +database content. Users contribute images and descriptions. Contributed +images are stored on the web server to avoid storing them in the database +as BLOBs. All other information is stored on the shared @strong{MySQL} server. +@end table @subheading General Database Links -@itemize @bullet -@item @uref{http://www.pcslink.com/~ej/dbweb.html}@* + +@table @asis +@item @uref{http://www.pcslink.com/~ej/dbweb.html} Database Jump Site -@item @uref{http://black.hole-in-the.net/guy/webdb/}@* +@item @uref{http://black.hole-in-the.net/guy/webdb/} Homepage of the webdb-l (Web Databases) mailing list. -@item @uref{http://www.symbolstone.org/technology/perl/DBI/index.html}@* +@item @uref{http://www.symbolstone.org/technology/perl/DBI/index.html} Perl @code{DBI}/@code{DBD} modules homepage. -@item @uref{http://www.student.uni-koeln.de/cygwin/}@* -Cygwin tools. Unix on top of Windows. +@item @uref{http://www.student.uni-koeln.de/cygwin/} +Cygwin tools. Unix on top of Windows. -@item @uref{http://dbasecentral.com/}@* +@item @uref{http://dbasecentral.com/} dbasecentral.com; Development and distribution of powerful and easy-to-use database applications and systems. @cindex Tek-Tips forums @cindex forums, Tek-Tips -@item @uref{http://www.Tek-Tips.com}@* +@item @uref{http://www.tek-tips.com/} Tek-Tips Forums are 800+ independent peer-to-peer non-commercial support forums for Computer Professionals. Features include automatic e-mail notification of responses, a links library, and member confidentiality guaranteed. -@item @uref{http://www.public.asu.edu/~peterjn/btree/}@* -B-Trees: Balanced Tree Data Structures +@item @uref{http://www.public.asu.edu/~peterjn/btree/} +B-Trees: Balanced Tree Data Structures. -@item @uref{http://www.fit.qut.edu.au/~maire/baobab/lecture/sld001.htm}@* -A lecture about B-Trees -@end itemize +@item @uref{http://www.fit.qut.edu.au/~maire/baobab/lecture/sld001.htm} +A lecture about B-Trees. +@end table -There are also many Web pages that use -@strong{MySQL}. @xref{Users}. Send any additions to this list to -@email{webmaster@@mysql.com}. We now require that you show a -@strong{MySQL} logo somewhere if you wish your site to be added. -(It is okay to have it on a ``used tools'' page or something similar.) +There are also many Web pages that use @strong{MySQL}. @xref{Users}. +Send any additions to this list to @email{webmaster@@mysql.com}. We now +require that you show a @strong{MySQL} logo somewhere if you wish your +site to be added. It is okay to have it on a ``used tools'' page or +something similar. @cindex reporting, errors @cindex MySQL mailing lists @@ -2986,87 +2983,87 @@ users. Your local site may have many subscribers to @email{mysql@@lists.mysql.com}. If so, it may have a local mailing list, so that messages sent from -@code{lists.mysql.com} to your site are propagated to the local list. In such +@code{lists.mysql.com} to your site are propagated to the local list. In such cases, please contact your system administrator to be added to or dropped from the local @strong{MySQL} list. The following @strong{MySQL} mailing lists exist: @table @code -@item @uref{mailto:announce-subscribe@@lists.mysql.com, announce} +@item @email{announce-subscribe@@lists.mysql.com, announce} This is for announcement of new versions of @strong{MySQL} and related -programs. This is a low volume list that we think all @strong{MySQL} -users should be on. +programs. This is a low volume list all @strong{MySQL} users should +subscribe to. -@item @uref{mailto:mysql-subscribe@@lists.mysql.com, mysql} -The main list for general @strong{MySQL} discussion. Please note that some -topics are better discussed on the more-specialized lists. If you post to the +@item @email{mysql-subscribe@@lists.mysql.com, mysql} +The main list for general @strong{MySQL} discussion. Please note that some +topics are better discussed on the more-specialized lists. If you post to the wrong list, you may not get an answer! -@item @uref{mailto:mysql-digest-subscribe@@lists.mysql.com, mysql-digest} -The @code{mysql} list in digest form. That means you get all individual +@item @email{mysql-digest-subscribe@@lists.mysql.com, mysql-digest} +The @code{mysql} list in digest form. That means you get all individual messages, sent as one large mail message once a day. -@item @uref{mailto:bugs-subscribe@@lists.mysql.com, bugs} +@item @email{bugs-subscribe@@lists.mysql.com, bugs} On this list you should only post a full, repeatable bug report using the @code{mysqlbug} script (if you are running on Windows, you should include a description of the operating system and the @strong{MySQL} version). -Preferably, you should test the problem using the latest stable or -development version of @strong{MySQL} before posting! -Anyone should be able to repeat the bug by just using -@code{mysql test < script} on the included test case. All bugs posted on -this list will be corrected or documented in the next @strong{MySQL} release! -If there are only small code changes involved, we will also post a patch that -fixes the problem. - -@item @uref{mailto:bugs-digest-subscribe@@lists.mysql.com, bugs-digest} +Preferably, you should test the problem using the latest stable or development +version of @strong{MySQL} before posting! Anyone should be able to repeat the +bug by just using @code{mysql test < script} on the included test case. All +bugs posted on this list will be corrected or documented in the next +@strong{MySQL} release! If there are only small code changes involved, we +will also post a patch that fixes the problem. + +@item @email{bugs-digest-subscribe@@lists.mysql.com, bugs-digest} The @code{bugs} list in digest form. -@item @uref{mailto:developer-subscribe@@lists.mysql.com, developer} +@item @email{developer-subscribe@@lists.mysql.com, developer} This list has been depreciated in favor of the -@uref{mailto:internals-subscribe@@lists.mysql.com, internals} list (below). +@email{internals-subscribe@@lists.mysql.com, internals} list (below). -@item @uref{mailto:developer-digest-subscribe@@lists.mysql.com, developer-digest} -This list has been depreciated in favor of the -@uref{mailto:internals-digest-subscribe@@lists.mysql.com, internals-digest} list -(below). +@item @email{developer-digest-subscribe@@lists.mysql.com, developer-digest} +This list has been deprecated in favor of the +@email{internals-digest-subscribe@@lists.mysql.com, internals-digest} +list (below). -@item @uref{mailto:internals-subscribe@@lists.mysql.com, internals} -A list for people who work on the @strong{MySQL} code. On this list one +@item @email{internals-subscribe@@lists.mysql.com, internals} +A list for people who work on the @strong{MySQL} code. On this list one can also discuss @strong{MySQL} development and post patches. -@item @uref{mailto:internals-digest-subscribe@@lists.mysql.com, internals-digest} -A digest version of the @uref{mailto:internals-subscribe@@lists.mysql.com, internals} list. +@item @email{internals-digest-subscribe@@lists.mysql.com, internals-digest} +A digest version of the @email{internals-subscribe@@lists.mysql.com, internals} +list. -@item @uref{mailto:java-subscribe@@lists.mysql.com, java} -Discussion about @strong{MySQL} and Java. Mostly about the JDBC drivers. +@item @email{java-subscribe@@lists.mysql.com, java} +Discussion about @strong{MySQL} and Java. Mostly about the JDBC drivers. -@item @uref{mailto:java-digest-subscribe@@lists.mysql.com, java-digest} +@item @email{java-digest-subscribe@@lists.mysql.com, java-digest} A digest version of the @code{java} list. -@item @uref{mailto:win32-subscribe@@lists.mysql.com, win32} +@item @email{win32-subscribe@@lists.mysql.com, win32} All things concerning @strong{MySQL} on Microsoft operating systems such as Win95, Win98, NT, and Win2000. -@item @uref{mailto:win32-digest-subscribe@@lists.mysql.com, win32-digest} +@item @email{win32-digest-subscribe@@lists.mysql.com, win32-digest} A digest version of the @code{win32} list. -@item @uref{mailto:myodbc-subscribe@@lists.mysql.com, myodbc} +@item @email{myodbc-subscribe@@lists.mysql.com, myodbc} All things about connecting to @strong{MySQL} with ODBC. -@item @uref{mailto:myodbc-digest-subscribe@@lists.mysql.com, myodbc-digest} +@item @email{myodbc-digest-subscribe@@lists.mysql.com, myodbc-digest} A digest version of the @code{myodbc} list. -@item @uref{mailto:plusplus-subscribe@@lists.mysql.com, plusplus} +@item @email{plusplus-subscribe@@lists.mysql.com, plusplus} All things concerning programming with the C++ API to @strong{MySQL}. -@item @uref{mailto:plusplus-digest-subscribe@@lists.mysql.com, plusplus-digest} +@item @email{plusplus-digest-subscribe@@lists.mysql.com, plusplus-digest} A digest version of the @code{plusplus} list. -@item @uref{mailto:msql-mysql-modules-subscribe@@lists.mysql.com, msql-mysql-modules} +@item @email{msql-mysql-modules-subscribe@@lists.mysql.com, msql-mysql-modules} A list about the Perl support in @strong{MySQL}. -@item @uref{mailto:msql-mysql-modules-digest-subscribe@@lists.mysql.com, msql-mysql-modules-digest} +@item @email{msql-mysql-modules-digest-subscribe@@lists.mysql.com, msql-mysql-modules-digest} A digest version of the @code{msql-mysql-modules} list. @end table @@ -3077,7 +3074,7 @@ unsubscribe from the @code{myodbc} list, send a message to @email{myodbc-subscribe@@lists.mysql.com} or @email{myodbc-unsubscribe@@lists.mysql.com}. -There is also a german mailing list. You can find information about this +There is also a german mailing list. You can find information about this at: @uref{http://www.4t2.com/mysql}. @cindex net etiquette @@ -3094,8 +3091,8 @@ Start by searching the @strong{MySQL} online manual at: @* @uref{http://www.mysql.com/documentation/manual.php} @* -We try to keep the manual up to date by -updating it frequently with solutions to newly found problems! +We try to keep the manual up to date by updating it frequently with +solutions to newly found problems! @item Search the @strong{MySQL} mailing list archives: @@ -3104,12 +3101,12 @@ Search the @strong{MySQL} mailing list archives: @* @item You can also use @uref{http://www.mysql.com/search.html} to search all the -Web pages (including the manual) that are located at +Web pages (including the manual) that are located at @uref{http://www.mysql.com/}. @end itemize If you can't find an answer in the manual or the archives, check with your -local @strong{MySQL} expert. If you still can't find an answer to your +local @strong{MySQL} expert. If you still can't find an answer to your question, go ahead and read the next section about how to send mail to @email{mysql@@lists.mysql.com}. @@ -3124,9 +3121,9 @@ question, go ahead and read the next section about how to send mail to @section How to Report Bugs or Problems Writing a good bug report takes patience, but doing it right the first -time saves time for us and for you. A good bug report containing a full +time saves time for us and for you. A good bug report containing a full test case for the bug will make it very likely that we will fix it in -the next release. This section will help you write your report correctly +the next release. This section will help you write your report correctly so that you don't waste your time doing things that may not help us much or at all. @@ -3139,16 +3136,16 @@ still include all the necessary information listed in this section. The @code{mysqlbug} script helps you generate a report by determining much of the following information automatically, but if something important is -missing, please include it with your message! Please read this section +missing, please include it with your message! Please read this section carefully and make sure that all the information described here is included in your report. @cindex bug reports, email address -The normal plase to report bugs and problems is -@email{mysql@@lists.mysql.com}. If you can make a test case that clearly -shows the bug, you should post it to the @email{bugs@@lists.mysql.com} -list. Note that on this list you should only post a full, repeatable bug -report using the @code{mysqlbug} script. If you are running on Windows, +The normal place to report bugs and problems is +@email{mysql@@lists.mysql.com}. If you can make a test case that clearly +demonstrates the bug, you should post it to the @email{bugs@@lists.mysql.com} +list. Note that on this list you should only post a full, repeatable bug +report using the @code{mysqlbug} script. If you are running on Windows, you should include a description of the operating system and the @strong{MySQL} version. Preferably, you should test the problem using the latest stable or development version of @strong{MySQL} before @@ -3183,7 +3180,7 @@ the version number of the platform. Remember also to provide information about your compiler, if it is related to the problem. Often people find bugs in compilers and think the problem is -@strong{MySQL} related. Most compilers are under development all the time and +@strong{MySQL}-related. Most compilers are under development all the time and become better version by version. To determine whether or not your problem depends on your compiler, we need to know what compiler is used. Note that every compiling problem should be regarded as a bug report and @@ -3193,17 +3190,17 @@ It is most helpful when a good description of the problem is included in the bug report. That is, a good example of all the things you did that led to the problem and the problem itself exactly described. The best reports are those that include a full example showing how to reproduce the bug or -problem. @xref{Reproducable test case}. +problem. @xref{Reproducable test case}. If a program produces an error message, it is very important to include the -message in your report! If we try to search for something from the archives +message in your report! If we try to search for something from the archives using programs, it is better that the error message reported exactly matches -the one that the program produces. (Even the case should be -observed!) You should never try to remember what the error message was; -instead, copy and paste the entire message into your report! +the one that the program produces. (Even the case should be observed!) +You should never try to remember what the error message was; instead, copy +and paste the entire message into your report! If you have a problem with MyODBC, you should try to genereate a MyODBC -trace file. @xref{MyODBC bug report}. +trace file. @xref{MyODBC bug report}. Please remember that many of the people who will read your report will do so using an 80-column display. When generating reports or examples @@ -3213,14 +3210,14 @@ for output that would exceed the available width for such a display (for example, with the @code{EXPLAIN SELECT} statement; see the example below). -Please include the following information in your report: @cindex bug reports, criteria for +Please include the following information in your report: @itemize @bullet @item The version number of the @strong{MySQL} distribution you are using (for example, @strong{MySQL} Version 3.22.22). You can find out which version you -are running by executing @code{mysqladmin version}. @code{mysqladmin} can be +are running by executing @code{mysqladmin version}. @code{mysqladmin} can be found in the @file{bin} directory under your @strong{MySQL} installation directory. @@ -3228,17 +3225,17 @@ directory. The manufacturer and model of the machine you are working on. @item -The operating system name and version. For most operating systems, you can +The operating system name and version. For most operating systems, you can get this information by executing the Unix command @code{uname -a}. @item -Sometimes the amount of memory (real and virtual) is relevant. -If in doubt, include these values. +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. +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 @@ -3246,9 +3243,9 @@ 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}. +If @code{mysqld} died, you should also report the 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 @@ -3284,9 +3281,9 @@ mysql> SHOW STATUS; @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 +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 @@ -3300,27 +3297,26 @@ 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}. +@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. +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. +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 @@ -3335,7 +3331,7 @@ as Perl or PHP, please include the version number(s) of those as well. 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 +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. @@ -3349,12 +3345,12 @@ 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) +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 @strong{MySQL} team can't guess such things +are usually wrong. Even the @strong{MySQL} team can't guess such things without first using a debugger to determine the real cause of a bug. @item @@ -3363,7 +3359,7 @@ 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 +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 @@ -3374,46 +3370,44 @@ case, your only options are to implement the syntax yourself or e-mail 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}. +when the syntax was implemented. In this case, you have the option of +upgrading to a newer version of @strong{MySQL}. @xref{News}. @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, +try repairing your tables with @code{myisamchk} or @code{CHECK TABLE} and +@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}. +If possible, download and install 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 +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. -For information on reporting bugs in @strong{MyODBC}, see @ref{ODBC -Problems}. +For information on reporting bugs in @strong{MyODBC}, see @ref{ODBC Problems}. For solutions to some common problems, see @xref{Problems}. @@ -3482,10 +3476,10 @@ The formal terms of the GPL license can be found at @ref{GPL license}. Basically, our licensing policy and interpretation 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}. +@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. @@ -3497,13 +3491,12 @@ A license is required if: 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. +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 +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 @@ -3519,7 +3512,7 @@ A license is @strong{NOT} required if: @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 +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}. @@ -3529,13 +3522,13 @@ 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.) +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 @@ -3547,11 +3540,11 @@ 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}. +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 +@uref{https://order.mysql.com/license.htmy}. Other forms of payment are discussed in @ref{Payment information}. @cindex copyrights @@ -3572,22 +3565,21 @@ 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}. +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. +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 +without a license. For this reason, we chose the LGPL license for the client code. @cindex licensing, free @cindex free licensing @@ -3598,13 +3590,13 @@ 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}. +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. +Version 3.22 of @strong{MySQL} is 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 @@ -3624,8 +3616,8 @@ 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. +@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 @@ -3647,7 +3639,7 @@ 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 +If your application does not require @strong{MySQL}, you do not need to 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 @@ -3680,7 +3672,7 @@ don't need a license. @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. +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 @@ -3707,9 +3699,8 @@ 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. +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 @@ -3724,9 +3715,9 @@ enterprise. @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. +review because of the change to a GPL copyright. New prices and terms +will be posted on the @strong{MySQL} web site at @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. @@ -3748,32 +3739,32 @@ For high volume (OEM) purchases, the following prices apply: @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 +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, +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, +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 +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. +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 +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. +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} @@ -3788,8 +3779,8 @@ 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 +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 @@ -3852,8 +3843,8 @@ with your company information and ask us to bill you. @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 +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 @@ -3879,7 +3870,7 @@ 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, +For questions or comments about the workings or content of the Web site, please send e-mail to @email{webmaster@@mysql.com}. @cindex support, types @@ -3897,27 +3888,26 @@ please send e-mail to @email{webmaster@@mysql.com}. * Table handler support:: Support for other table handlers @end menu -The following holds for all support options. +The following is true of all support options: @itemize @bullet @item The support is per year. @item -Fixing or provide reasonable workarounds for any repeatable bug. +We will fix, or provide a reasonable workaround for any repeatable bug. @item -A reasonable effort to find and fix any other MySQL related bug. +We will give a reasonable effort to find and fix any other MySQL related bug. @item -The following doesn't hold for Basic email support (As this only includes -basic installation support): +The higher level of support contract the more effort we will put into finding +a solution to your problems. +@item +The following is true for all support contracts except Basic email support: -For not bug related things, like helping you optimize your queries or -your system, extending MySQL with new functionality... we charge 200 +For non-bug related things, like helping you optimize your queries or +your system, extending MySQL with new functionality, etc., we charge 200 EURO/hour, which is deducted from your support contract. In other words, if you have login support (2000 EURO), you can expect us to work up to 10 hours to help you with things like this. -@item -The higher level of support contract the more effort we will put into finding -a solution to your problems.. @end itemize @cindex email, technical support @@ -3940,20 +3930,19 @@ 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}.) +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}. +@strong{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 +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}. +soon as possible, regardless of your support level! @xref{Bug reports}. Basic e-mail support includes the following types of service: @@ -3976,22 +3965,21 @@ 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 +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 +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 @@ -4008,8 +3996,8 @@ 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 +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}. @@ -4036,7 +4024,7 @@ We will provide hints on optimizing @code{mysqld} for your situation. @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 +TODO List. @xref{TODO}. This will ensure that the features you really need will be implemented sooner than they might be otherwise. @end itemize @@ -4065,7 +4053,7 @@ 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. @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). @@ -4094,11 +4082,11 @@ 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 +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: +You may also request special extensions just for you. For example: @example mysql> select MY_FUNC(col1,col2) from table; @end example @@ -4106,13 +4094,13 @@ mysql> select MY_FUNC(col1,col2) from table; @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 +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 +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 @@ -4148,7 +4136,7 @@ support for. We at @code{MySQL AB} will help you create a proper bug report for the table handler and submit it to the developers for the specific table -handler. We will also do our best to ensure that you will get a timely +handler. We will also do our best to ensure that you will get a timely answer or solution from the developers of the table handler. Even if we are quite confident that we can solve most problems within a @@ -4194,9 +4182,9 @@ 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 +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 @@ -4225,10 +4213,10 @@ 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/} +@uref{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 +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. @@ -4977,7 +4965,7 @@ Please report bad or out-of-date mirrors to @email{webmaster@@mysql.com}. @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 +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. @@ -4988,46 +4976,46 @@ sucessfully on the following operating system/thread package combinations: @itemize @bullet @item -AIX 4.x with native threads. @xref{IBM-AIX}. +AIX 4.x with native threads. @xref{IBM-AIX}. @item -BSDI 2.x with the included MIT-pthreads package. @xref{BSDI}. +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}. +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}. +DEC Unix 4.x with native threads. @xref{Alpha-DEC-UNIX}. @item -FreeBSD 2.x with the included MIT-pthreads package. @xref{FreeBSD}. +FreeBSD 2.x with the included MIT-pthreads package. @xref{FreeBSD}. @item -FreeBSD 3.x and 4.x with native threads. @xref{FreeBSD}. +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}. +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}. +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}. +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}. +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}. +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}. +MIT-pthreads package. @xref{OpenBSD}. @item -OS/2 Warp 3, FixPack 29 and OS/2 Warp 4, FixPack 4. @xref{OS/2}. +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}. +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}. +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}. +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}. +SCO OpenServer with a recent port of the FSU Pthreads package. @xref{SCO}. @item -SCO UnixWare 7.0.1. @xref{SCO Unixware}. +SCO UnixWare 7.0.1. @xref{SCO Unixware}. @item Tru64 Unix @item -Win95, Win98, NT, and Win2000. @xref{Windows}. +Win95, Win98, NT, and Win2000. @xref{Windows}. @end itemize @cindex MySQL binary distribution @@ -5045,17 +5033,14 @@ release or the last stable release: @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 +distribution, we recommend going with the stable release (currently +Version @value{mysql_version}. 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 +don't want to take chances with a non-seamless upgrade, 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. @@ -5066,26 +5051,27 @@ 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 +In the following cases you will probably be better off with a source installation: @itemize @bullet @item -If you want to install @strong{MySQL} at some explicit location. (The standard +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 +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-innobase @item --with-raid @item --with-libwrap @item --with-named-z-lib (This is done for some of the binaries) -@item --with-debugging[=full] +@item --with-debug[=full] @end itemize @item @@ -5100,13 +5086,13 @@ 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 +development team you will probably receive 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 +@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 @@ -5119,21 +5105,19 @@ numbers and a suffix. For example, a release name like @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.) +The first number (@code{3}) describes the file format. All Version 3 +releases have the same file format. @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 +The second number (@code{21}) is the release level. Normally there are two to +choose from. One is the release/stable branch (currently @code{23}) and the +other is the development branch (currently @code{4.0}). 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 +release level. This is incremented for each new distribution. Usually you want the latest version for the release level you have choosen. @item @@ -5141,7 +5125,8 @@ 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 +@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 @@ -5150,8 +5135,8 @@ 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 +@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 @@ -5159,7 +5144,7 @@ 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. +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 @@ -5173,6 +5158,7 @@ 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 @@ -5180,18 +5166,17 @@ 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 +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 +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}. +capabilities and limitations are. @xref{Benchmarks}. @end table Another test is that we use the newest @strong{MySQL} version in our internal @@ -5203,17 +5188,17 @@ gigabytes of data to work with. @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 +@strong{MySQL} is evolving quite rapidly here at @strong{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 +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}. +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}: @@ -5221,7 +5206,7 @@ We use the following policy when updating @strong{MySQL}: @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 +versions, the second number in the version string is incremented. When the file format changes, the first number is increased. @item @@ -5242,19 +5227,19 @@ 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 +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, +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. +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 +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.'' @@ -5342,13 +5327,13 @@ 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. +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}. +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 @@ -5454,7 +5439,7 @@ The most important for installation purposes are the @file{bin} and @table @file @item bin @tindex PATH environment variable -@tindex Environment variable, PATH +@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} @@ -5467,9 +5452,9 @@ the server access permissions. @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 +distribution in some non-standard 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 @@ -5513,9 +5498,9 @@ 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}. +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 @@ -5607,7 +5592,6 @@ and you should now be able to start using @strong{MySQL}. 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 @@ -5617,10 +5601,10 @@ installation chapter. @xref{Installing binary}. 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 +@code{-lmysqlclient -lz} 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. +@code{-L/usr/local/mysql/lib -lmysqlclient -lz} 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, @@ -5658,10 +5642,10 @@ 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} +@code{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 +and @code{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 @@ -5693,7 +5677,7 @@ 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 +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. @@ -5728,10 +5712,9 @@ 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. +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: @@ -5787,12 +5770,11 @@ shell> /usr/sbin/swinstall -s /path/to/depot mysql.developer 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. +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 @@ -5806,15 +5788,15 @@ You need the following tools to build and install @strong{MySQL} from source: GNU @code{gunzip} to uncompress the distribution. @item -A reasonable @code{tar} to unpack the distribution. GNU @code{tar} is +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} >= +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, +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} @@ -5832,8 +5814,8 @@ 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}. +@file{scripts} directory after you unpack the distribution. +@xref{Bug reports}. @menu * Quick install:: Quick installation overview @@ -5891,7 +5873,7 @@ Obtain a distribution file from one of the sites listed in 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}. +proceeding. @xref{BDB}. @strong{MySQL} source distributions are provided as compressed @code{tar} archives and have names like @file{mysql-VERSION.tar.gz}, where @@ -5946,7 +5928,7 @@ 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} +@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 @@ -5995,9 +5977,9 @@ 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}. +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 @@ -6008,10 +5990,9 @@ 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}. +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}. @@ -6068,7 +6049,7 @@ 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 +variables}. For a list of options supported by @code{configure}, run this command: @example @@ -6100,11 +6081,13 @@ to tell it to continue with the rest of the build even if errors occur.) 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 @@ -6112,42 +6095,47 @@ prefix, but overrides the default location for database directories (normally @file{/usr/local/var}) and changes it to @code{/usr/local/mysql/data}. +@cindex changing socket location +@cindex socket location, changing +@cindex mysql.sock, changing location of @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 +@cindex compiling statically +@cindex statically, compiling @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: +RedHat Linux 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 +@tindex CC environment variable +@tindex environment variable, CC +@tindex CXX environment variable +@tindex environment variable, CXX +@cindex gcc +@cindex C++ complier, gcc +@cindex compiler, C++ gcc @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++}. @@ -6156,7 +6144,7 @@ Here is some common environment variables to set depending on the compiler you are using: @tindex CXXFLAGS environment variable -@tindex Environment variable, CXXFLAGS +@tindex environment variable, CXXFLAGS @multitable @columnfractions .20 .80 @item gcc 2.7.2.1 @tab CC=gcc CXX=gcc CXXFLAGS="-O6 -felide-constructors" @@ -6168,8 +6156,8 @@ CFLAGS="-O6 -mpentiumpro" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -felide-constructor 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 +In most cases you can get a reasonably optimal @strong{MySQL} binary by +using the options from the above and adding the following options to the configure line: @example @@ -6183,10 +6171,10 @@ following for all recent gcc versions: 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 @strong{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 +The binaries we provide on the @strong{MySQL} Web site at +@uref{http://www.mysql.com} are all compiled with full optimization and +should be perfect for most users. @xref{MySQL binaries}. There are some +things you 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 @@ -6195,6 +6183,8 @@ 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. +@cindex default values, suppression +@cindex suppression, default values @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 @@ -6204,13 +6194,13 @@ non-@code{NULL} value. To suppress use of default values, run @code{configure} like this: @tindex CXXFLAGS environment variable -@tindex Environment variable, CXXFLAGS +@tindex environment variable, CXXFLAGS @example shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure @end example -@cindex default values, suppression -@cindex suppression, default values +@cindex character sets +@findex configure option, --with-charset @item By default, @strong{MySQL} uses the ISO-8859-1 (Latin1) character set. To change the default set, use the @code{--with-charset} option: @@ -6224,8 +6214,6 @@ shell> ./configure --with-charset=CHARSET @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. @@ -6239,8 +6227,8 @@ 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: +To configure @strong{MySQL} with debugging code, use the @code{--with-debug} +option: @example shell> ./configure --with-debug @end example @@ -6253,7 +6241,7 @@ 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}. +applications. @xref{Thread-safe clients}. @item Options that pertain to particular systems can be found in the @@ -6264,6 +6252,10 @@ system-specific sections later in this chapter. @node Installing source tree, Compilation problems, Installing source, Installing @section Installing from development source tree +@cindex development source tree +@cindex BitKeeper tree +@cindex cvs 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 @@ -6272,22 +6264,25 @@ source or binary distribution. Below are the instructions to obtain our most recent development source tree: -@itemize +@enumerate @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 +@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. +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! @@ -6299,44 +6294,48 @@ aclocal; autoheader; autoconf; automake; 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 +We have a collection of our standard configure scripts in the @file{BUILD/} +subdirectory. If you are lazy, you can use +@file{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 +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}. +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, +please report it to @email{bugs@@lists.mysql.com}. If you have +installed the latest 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 +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. +After the initial @code{bk clone}, do @code{bk pull} to get the updates. + @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 +@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}. +@strong{BitKeeper} has a nice help utility that you can access via +@code{bk helptool}. -@end itemize +@end enumerate @cindex compiling, problems @cindex problems, compiling @@ -6347,8 +6346,8 @@ your idea, just send a description. @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 +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. @@ -6357,6 +6356,8 @@ reconfigure, take note of the following: @cindex running @code{configure} after prior invocation @cindex @code{configure}, running after prior invocation +@cindex reconfiguring +@cindex config.cache @itemize @bullet @item If @code{configure} is run after it already has been run, it may use @@ -6365,6 +6366,7 @@ 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 @@ -6391,6 +6393,7 @@ that have been found to occur most often: @cindex @code{sql_yacc.cc} problems @cindex internal compiler errors @cindex virtual memory, problems while compiling +@cindex configure option, --with-low-memory 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: @@ -6475,13 +6478,13 @@ Solaris and FreeBSD are known to have troublesome @code{make} programs. GNU @code{make} Version 3.75 is known to work. @tindex CC environment variable -@tindex Environment variable, CC +@tindex environment variable, CC @tindex CXX environment variable -@tindex Environment variable, CXX +@tindex environment variable, CXX @tindex CFLAGS environment variable -@tindex Environment variable, CFLAGS +@tindex environment variable, CFLAGS @tindex CXXFLAGS environment variable -@tindex Environment variable, CXXFLAGS +@tindex environment variable, CXXFLAGS @item If you want to define flags to be used by your C or C++ compilers, do so by adding the flags to the @code{CFLAGS} and @code{CXXFLAGS} environment @@ -6551,8 +6554,7 @@ and use that instead. @item If you need to debug @code{mysqld} or a @strong{MySQL} client, run @code{configure} with the @code{--with-debug} option, then recompile and -link your clients with the new client library. -@xref{Debugging client}. +link your clients with the new client library. @xref{Debugging client}. @end itemize @cindex MIT-pthreads @@ -6593,12 +6595,12 @@ to use @code{-h} or @code{--host} when you run client programs. @item When @strong{MySQL} is compiled using MIT-pthreads, system locking is -disabled by default for performance reasons. You can tell the server to use +disabled by default for performance reasons. You can tell the server to use system locking with the @code{--use-locking} option. @item Sometimes the pthread @code{bind()} command fails to bind to a socket without -any error message (at least on Solaris). The result is that all connections +any error message (at least on Solaris). The result is that all connections to the server fail. For example: @example @@ -6613,9 +6615,9 @@ a restart immediately. @item With MIT-pthreads, the @code{sleep()} system call isn't interruptible with -@code{SIGINT} (break). This is only noticeable when you run @code{mysqladmin ---sleep}. You must wait for the @code{sleep()} call to terminate before the -interrupt is served and the process stops. +@code{SIGINT} (break). This is only noticeable when you run +@code{mysqladmin --sleep}. You must wait for the @code{sleep()} call to +terminate before the interrupt is served and the process stops. @item When linking, you may receive warning messages like these (at least on @@ -6641,7 +6643,7 @@ implicit declaration of function `int strtoul(...)' @end example @item -We haven't gotten @code{readline} to work with MIT-pthreads. (This isn't +We haven't gotten @code{readline} to work with MIT-pthreads. (This isn't needed, but may be interesting for someone.) @end itemize @@ -6663,7 +6665,7 @@ needed, but may be interesting for someone.) Perl support for @strong{MySQL} is provided by means of the @code{DBI}/@code{DBD} client interface. @xref{Perl}. The Perl @code{DBD}/@code{DBI} client code requires Perl Version 5.004 or later. The -interface @emph{will not work} if you have an older version of Perl. +interface @strong{will not work} if you have an older version of Perl. @strong{MySQL} Perl support also requires that you've installed @strong{MySQL} client programming support. If you installed @strong{MySQL} @@ -6672,7 +6674,8 @@ support is in the developer RPM. Make sure you've installed the latter RPM. As of Version 3.22.8, Perl support is distributed separately from the main @strong{MySQL} distribution. If you want to install Perl support, the files -you will need can be obtained from @uref{http://www.mysql.com/Downloads/Contrib/}. +you will need can be obtained from +@uref{http://www.mysql.com/Downloads/Contrib/}. The Perl distributions are provided as compressed @code{tar} archives and have names like @file{MODULE-VERSION.tar.gz}, where @code{MODULE} is the @@ -6737,13 +6740,41 @@ To install the @strong{MySQL} @code{DBD} module with ActiveState Perl on Windows, you should do the following: @itemize @bullet -@item Get activestate perl from @uref{http://www.activestate.com/Products/ActivePerl/index.html} and install it. -@item Open a DOS shell. -@item If required, set the HTTP_proxy variable. For example, you might try: -@code{set HTTP_proxy=my.proxy.com:3128} -@item Start the PPM program: @code{C:\perl\bin\ppm.pl} -@item If you have not already done so, install @code{DBI}: @code{install DBI} -@item If this succeeds, install @code{ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd} +@item +Get ActiveState Perl from +@uref{http://www.activestate.com/Products/ActivePerl/index.html} +and install it. + +@item +Open a DOS shell. + +@item +If required, set the HTTP_proxy variable. For example, you might try: + +@example +set HTTP_proxy=my.proxy.com:3128 +@end example + +@item +Start the PPM program: + +@example +C:\> c:\perl\bin\ppm.pl +@end example + +@item +If you have not already done so, install @code{DBI}: + +@example +ppm> install DBI +@end example + +@item +If this succeeds, run the following command: + +@example +install ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd +@end example @end itemize The above should work at least with ActiveState Perl Version 5.6. @@ -6765,13 +6796,22 @@ The @strong{MySQL} Perl distribution contains @code{DBI}, @code{DBD:MySQL} and @code{DBD:ODBC}. @itemize @bullet -@item Get the Perl distribution for Windows from +@item +Get the Perl distribution for Windows from @uref{http://www.mysql.com/download.html}. -@item Unzip the distribution in @code{C:} so that you get a @file{C:\PERL} directory. -@item Add the directory @file{C:\PERL\BIN} to your path. -@item Add the directory @file{C:\PERL\BIN\MSWIN32-x86-thread} or + +@item +Unzip the distribution in @code{C:} so that you get a @file{C:\PERL} directory. + +@item +Add the directory @file{C:\PERL\BIN} to your path. + +@item +Add the directory @file{C:\PERL\BIN\MSWIN32-x86-thread} or @file{C:\PERL\BIN\MSWIN32-x86} to your path. -@item Test that @code{perl} works by executing @code{perl -v} in a DOS shell. + +@item +Test that @code{perl} works by executing @code{perl -v} in a DOS shell. @end itemize @cindex problems, installing Perl @@ -6779,7 +6819,7 @@ The @strong{MySQL} Perl distribution contains @code{DBI}, @node Perl support problems, , Windows Perl, Perl support @subsection Problems Using the Perl @code{DBI}/@code{DBD} Interface -If Perl reports that it can't find the @code{../mysql/mysql.so} module, +If Perl reports that it can't find the @file{../mysql/mysql.so} module, then the problem is probably that Perl can't locate the shared library @file{libmysqlclient.so}. @@ -6795,13 +6835,13 @@ Copy @code{libmysqlclient.so} to the directory where your other shared libraries are located (probably @file{/usr/lib} or @file{/lib}). @item -On @code{Linux} you can add the pathname of the directory where -@code{libmysqlclient.so} is located to the @file{/etc/ld.so.conf} file. +On Linux you can add the pathname of the directory where +@file{libmysqlclient.so} is located to the @file{/etc/ld.so.conf} file. -@item @tindex LD_RUN_PATH environment variable @tindex Environment variable, LD_RUN_PATH -Add the pathname of the directory where @code{libmysqlclient.so} is located +@item +Add the pathname of the directory where @file{libmysqlclient.so} is located to the @code{LD_RUN_PATH} environment variable. @end itemize @@ -6944,8 +6984,8 @@ In this case, you must use GNU @code{tar} (@code{gtar}) to unpack the distribution. You can find a precompiled copy for Solaris at @uref{http://www.mysql.com/Downloads/}. -Sun native threads work only on Solaris 2.5 and higher. For Version 2.4 and -earlier, @strong{MySQL} will automatically use MIT-pt threads. +Sun native threads work only on Solaris 2.5 and higher. For Version 2.4 and +earlier, @strong{MySQL} will automatically use MIT-pthreads. @xref{MIT-pthreads}. If you get the following error from configure: @@ -6955,10 +6995,10 @@ checking for restartable system calls... configure: error can not run test programs while cross compiling @end example -this means that you have something wrong with your compiler installation! +This means that you have something wrong with your compiler installation! In this case you should upgrade your compiler to a newer version. You may also be able to solve this problem by inserting the following row into the -@code{config.cache} file: +@file{config.cache} file: @example ac_cv_sys_restartable_syscalls=$@{ac_cv_sys_restartable_syscalls='no'@} @@ -7002,7 +7042,7 @@ to this: @end example If you turn on @code{__STDC__} with the @code{-Xc} option, the Sun compiler -can't compile with the Solaris @file{pthread.h} header file. This is a Sun +can't compile with the Solaris @file{pthread.h} header file. This is a Sun bug (broken compiler or broken include file). If @code{mysqld} issues the error message shown below when you run it, you have @@ -7061,17 +7101,19 @@ The problem can be avoided by one of the following methods: @item Link the client with the following flag (instead of @code{-Lpath}): @code{-Wl,r/full-path-to-libmysqlclient.so}. + @item -Copy @code{libmysqclient.so} to @file{/usr/lib}. -@item +Copy @file{libmysqclient.so} to @file{/usr/lib}. + @tindex LD_RUN_PATH environment variable @tindex Environment variable, LD_RUN_PATH -Add the pathname of the directory where @code{libmysqlclient.so} is located +@item +Add the pathname of the directory where @file{libmysqlclient.so} is located to the @code{LD_RUN_PATH} environment variable before running your client. @end itemize When using the @code{--with-libwrap} configure option, you must also -include the libraries that @code{libwrap.a} needs: +include the libraries that @file{libwrap.a} needs: @example --with-libwrap="/opt/NUtcpwrapper-7.6/lib/libwrap.a -lnsl -lsocket @@ -7084,6 +7126,7 @@ you don't have @code{zlib} installed, you have two options: @item If you want to be able to use the compressed communication protocol, you need to get and install zlib from ftp.gnu.org. + @item Configure with @code{--with-named-z-libs=no}. @end itemize @@ -7094,7 +7137,7 @@ into @strong{MySQL}, try adding @code{-lgcc} to the link line for the If you would like @strong{MySQL} to start automatically, you can copy @file{support-files/mysql.server} to @file{/etc/init.d} and create a -symbolic link to it named @code{/etc/rc3.d/S99mysql.server}. +symbolic link to it named @file{/etc/rc3.d/S99mysql.server}. @node Solaris 2.7, Solaris x86, Solaris, Source install system issues @subsection Solaris 2.7/2.8 Notes @@ -7105,7 +7148,7 @@ of the Solaris 2.6 issues also apply for Solaris 2.7 and 2.8. Note that @strong{MySQL} Version 3.23.4 and above should be able to autodetect new versions of Solaris and enable workarounds for the following problems! -Solaris 2.7 / 2.8 has some bugs in the include files. You may see the +Solaris 2.7 / 2.8 has some bugs in the include files. You may see the following error when you use @code{gcc}: @example @@ -7133,7 +7176,7 @@ way, after you make the fix, you should remove @file{config.cache} and run If you get errors like this when you run @code{make}, it's because @code{configure} didn't detect the @file{curses.h} file (probably -because of the error in @code{/usr/include/widec.h}): +because of the error in @file{/usr/include/widec.h}): @example In file included from mysql.cc:50: @@ -7146,8 +7189,10 @@ The solution to this is to do one of the following: @itemize @bullet @item Configure with @code{CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H ./configure}. + @item Edit @file{/usr/include/widec.h} as indicted above and rerun configure. + @item Remove the @code{#define HAVE_TERM} line from @file{config.h} file and run @code{make} again. @@ -7161,13 +7206,16 @@ following methods: @itemize @bullet @item Add @file{/usr/local/lib} to @code{LD_LIBRARY_PATH}. + @item -Add a link to @code{libz.so} from @code{/lib}. +Add a link to @file{libz.so} from @file{/lib}. + @item If you are using Solaris 8, you can install the optional zlib from your Solaris 8 CD distribution. + @item -configure @strong{MySQL} with the @code{--with-named-z-libs=no} option. +Configure @strong{MySQL} with the @code{--with-named-z-libs=no} option. @end itemize @node Solaris x86, SunOS, Solaris 2.7, Source install system issues @@ -7196,9 +7244,8 @@ it with a trace file or under @code{gdb}. @xref{Debugging server}. On SunOS 4, MIT-pthreads is needed to compile @strong{MySQL}, which in turn means you will need GNU @code{make}. -Some SunOS 4 systems have problems with dynamic libraries and -@code{libtool}. You can use the following @code{configure} line to avoid -this problem: +Some SunOS 4 systems have problems with dynamic libraries and @code{libtool}. +You can use the following @code{configure} line to avoid this problem: @example shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static @@ -7215,114 +7262,113 @@ of function} warnings. These may be ignored. @strong{MySQL} uses LinuxThreads on Linux. If you are using an old Linux version that doesn't have @code{glibc2}, you must install -LinuxThreads before trying to compile -@strong{MySQL}. @uref{http://www.mysql.com/Downloads/Linux} +LinuxThreads before trying to compile @strong{MySQL}. You can get +LinuxThreads at @uref{http://www.mysql.com/Downloads/Linux}. Note that @code{glibc} versions before and including Version 2.1.1 have a fatal bug in @code{pthread_mutex_timedwait} handling, which is used -when you do @code{INSERT DELAYED}. We recommend you to not use +when you do @code{INSERT DELAYED}. We recommend you to not use @code{INSERT DELAYED} before upgrading glibc. If you plan to have 1000+ concurrent connections, you will need to make some changes to LinuxThreads, recompile it, and relink @strong{MySQL} against -the new @file{libpthread.a}. Increase @code{PTHREAD_THREADS_MAX} in +the new @file{libpthread.a}. Increase @code{PTHREAD_THREADS_MAX} in @file{sysdeps/unix/sysv/linux/bits/local_lim.h} to 4096 and decrease @code{STACK_SIZE} in @file{linuxthreads/internals.h} to 256 KB. The paths are -relative to the root of @code{glibc} Note that MySQL -will not be stable with around 600-1000 connections if @code{STACK_SIZE} -is the default of 2 MB. +relative to the root of @code{glibc} Note that @strong{MySQL} will not be +stable with around 600-1000 connections if @code{STACK_SIZE} is the default +of 2 MB. -@code{STACK_SIZE} constant in @strong{LinuxThreads} controls the spacing -of thread -stacks in the address space. It needs to be large enough so that there will +The @code{STACK_SIZE} constant in LinuxThreads controls the spacing of thread +stacks in the address space. It needs to be large enough so that there will be plenty of room for the stack of each individual thread, but small enough to keep the stack of some thread from running into the global @code{mysqld} -data. Unfortunately, Linux implementation of @code{mmap()}, as we have +data. Unfortunately, the Linux implementation of @code{mmap()}, as we have experimentally discovered, will successfully unmap an already mapped region if you ask it to map out an address already in use, zeroing out the data -on the entire page, instead of returning an error. So the safety of -@code{mysqld} or any other threaded -application depends on the "gentleman" behaviour of the code -that creates threads - the user must take measures to make sure the number -of running threads at any time is sufficiently low for thread stacks to -stay away from the global heap. -With @code{mysqld}, you should enforce this "gentleman" -behaviour by setting a reasonable value for @code{max_connections} variable. +on the entire page, instead of returning an error. So, the safety of +@code{mysqld} or any other threaded application depends on the "gentleman" +behaviour of the code that creates threads. The user must take measures to +make sure the number of running threads at any time is sufficiently low for +thread stacks to stay away from the global heap. With @code{mysqld}, you +should enforce this "gentleman" behaviour by setting a reasonable value for +the @code{max_connections} variable. + If you build @strong{MySQL} yourself and do not what to mess with patching -@strong{LinuxThreads}, you should set @code{max_connections} to a value no -higher than 500. It should be even less if you have a large key buffer, -large heap tables, or some other things that make @strong{mysqld} allocate -a lot of memory or if you are running a 2.2 kernel with a 2 GB patch. If -you are using our binary or RPM version 3.23.25 or later, you can safely set -@code{max_connections} at 1500 again assuming no large key buffer or heap -tables with lots of data. The more you reduce @code{STACK_SIZE} in -LinuxThreads the more threads you can safely create. We recommend the values -between 128K and 256 K. - -If you use a lot of concurrent connections, you may suffer from a 2.2 -kernel "feature" in 2.2 kernel that penalizes a process for -forking or cloning a child -in an attempt to prevent a fork bomb attack. This will cause @strong{MySQL} -not to scale well as you increase the number of concurrent clients. On +LinuxThreads, you should set @code{max_connections} to a value no higher +than 500. It should be even less if you have a large key buffer, large +heap tables, or some other things that make @strong{mysqld} allocate a lot +of memory or if you are running a 2.2 kernel with a 2GB patch. If you are +using our binary or RPM version 3.23.25 or later, you can safely set +@code{max_connections} at 1500, assuming no large key buffer or heap tables +with lots of data. The more you reduce @code{STACK_SIZE} in LinuxThreads +the more threads you can safely create. We recommend the values between +128K and 256K. + +If you use a lot of concurrent connections, you may suffer from a "feature" +in the 2.2 kernel that penalizes a process for forking or cloning a child +in an attempt to prevent a fork bomb attack. This will cause @strong{MySQL} +not to scale well as you increase the number of concurrent clients. On single CPU systems, we have seen this manifested in a very slow thread -creation - which means it may take a long time to connect to @strong{MySQL} -(as long as 1 minute), and it may take just as long to shut it down. On +creation, which means it may take a long time to connect to @strong{MySQL} +(as long as 1 minute), and it may take just as long to shut it down. On multiple CPU systems, we have observed a gradual drop in query speed as -the number of clients increases. In the process of trying to find a +the number of clients increases. In the process of trying to find a solution, we have received a kernel patch from one of our users, who -claimed it made a lot of difference for his site. We have done some +claimed it made a lot of difference for his site. We have done some limited testing in which the patch greatly improved the scalability of -@strong{MySQL}. The patch is available here -(@uref{http://www.mysql.com/Downloads/Patches/linux-fork.patch}). We have -done a rather extensive testing of this patch - Sasha Pachev has bravely put -it on his development machine, and it now has run without problems for a year. -Eventually, we have felt sufficiently confident about it that we installed it -on several systems of one of our biggest customers. The patch has significantly -improved @code{MySQL} performance without causing any problems. So it should -be pretty safe. This issue has been fixed in the 2.4 kernel. - -We have also tested @strong{MySQL} on 2.4 kernel on a 2 CPU machine and -found @strong{MySQL} scales MUCH better - there was virtually no slowdown -on query throughput all the way up -to 1000 clients. If your plan to set up a +@strong{MySQL}. + +The patch is available at +@uref{http://www.mysql.com/Downloads/Patches/linux-fork.patch}. We have +done a rather extensive testing of this patch, it has run, without problems, +on some of our development machines, for more than a year. Eventually, we +have felt sufficiently confident about it that we installed it on several +systems of one of our biggest customers. The patch has significantly +improved @code{MySQL} performance without causing any problems. It should +be pretty safe. This issue has been fixed in the 2.4 kernel. + +We have also tested @strong{MySQL} on 2.4 kernel on 2- and 4-CPU machines and +found @strong{MySQL} scales MUCH better. There was virtually no slowdown +on query throughput all the way up to 1000 clients. If you plan to set up a dedicated Linux SMP machine to run @strong{MySQL} under heavy load, we -recommend that you give 2.4 kernel a try! We are currently trying to collect -some info on how well @code{MySQL} performs on 2.4 kernel on 4-way and 8-way -systems. If you have access such a system and have done some benchmarks, -please send a mail to @email{docs@@mysql.com} with the results - we will -include them in the manual. - -The following paragraph is only relevant if you are using a glibc -version older than 2.2.2 (Note that if you are going to use MANY -connections to MySQL, you still need to change the STACK_SIZE and +recommend that you give the 2.4 kernel a try! We are currently trying to +collect more information on how well @code{MySQL} performs on the 2.4 kernel +on 4- and 8-CPU systems. If you have access such a system and have done some +benchmarks, please send a mail to @email{docs@@mysql.com} with the results, +and we will include them in the manual. + +The following paragraph is only relevant if you are using a glibc version +older than 2.2.2 (Note that if you are going to use MANY connections to +@strong{MySQL}, you still need to change the STACK_SIZE and PTHREAD_THREADS_MAX variables in glibc 2.2.2). There is another issue that greatly hurts @strong{MySQL} performance, -especially on SMP systems. The old implementation of mutex in +especially on SMP systems. The old implementation of mutexes in LinuxThreads was also very bad for programs with many threads that only -hold the mutex for a short time. On an SMP system, ironic as it is, if +hold the mutex for a short time. On an SMP system, ironic as it is, if you link @strong{MySQL} against unmodified @strong{LinuxThreads}, removing processors from the machine improves @strong{MySQL} performance in many cases. We have made a patch available for glibc 2.1, -@uref{http://www.mysql.com/Downloads/Linux/linuxthreads-2.1-patch,linuxthreads-2.1-patch} +@uref{http://www.mysql.com/Downloads/Linux/linuxthreads-2.1-patch} and for glibc 2.2, -@uref{http://www.mysql.com/Downloads/Linux/linuxthreads-2.2-patch,linuxthreads-2.2-patch} -to correct this behaveour. Please note that since there are so many +@uref{http://www.mysql.com/Downloads/Linux/linuxthreads-2.2-patch} +to correct this behavior. Please note that since there are so many versions of glibc floating around, the patch may not apply cleanly to yours, so some manual work may be required. We recommend that you use the above patches to build a special static -version of @code{libpthread.a} and use it only for statically linking -against @code{MySQL}. We know that the patch is safe for @code{MySQL} +version of @file{libpthread.a} and use it only for statically linking +against @code{MySQL}. We know that the patch is safe for @code{MySQL} and significantly improves its performance, but we cannot say anything -about other applications. If you link other applications against the +about other applications. If you link other applications against the patched version of the library, or build a patched shared version and install it on your system, you are doing it at your own risk with regard to other applications that depend on @code{LinuxThreads}. If you can't start @code{mysqld} or if @code{mysql_install_db} doesn't work, please continue reading! This only happens on Linux system with problems in -the LinuxThreads or @code{libc}/@code{glibc} libraries. There are a lot of +the LinuxThreads or @code{libc}/@code{glibc} libraries. There are a lot of simple workarounds to get @strong{MySQL} to work! The simplest is to use the binary version of @strong{MySQL} (not the RPM) for Linux x86. One nice aspect of this version is that it's probably 10% faster than any version you @@ -7333,15 +7379,15 @@ systems that use @code{libc} (like RedHat 4.x or Slackware), you will get some non-fatal problems with hostname resolution. @xref{Binary notes-Linux}. -@code{myisamchk} hangs with @code{libc.so.5.3.12}. Upgrading to the newest +@code{myisamchk} hangs with @code{libc.so.5.3.12}. Upgrading to the newest @code{libc} fixes this problem. When using LinuxThreads you will see a minimum of three processes -running. These are in fact threads. There will be one thread for the +running. These are in fact threads. There will be one thread for the LinuxThreads manager, one thread to handle connections, and one thread to handle alarms and signals. -Note that the linux kernel and the linuxthread library can by default +Note that the Linux kernel and the LinuxThread library can by default only have 1024 threads. This means that you can only have up to 1021 connections to @strong{MySQL} on an unpatched system. The page @uref{http://www.volano.com/linuxnotes.html} contains information how to @@ -7349,13 +7395,13 @@ go around this limit. If you see a dead @code{mysqld} daemon process with @code{ps}, this usually means that you have found a bug in @strong{MySQL} or you have a corrupted -table. @xref{Crashing}. +table. @xref{Crashing}. -To get a core dump on Linux if mysqld dies with a SIGSEGV -signal, you can start mysqld with the @code{--core-file} option. Note -that you also probably need to raise the @code{core file size} by adding -@code{ulimit -c 1000000} to @code{safe_mysqld} or starting @code{safe_mysqld} -with @code{--core-file-sizes=1000000}. @xref{safe_mysqld}. +To get a core dump on Linux if mysqld dies with a SIGSEGV signal, you can +start mysqld with the @code{--core-file} option. Note that you also probably +need to raise the @code{core file size} by adding @code{ulimit -c 1000000} to +@code{safe_mysqld} or starting @code{safe_mysqld} with +@code{--core-file-sizes=1000000}. @xref{safe_mysqld}. @c the stuff below is really out of date - hardly anybody uses it anymore @@ -7374,7 +7420,7 @@ If so, you should upgrade your version of @code{rpm} to @file{rpm-2.4.11-1.i386.rpm} and @file{rpm-devel-2.4.11-1.i386.rpm} (or later). You can get the upgrades of libraries to RedHat Version 4.2 from -@uref{ftp://ftp.redhat.com/updates/4.2/i386}. Or +@uref{ftp://ftp.redhat.com/updates/4.2/i386}. Or @uref{http://www.sunsite.unc.edu/pub/Linux/distributions/redhat/code/rpm/} for other distributions. @@ -7391,11 +7437,13 @@ methods: @item Link the client with the following flag (instead of @code{-Lpath}): @code{-Wl,r/path-libmysqlclient.so}. + @item Copy @code{libmysqclient.so} to @file{/usr/lib}. -@item + @tindex LD_RUN_PATH environment variable -@tindex Environment variable, LD_RUN_PATH +@tindex environment variable, LD_RUN_PATH +@item Add the pathname of the directory where @code{libmysqlclient.so} is located to the @code{LD_RUN_PATH} environment variable before running your client. @end itemize @@ -7425,7 +7473,7 @@ CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE -DCONST=const - @subsubsection Linux-x86 Notes @strong{MySQL} requires @code{libc} Version 5.4.12 or newer. It's known to -work with @code{libc} 5.4.46. @code{glibc} Version 2.0.6 and later should +work with @code{libc} 5.4.46. @code{glibc} Version 2.0.6 and later should also work. There have been some problems with the @code{glibc} RPMs from RedHat, so if you have problems, check whether or not there are any updates! The @code{glibc} 2.0.7-19 and 2.0.7-29 RPMs are known to work. @@ -7466,7 +7514,7 @@ under the @strong{MySQL} installation directory or in the If @code{mysqld} always core dumps when it starts up, the problem may be that you have an old @file{/lib/libc.a}. Try renaming it, then remove @file{sql/mysqld} and do a new @code{make install} and try again. This -problem has been reported on some Slackware installations. RedHat Version 5.0 +problem has been reported on some Slackware installations. RedHat Version 5.0 also has a similar problem with some new @code{glibc} versions. @xref{Linux-RedHat50}. @@ -7497,17 +7545,17 @@ any trouble! The updates are needed because there is a bug in @code{glibc} 2.0.5 in how @code{pthread_key_create} variables are freed. With @code{glibc} 2.0.5, you -must use a statically linked @strong{MySQL} binary distribution. If you +must use a statically linked @strong{MySQL} binary distribution. If you want to compile from source, you must install the corrected version of LinuxThreads from @uref{http://www.mysql.com/Downloads/Linux} or upgrade your @code{glibc}. If you have an incorrect version of @code{glibc} or LinuxThreads, the symptom -is that @code{mysqld} crashes after each connection. For example, +is that @code{mysqld} crashes after each connection. For example, @code{mysqladmin version} will crash @code{mysqld} when it finishes! Another symptom of incorrect libraries is that @code{mysqld} crashes at -once when it starts. On some Linux systems, this can be fixed by configuring +once when it starts. On some Linux systems, this can be fixed by configuring like this: @example @@ -7520,6 +7568,7 @@ On Redhat Version 5.0, the easy way out is to install the @code{glibc} For the source distribution of @code{glibc} 2.0.7, a patch that is easy to apply and is tested with @strong{MySQL} may be found at: + @example @uref{http://www.mysql.com/Download/Linux/glibc-2.0.7-total-patch.tar.gz} @end example @@ -7563,40 +7612,40 @@ the limits in @file{include/linux/tasks.h} and recompile your kernel! @subsubsection Linux-SPARC Notes In some implementations, @code{readdir_r()} is broken. The symptom is that -@code{SHOW DATABASES} always returns an empty set. This -can be fixed by removing @code{HAVE_READDIR_R} from @file{config.h} after -configuring and before compiling. +@code{SHOW DATABASES} always returns an empty set. This can be fixed by +removing @code{HAVE_READDIR_R} from @file{config.h} after configuring and +before compiling. Some problems will require patching your Linux installation. The patch can be found at -@uref{http://www.mysql.com/Downloads/patches/Linux-sparc-2.0.30.diff}. This patch is -against the Linux distribution @file{sparclinux-2.0.30.tar.gz} that is -available at @code{vger.rutgers.edu} (a version of Linux that was -never merged with the official 2.0.30). You must also install -LinuxThreads Version 0.6 or newer. +@uref{http://www.mysql.com/Downloads/patches/Linux-sparc-2.0.30.diff}. +This patch is against the Linux distribution @file{sparclinux-2.0.30.tar.gz} +that is available at @code{vger.rutgers.edu} (a version of Linux that was +never merged with the official 2.0.30). You must also install LinuxThreads +Version 0.6 or newer. @node Linux-Alpha, MKLinux, Linux-SPARC, Linux @subsubsection Linux-Alpha Notes @strong{MySQL} Version 3.23.12 is the first @strong{MySQL} version that is -tested on Linux-Alpha. If you plan to use @strong{MySQL} on -Linux-Alpha, you should ensure that you have this version or newer. +tested on Linux-Alpha. If you plan to use @strong{MySQL} on Linux-Alpha, +you should ensure that you have this version or newer. -We have tested @strong{MySQL} on Alpha with our benchmarks + test suite and -it appears to work nicely. The main thing we haven't yet had time to test -is how things works with many concurrent users. +We have tested @strong{MySQL} on Alpha with our benchmarks and test suite, +and it appears to work nicely. The main thing we haven't yet had time to +test is how things works with many concurrent users. When we compiled the standard @strong{MySQL} binary we are using SuSE 6.4, kernel 2.2.13-SMP, Compaq C compiler (V6.2-504) and Compaq C++ compiler -(V6.3-005) on a Comaq DS20 machine with an Alpha EV6 processor +(V6.3-005) on a Comaq DS20 machine with an Alpha EV6 processor. -You can find the above compilers at -@uref{http://www.support.compaq.com/alpha-tools}). By using these compilers, +You can find the above compilers at +@uref{http://www.support.compaq.com/alpha-tools}). By using these compilers, instead of gcc, we get about 9-14 % better performance with @strong{MySQL}. Note that the configure line optimized the binary for the current CPU; This -means you can only use our binary if you have an Alpha EV6 processor. -We also compile statically to avoid library problems. +means you can only use our binary if you have an Alpha EV6 processor. We also +compile statically to avoid library problems. @example CC=ccc CFLAGS="-fast" CXX=cxx CXXFLAGS="-fast -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-thread-safe-client --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared @@ -7614,10 +7663,11 @@ Some known problems when running @strong{MySQL} on Linux-Alpha: @item Debugging threaded applications like @strong{MySQL} will not work with @code{gdb 4.18}. You should download and use gdb 5.0 instead! + @item If you try linking mysqld statically when using gcc, the resulting image will core dump at start. In other words, @strong{DON'T} use -@code{--with-mysqld-ldflags=-all-static} with gcc +@code{--with-mysqld-ldflags=-all-static} with gcc. @end itemize @node MKLinux, Qube2, Linux-Alpha, Linux @@ -7631,10 +7681,9 @@ will core dump at start. In other words, @strong{DON'T} use To get @strong{MySQL} to work on Qube2, (Linux Mips), you need the newest @code{glibc} libraries (@code{glibc-2.0.7-29C2} is known to -work). You must also use the @code{egcs} C++ compiler +work). You must also use the @code{egcs} C++ compiler (@code{egcs-1.0.2-9}, @code{gcc 2.95.2} or newer). - @node Linux-Ia64, , Qube2, Linux @subsubsection Linux IA64 Notes @@ -7649,11 +7698,12 @@ CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors -fno-exceptions -fno-rtt @end example After @code{make} you will get an error that @code{sql/opt_range.cc} -will not compile (internal compiler error). To fix this, go to the sql -directory and type @code{make} again. Copy the compile line, but change --O2 to -O0. The file should now compile. +will not compile (internal compiler error). To fix this, go to the sql +directory and type @code{make} again. Copy the compile line, but change +-O2 to -O0. The file should now compile. Now you can do: + @example cd .. make @@ -7686,7 +7736,7 @@ mysqld.cc:626: passing long unsigned int *' as argument 3 of accept(int,sockadddr *, int *)' @end example -You can safely ignore these warnings. They occur because @code{configure} +You can safely ignore these warnings. They occur because @code{configure} can detect only errors, not warnings. If you start the server directly from the command line, you may have problems @@ -7829,7 +7879,7 @@ Please submit a full bug report. To fix this you should change to the @code{sql} directory and do a ``cut and paste'' of the last @code{gcc} line, but change @code{-O3} to @code{-O0} (or add @code{-O0} immediately after @code{gcc} if you don't -have any @code{-O} option on your compile line.) After this is done you +have any @code{-O} option on your compile line.) After this is done you can just change back to the top-level directly and run @code{make} again. @@ -7848,12 +7898,12 @@ shell> chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld You may have to undefine some things in @file{config.h} after running @code{configure} and before compiling. -In some Irix implementations, the @code{alloca()} function is broken. If the +In some Irix implementations, the @code{alloca()} function is broken. If the @code{mysqld} server dies on some @code{SELECT} statements, remove the lines from @file{config.h} that define @code{HAVE_ALLOC} and @code{HAVE_ALLOCA_H}. -If @code{mysqladmin create} doesn't work, remove the line from -@file{config.h} that defines @code{HAVE_READDIR_R}. You may have to remove -the @code{HAVE_TERM_H} line as well. +If @code{mysqladmin create} doesn't work, remove the line from @file{config.h} +that defines @code{HAVE_READDIR_R}. You may have to remove the +@code{HAVE_TERM_H} line as well. SGI recommends that you install all of the patches on this page as a set: http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html @@ -7863,7 +7913,7 @@ latest @code{rld} rollup, and the latest @code{libc} rollup. You definitely need all the POSIX patches on this page, for pthreads support: -http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html +@uref{http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html} If you get the something like the following error when compiling @file{mysql.cc}: @@ -7872,8 +7922,8 @@ If you get the something like the following error when compiling "/usr/include/curses.h", line 82: error(1084): invalid combination of type @end example -then type the following in the top-level directory of your @strong{MySQL} -source tree: +Type the following in the top-level directory of your @strong{MySQL} source +tree: @example shell> extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h @@ -7881,8 +7931,8 @@ shell> make @end example There have also been reports of scheduling problems. If only one thread is -running, things go slow. Avoid this by starting another client. This may lead -to a 2-to-10-fold increase in execution speed thereafter for the other +running, things go slow. Avoid this by starting another client. This may +lead to a 2-to-10-fold increase in execution speed thereafter for the other thread. This is a poorly understood problem with Irix threads; you may have to improvise to find solutions until this can be fixed. @@ -7900,19 +7950,21 @@ CC=gcc CXX=gcc CXXFLAGS=-O3 \ FreeBSD 3.x is recommended for running @strong{MySQL} since the thread package is much more integrated. -The easiest and therefor the preferred way to install is to use the -mysql-server and mysql-client ports available on -@uref{http://www.freebsd.org}. +The easiest and therefor the preferred way to install is to use the +mysql-server and mysql-client ports available on @uref{http://www.freebsd.org}. Using these gives you: @itemize @bullet @item A working @strong{MySQL} with all optimizations known to work on your version of FreeBSD enabled. + @item Automatic configuration and build. + @item Startup scripts installed in /usr/local/etc/rc.d. + @item Ability to see which files that are installed with pkg_info -L. And to remove them all with pkg_delete if you no longer want @strong{MySQL} on that @@ -7927,7 +7979,7 @@ The @strong{MYSQL} Makefiles require GNU make (@code{gmake}) to work. If you want to compile @strong{MYSQL} you need to install GNU make first. -Be sure to have your name resolver setup correct. Otherwise you may +Be sure to have your name resolver setup correct. Otherwise you may experience resolver delays or failures when connecting to mysqld. Make sure that the @code{localhost} entry in the @file{/etc/hosts} file is @@ -7939,11 +7991,11 @@ correct (otherwise you will have problems connecting to the database). The @end example If you notice that @code{configure} will use MIT-pthreads, you should read -the MIT-pthreads notes. @xref{MIT-pthreads}. +the MIT-pthreads notes. @xref{MIT-pthreads}. If you get an error from @code{make install} that it can't find @file{/usr/include/pthreads}, @code{configure} didn't detect that you need -MIT-pthreads. This is fixed by executing these commands: +MIT-pthreads. This is fixed by executing these commands: @example shell> rm config.cache @@ -7951,23 +8003,23 @@ shell> ./configure --with-mit-threads @end example FreeBSD is also known to have a very low default file handle limit. -@xref{Not enough file handles}. Uncomment the ulimit -n section in +@xref{Not enough file handles}. Uncomment the ulimit -n section in safe_mysqld or raise the limits for the mysqld user in /etc/login.conf -(and rebuild it witg cap_mkdb /etc/login.conf.) Also be sure you set the +(and rebuild it with cap_mkdb /etc/login.conf). Also be sure you set the appropriate class for this user in the password file if you are not -using the default (use: chpass mysqld-user-name). @xref{safe_mysqld}. +using the default (use: chpass mysqld-user-name). @xref{safe_mysqld}. If you get problems with the current date in @strong{MySQL}, setting the -@code{TZ} variable will probably help. @xref{Environment variables}. +@code{TZ} variable will probably help. @xref{Environment variables}. To get a secure and stable system you should only use FreeBSD kernels -that are marked @code{-STABLE} +that are marked @code{-STABLE}. @node NetBSD, OpenBSD, FreeBSD, Source install system issues @subsection NetBSD notes -To compile on NetBSD you need GNU @code{make}. Otherwise the compile will crash -when @code{make} tries to run @code{lint} on C++ files. +To compile on NetBSD you need GNU @code{make}. Otherwise the compile will +crash when @code{make} tries to run @code{lint} on C++ files. @node OpenBSD, BSDI, NetBSD, Source install system issues @subsection OpenBSD Notes @@ -7979,6 +8031,7 @@ when @code{make} tries to run @code{lint} on C++ files. @node OpenBSD 2.5, OpenBSD 2.8, OpenBSD, OpenBSD @subsubsection OpenBSD 2.5 Notes + On OpenBSD Version 2.5, you can compile @strong{MySQL} with native threads with the following options: @@ -7988,11 +8041,12 @@ CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no @node OpenBSD 2.8, , OpenBSD 2.5, OpenBSD @subsubsection OpenBSD 2.8 Notes + Our users have reported that OpenBSD 2.8 has a threading bug which causes -problems with MySQL. The OpenBSD Developers have fixed the problem, but as -of January 25th, 2001, it's only available in the ``-current'' branch. The -symptoms of this threading bug are: slow response, high load, high cpu usage, -and crashes. +problems with @strong{MySQL}. The OpenBSD Developers have fixed the problem, +but as of January 25th, 2001, it's only available in the ``-current'' branch. +The symptoms of this threading bug are: slow response, high load, high CPU +usage, and crashes. @node BSDI, SCO, OpenBSD, Source install system issues @subsection BSD/OS Notes @@ -8025,12 +8079,12 @@ If you are using @code{gcc}, you may also use have to use the @file{sql_yacc.cc}. If you get problems with the current date in @strong{MySQL}, setting the -@code{TZ} variable will probably help. @xref{Environment variables}. +@code{TZ} variable will probably help. @xref{Environment variables}. @node BSDI3, BSDI4, BSDI2, BSDI @subsubsection BSD/OS Version 3.x Notes -Upgrade to BSD/OS Version 3.1. If that is not possible, install +Upgrade to BSD/OS Version 3.1. If that is not possible, install BSDIpatch M300-038. Use the following command when configuring @strong{MySQL}: @@ -8071,8 +8125,8 @@ If this doesn't work and you are using @code{bash}, try switching to @subsubsection BSD/OS Version 4.x Notes BSDI Version 4.x has some thread-related bugs. If you want to use -@strong{MySQL} on this, you should install all thread-related patches. At least -M400-023 should be installed. +@strong{MySQL} on this, you should install all thread-related patches. At +least M400-023 should be installed. On some BSDI Version 4.x systems, you may get problems with shared libraries. The symptom is that you can't execute any client programs, for example, @@ -8099,7 +8153,7 @@ The current port is tested only on a ``sco3.2v5.0.4'' and ``sco3.2v5.0.5'' system. There has also been a lot of progress on a port to ``sco 3.2v4.2''. -For the moment the recommended compiler on OpenServer is gcc 2.95.2. With this +For the moment the recommended compiler on OpenServer is gcc 2.95.2. With this you should be able to compile @strong{MySQL} with just: @example @@ -8117,16 +8171,19 @@ to execute the following command: @example shell> cp -p /usr/include/pthread/stdtypes.h /usr/local/lib/gcc-lib/i386-pc-sco3.2v5.0.5/egcs-2.91.66/include/pthread/ @end example + @item You need the port of GCC 2.5.x for this product and the Development system. They are required on this version of SCO Unix. You cannot just use the GCC Dev system. + @item You should get the FSU Pthreads package and install it first. This can be found at @uref{http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.tar.gz}. You can also get a precompiled package from @uref{http://www.mysql.com/Downloads/SCO/FSU-threads-3.5c.tar.gz}. + @item FSU Pthreads can be compiled with SCO Unix 4.2 with tcpip. Or OpenServer 3.0 or Open Desktop 3.0 (OS 3.0 ODT 3.0), with the SCO @@ -8135,37 +8192,47 @@ Development System installed using a good port of GCC 2.5.x ODT or OS without a good port. The port for this product requires the SCO Unix Development system. Without it, you are missing the libraries and the linker that is needed. + @item To build FSU Pthreads on your system, do the following: + @enumerate a @item Run @code{./configure} in the @file{threads/src} directory and select the SCO OpenServer option. This command copies @file{Makefile.SCO5} to @file{Makefile}. + @item Run @code{make}. + @item To install in the default @file{/usr/include} directory, login as root, then @code{cd} to the @file{thread/src} directory, and run @code{make install}. @end enumerate + @item Remember to use GNU @code{make} when making @strong{MySQL}. + @item If you don't start @code{safe_mysqld} as root, you probably will get only the default 110 open files per process. @code{mysqld} will write a note about this in the log file. + @item With SCO 3.2V5.0.5, you should use FSU Pthreads version 3.5c or newer. You should also use gcc 2.95.2 or newer! The following @code{configure} command should work: + @example shell> ./configure --prefix=/usr/local/mysql --disable-shared @end example + @item With SCO 3.2V4.2, you should use FSU Pthreads version 3.5c or newer. The following @code{configure} command should work: + @example shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \ ./configure \ @@ -8173,11 +8240,12 @@ shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \ --with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \ --with-named-curses-libs="-lcurses" @end example + You may get some problems with some include files. In this case, you can find new SCO-specific include files at @uref{http://www.mysql.com/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz}. -You should unpack this file in the @file{include} -directory of your @strong{MySQL} source tree. +You should unpack this file in the @file{include} directory of your +@strong{MySQL} source tree. @end enumerate SCO development notes: @@ -8186,16 +8254,19 @@ SCO development notes: @item @strong{MySQL} should automatically detect FSU Pthreads and link @code{mysqld} with @code{-lgthreads -lsocket -lgthreads}. + @item -The SCO development libraries are re-entrant in FSU Pthreads. SCO claims +The SCO development libraries are re-entrant in FSU Pthreads. SCO claims that its libraries' functions are re-entrant, so they must be reentrant with -FSU Pthreads. FSU Pthreads on OpenServer tries to use the SCO scheme to +FSU Pthreads. FSU Pthreads on OpenServer tries to use the SCO scheme to make re-entrant libraries. + @item -FSU Pthreads (at least the version at @uref{http://www.mysql.com/}) comes linked with -GNU @code{malloc}. If you encounter problems with memory usage, make sure that -@file{gmalloc.o} -is included in @file{libgthreads.a} and @file{libgthreads.so}. +FSU Pthreads (at least the version at @uref{http://www.mysql.com/}) comes +linked with GNU @code{malloc}. If you encounter problems with memory usage, +make sure that @file{gmalloc.o} is included in @file{libgthreads.a} and +@file{libgthreads.so}. + @item In FSU Pthreads, the following system calls are pthreads-aware: @code{read()}, @code{write()}, @code{getmsg()}, @code{connect()}, @code{accept()}, @@ -8253,7 +8324,7 @@ If you want to use @code{gcc}, you must use @code{gcc} 2.95.2 or newer. Automatic detection of @code{xlC} is missing from Autoconf, so a @code{configure} command something like this is needed when compiling -@strong{MySQL} (The example uses the IBM compiler): +@strong{MySQL} (This example uses the IBM compiler): @example export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 " @@ -8273,7 +8344,7 @@ export CXXFLAGS=$CFLAGS @end example Above are the options used to compile the @strong{MySQL} distribution that -can be found at @uref{http://www-frec.bull.com/, www-frec.bull.com}. +can be found at @uref{http://www-frec.bull.com/}. If you change the @code{-O3} to @code{-O2} in the above configure line, you must also remove the @code{-qstrict} option (this is a limitation in @@ -8295,16 +8366,16 @@ CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \ ./configure --prefix=/usr/local/mysql --with-low-memory @end example -The @code{-Wa,-many} is necessary for the compile to be successful. IBM is -aware of this problem but is in to hurry to fix it because of the -workaround available. We don't know if the @code{-fno-exceptions} is required -with @code{gcc 2.95}, but as @strong{MySQL} doesn't use exceptions and the -above option generates faster code, we recommend that you should always use -this option with @code{egcs / gcc}. +The @code{-Wa,-many} is necessary for the compile to be successful. IBM is +aware of this problem but is in to hurry to fix it because of the workaround +available. We don't know if the @code{-fno-exceptions} is required with +@code{gcc 2.95}, but as @strong{MySQL} doesn't use exceptions and the above +option generates faster code, we recommend that you should always use this +option with @code{egcs / gcc}. If you have problems with signals (@strong{MySQL} dies unexpectedly under high load) you may have found an OS bug with threads and -signals. In this case you can tell @strong{MySQL} not to use signals by +signals. In this case you can tell @strong{MySQL} not to use signals by configuring with: @example @@ -8319,7 +8390,7 @@ effect that you can't kill clients that are ``sleeping'' on a connection with will die when it issues its next command. On some versions of AIX, linking with @code{libbind.a} makes -@code{getservbyname} core dump. This is an AIX bug and should be reported +@code{getservbyname} core dump. This is an AIX bug and should be reported to IBM. @node HP-UX 10.20, HP-UX 11.x, IBM-AIX, Source install system issues @@ -8381,7 +8452,7 @@ In file included from item.h:306, The problem is that HP-UX doesn't define @code{pthreads_atfork()} consistently. It has conflicting prototypes in @file{/usr/include/sys/unistd.h}:184 and -@file{/usr/include/sys/pthread.h}:440 (I post the details below). +@file{/usr/include/sys/pthread.h}:440 (details below). One solution is to copy @file{/usr/include/sys/unistd.h} into @file{mysql/include} and edit @file{unistd.h} and change it to match @@ -8439,15 +8510,14 @@ Here is some information that a HPUX Version 11.x user sent us about compiling @itemize @bullet @item -I had to use the compile-time flag @code{-D_REENTRANT} to get the -compiler to recognize the prototype for -@code{localtime_r}. Alternatively I could have supplied the prototype -for @code{localtime_r}. But I wanted to catch other bugs without needing -to run into them. I wasn't sure where I needed it, so I added it to all -flags. +I had to use the compile-time flag @code{-D_REENTRANT} to get the compiler +to recognize the prototype for @code{localtime_r}. Alternatively I could have +supplied the prototype for @code{localtime_r}. But I wanted to catch other +bugs without needing to run into them. I wasn't sure where I needed it, so I +added it to all flags. @item -The optimization flags used by @strong{MySQL} (-O3) are not recognized -by HP's compilers. I did not change the flags. +The optimization flags used by @strong{MySQL} (-O3) are not recognized by HP's +compilers. I did not change the flags. @end itemize @node Mac OS X, BEOS, HP-UX 11.x, Source install system issues @@ -8461,15 +8531,15 @@ by HP's compilers. I did not change the flags. @node Mac OS X Public Data, Mac OS X Server, Mac OS X, Mac OS X @subsubsection Mac OS X Public beta -@strong{MySQL} should work without any problems on Mac OS X public beta. -(Darwin); You don't need the pthread patches for this os! +@strong{MySQL} should work without any problems on Mac OS X Public Beta +(Darwin). You don't need the pthread patches for this OS! @node Mac OS X Server, , Mac OS X Public Data, Mac OS X @subsubsection Mac OS X Server Before trying to configure @strong{MySQL} on Mac OS X server you must first install the pthread package from -@uref{http://www.prnet.de/RegEx/mysql.html}. Note that this is not needed +@uref{http://www.prnet.de/RegEx/mysql.html}. Our binary for Mac OS X is compiled on Rhapsody 5.5 with the following configure line: @@ -8490,8 +8560,8 @@ alias mysqladmin '/usr/local/mysql/bin/mysqladmin' @subsection BeOS Notes We are really interested in getting @strong{MySQL} to work on BeOS, but -unfortunately we don't have any person who knows BeOS or has -time to do a port. +unfortunately we don't have any person who knows BeOS or has time to do +a port. We are interested in finding someone to do a port, and we will help them with any technical questions they may have while doing the port. @@ -8503,8 +8573,8 @@ in a while. @node Windows, OS/2, Source install system issues, Installing @section Windows Notes -This section describes installation and use of @strong{MySQL} on Windows. This -is also described in the @file{README} file that comes with the +This section describes installation and use of @strong{MySQL} on Windows. +This is also described in the @file{README} file that comes with the @strong{MySQL} Windows distribution. @menu @@ -8555,14 +8625,14 @@ character in @strong{MySQL}. @xref{Option files}. @strong{MySQL} uses TCP/IP to connect a client to a server. (This will allow any machine on your network to connect to your @strong{MySQL} -server.) Because of this, you must install TCP/IP on your machine before +server.) Because of this, you must install TCP/IP on your machine before starting @strong{MySQL}. You can find TCP/IP on your Windows CD-ROM. Note that if you are using an old Win95 release (for example OSR2), it's likely that you have an old Winsock package! @strong{MySQL} requires -Winsock 2! You can get the newest Winsock from -@uref{http://www.microsoft.com,Microsoft}. Win98 has as default the new -Winsock 2 library, so the above doesn't apply for Win98. +Winsock 2! You can get the newest Winsock from +@uref{http://www.microsoft.com/}. Win98 has the new Winsock 2 library, so +the above doesn't apply for Win98. There are 2 different @strong{MySQL} servers you can use: @@ -8599,7 +8669,7 @@ get some useful information on the screen that may help solve this. The last option is to start @code{mysqld} with @code{--debug}. In this case @code{mysqld} will write a log file in @file{\mysqld.trace} that should contain the reason why @code{mysqld} doesn't start. If you -make a bug report about this, please only send the lines to the mailing list +make a bug report about this, please only send the lines to the mailing list where something seems to go wrong! @node NT start, Windows running, Win95 start, Windows @@ -8639,9 +8709,9 @@ without options on NT, @code{mysqld-nt} tries to starts itself as a service with the default service options. If you have stopped @code{mysqld-nt}, you have to start it with @code{NET START mysql}. -The service is installed with the name @code{MySql}. Once installed, it must +The service is installed with the name @code{MySQL}. Once installed, it must be started using the Services Control Manager (SCM) Utility (found in Control -Panel) or by using the @code{NET START MySQL} command. If any options are +Panel) or by using the @code{NET START MySQL} command. If any options are desired, they must be specified as "Startup parameters" in the SCM utility before you start the @strong{MySQL} service. Once running, @code{mysqld-nt} can be stopped using @code{mysqladmin} or from the SCM utility or by using @@ -8703,8 +8773,8 @@ which protocol is used: @end multitable You can force a @strong{MySQL} client to use named pipes by specifying the -@code{--pipe} option or by specifying @code{.} as the host name. - Use the @code{--socket} option to specify the name of the pipe. +@code{--pipe} option or by specifying @code{.} as the host name. Use the +@code{--socket} option to specify the name of the pipe. You can test whether or not @strong{MySQL} is working by executing the following commands: @@ -8717,7 +8787,7 @@ C:\mysql\bin\mysql test @end example If @code{mysqld} is slow to answer to connections on Win95/Win98, there is -probably a problem with your DNS. In this case, start @code{mysqld} with +probably a problem with your DNS. In this case, start @code{mysqld} with @code{--skip-name-resolve} and use only @code{localhost} and IP numbers in the @strong{MySQL} grant tables. You can also avoid DNS when connecting to a @code{mysqld-nt} @strong{MySQL} server running on NT by using the @@ -8740,9 +8810,9 @@ should set a password for all users and remove the row in the @code{mysql.user} table that has @code{Host='localhost'} and @code{User=''}. -You should also add a password for the @code{root} user. -(The following example starts by removing the anonymous user, that allows -anyone to access the 'test' database.): +You should also add a password for the @code{root} user. (The following +example starts by removing the anonymous user, that allows anyone to access +the 'test' database.): @example C:\mysql\bin\mysql mysql @@ -8770,6 +8840,7 @@ With the newer @strong{MySQL} versions you can easily add new users and change privileges with @code{GRANT} and @code{REVOKE} commands. @xref{GRANT}. +@c FIX this is ugly, real ugly. @cindex SSH @cindex connecting, remotely with SSH @node Windows and SSH, Windows symbolic links, Windows running, Windows @@ -8781,14 +8852,16 @@ Here is a note about how to connect to get a secure connection to remote @itemize @bullet @item Install an SSH client on your windows machine - As a user, the best non-free -one I've found is from @code{secureCRT} from @uref{http://www.vandyke.com/}. +one I've found is from @code{SecureCRT} from @uref{http://www.vandyke.com/}. Another option is @code{f-secure} from @uref{http://www.f-secure.com/}. You can also find some free ones on @strong{Google} at @uref{http://directory.google.com/Top/Computers/Security/Products_and_Tools/Cryptography/SSH/Clients/Windows/}. @item -Start your windows SSH client. Set @code{Host_Name = yourmysqlserver_URL_or_IP}. Set -@code{userid=your_userid} to log in to your server (probably not the same as your @strong{MySQL} login/ password. +Start your windows SSH client. +Set @code{Host_Name = yourmysqlserver_URL_or_IP}. +Set @code{userid=your_userid} to log in to your server (probably not the same +as your @strong{MySQL} login/password. @item Set up port forwarding. Either do a remote forward (Set @code{local_port: 3306}, @code{remote_host: yourmysqlservername_or_ip}, @code{remote_port: 3306} ) @@ -8823,9 +8896,9 @@ symbolic links works on Unix). On windows you make a symbolic link to a database by creating a file that contains the path to the destination directory and saving this in -the @code{mysql_data} directory under the filename @code{database.sym}. +the @file{mysql_data} directory under the filename @file{database.sym}. Note that the symbolic link will only be used if the directory -@code{mysql_data_dir\database} doesn't exist. +@file{mysql_data_dir\database} doesn't exist. For example, if you want to have database @code{foo} on @file{D:\data\foo}, you should create the file @file{C:\mysql\data\foo.sym} that contains the @@ -8882,7 +8955,7 @@ a new thread! WinNT and Win98 don't suffer from this bug. @item Concurrent reads @strong{MySQL} depends on the @code{pread()} and @code{pwrite()} calls to be -able to mix @code{INSERT} and @code{SELECT}. Currently we use mutexes +able to mix @code{INSERT} and @code{SELECT}. Currently we use mutexes to emulate @code{pread()}/@code{pwrite()}. We will, in the long run, replace the file level interface with a virtual interface so that we can use the @code{readfile()}/@code{writefile()} interface on NT to get more speed. @@ -8911,7 +8984,7 @@ If a connection hangs, it's impossible to break it without killing connections. @end itemize -We plan to fix this when our windows developers have figured out a nice +We plan to fix this when our Windows developers have figured out a nice workaround for this. @item UDF functions @@ -8923,7 +8996,7 @@ You can't drop a database that is in use by some thread. @item Killing @strong{MySQL} from the task manager You can't kill @strong{MySQL} from the task manager or with the shutdown -utility in Win95. You must take it down with @code{mysqladmin shutdown}. +utility in Win95. You must take it down with @code{mysqladmin shutdown}. @item Case-insensitive names Filenames are case insensitive on Windows, so database and table names @@ -8936,6 +9009,7 @@ Pathname components in Win95 are separated by the @samp{\} character, which is also the escape character in @strong{MySQL}. If you are using @code{LOAD DATA INFILE} or @code{SELECT ... INTO OUTFILE}, you must double the @samp{\} character or use Unix style filenames @samp{/} characters: + @example LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr; SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr; @@ -8950,10 +9024,10 @@ error 2017: can't open named pipe to host: . pipe... @end example @tindex .my.cnf file -This is because the release version of @strong{MySQL} uses -named pipes on NT by default. You can avoid this error by using the -@code{--host=localhost} option to the new @strong{MySQL} clients -or create a file @file{C:\my.cnf} that contains the following information: +This is because the release version of @strong{MySQL} uses named pipes on NT +by default. You can avoid this error by using the @code{--host=localhost} +option to the new @strong{MySQL} clients or create a file @file{C:\my.cnf} +that contains the following information: @example [client] @@ -8975,16 +9049,16 @@ following information: @item @code{ALTER TABLE} While you are doing an @code{ALTER TABLE} the table is locked from usage -by other threads. This has to do with the fact that you on Windows can't -delete a file that is in use by another threads. (We may in the future -find some way to go around this problem). +by other threads. This has to do with the fact that you on Windows can't +delete a file that is in use by another threads. (We may in the future +find some way to go around this problem.) @item @code{DROP TABLE} on a table that is in use by a @code{MERGE} table will not work. The @code{MERGE} handler does it table mapping hidden from @strong{MySQL}. -Because windows doesn't allow one to drop files that are open, you have +Because Windows doesn't allow one to drop files that are open, you have to first flush all @code{MERGE} tables (with @code{FLUSH TABLES}) or drop the -@code{MERGE} table before drooping the table. We will fix this at -the same time we introduce @code{VIEW}'s. +@code{MERGE} table before droping the table. We will fix this at the same +time we introduce @code{VIEW}s. @end table Here are some open issues for anyone who might want to help us with the Windows @@ -9004,10 +9078,10 @@ Add some nice start and shutdown icons to the @strong{MySQL} installation. @item Create a tool to manage registry entries for the @strong{MySQL} startup -options. The registry entry reading is already coded into @code{mysqld.cc}, -but it should be recoded to be more parameter oriented. -The tool should also be able to update the @file{\my.cnf} file if the user -prefers to use this instead of the registry. +options. The registry entry reading is already coded into @file{mysqld.cc}, +but it should be recoded to be more parameter oriented. The tool should +also be able to update the @file{\my.cnf} file if the user prefers to use +this instead of the registry. @item When registering @code{mysqld} as a service with @code{--install} (on NT) @@ -9016,13 +9090,13 @@ For the moment, the workaround is to update the @file{C:\my.cnf} file instead. @item -When you suspend a laptop running Win95, the @code{mysqld} -daemon doesn't accept new connections when the laptop is resumed. -We don't know if this is a problem with Win95, TCP/IP, or @strong{MySQL}. +When you suspend a laptop running Win95, the @code{mysqld} daemon doesn't +accept new connections when the laptop is resumed. We don't know if this +is a problem with Win95, TCP/IP, or @strong{MySQL}. @item -It would be real nice to be able to kill @code{mysqld} from the -task manager. For the moment, you must use @code{mysqladmin shutdown}. +It would be real nice to be able to kill @code{mysqld} from the task manager. +For the moment, you must use @code{mysqladmin shutdown}. @item Port @code{readline} to Windows for use in the @code{mysql} command line tool. @@ -9032,14 +9106,13 @@ GUI versions of the standard @strong{MySQL} clients (@code{mysql}, @code{mysqlshow}, @code{mysqladmin}, and @code{mysqldump}) would be nice. @item -It would be nice if the socket read and write functions in -@file{net.c} were interruptible. This would make it possible to kill open -threads with @code{mysqladmin kill} on Windows. +It would be nice if the socket read and write functions in @file{net.c} were +interruptible. This would make it possible to kill open threads with +@code{mysqladmin kill} on Windows. @item -Documentation of which Windows programs work with -@strong{MySQL}-Windows/@strong{MyODBC} and what must be done to get them -working. +Documentation of which Windows programs work with @strong{MySQL}-Windows or +@strong{MyODBC} and what must be done to get them working. @item @code{mysqld} always starts in the "C" locale and not in the default locale. @@ -9060,8 +9133,8 @@ comes with the @strong{MySQL}-Windows distribution. @node OS/2, MySQL binaries, Windows, Installing @section OS/2 Notes -@strong{MySQL} uses quite a few open files. Because of this, you -should add something like the following to your @file{CONFIG.SYS} file: +@strong{MySQL} uses quite a few open files. Because of this, you should add +something like the following to your @file{CONFIG.SYS} file: @example SET EMXOPT=-c -n -h1024 @@ -9081,7 +9154,7 @@ in a partition that supports long filenames such as HPFS, FAT32, etc. The @file{INSTALL.CMD} script must be run from OS/2's own @file{CMD.EXE} and may not work with replacement shells such as @file{4OS2.EXE}. -The @file{scripts/mysql-install-db} script has been renamed. It is now called +The @file{scripts/mysql-install-db} script has been renamed. It is now called @file{install.cmd} and is a REXX script, which will set up the default @strong{MySQL} security settings and create the WorkPlace Shell icons for @strong{MySQL}. @@ -9122,9 +9195,8 @@ As a service, we at @strong{MySQL AB} provide a set of binary distributions of @strong{MySQL} that are compiled at our site or at sites where customers kindly have given us access to their machines. -These distributions are generated with -@code{scripts/make_binary_distribution} and are configured with the -following compilers and options: +These distributions are generated with @code{scripts/make_binary_distribution} +and are configured with the following compilers and options: @table @asis @item SunOS 4.1.4 2 sun4c with @code{gcc} 2.7.2.1 @@ -9260,7 +9332,7 @@ shell> scripts/mysql_install_db Typically, @code{mysql_install_db} needs to be run only the first time you install @strong{MySQL}. Therefore, if you are upgrading an existing -installation, you can skip this step. (However, @code{mysql_install_db} is +installation, you can skip this step. (However, @code{mysql_install_db} is quite safe to use and will not update any tables that already exist, so if you are unsure of what to do, you can always run @code{mysql_install_db}.) @@ -9298,12 +9370,12 @@ script as it is provided in the @strong{MySQL} distribution: @itemize @bullet @item -You may want to edit @code{mysql_install_db} before running it, to -change the initial privileges that are installed into the grant tables. -This is useful if you want to install @strong{MySQL} on a lot of machines -with the same privileges. In this case you probably should need only to add -a few extra @code{INSERT} statements to the @code{mysql.user} and -@code{mysql.db} tables! +You may want to edit @code{mysql_install_db} before running it, to change +the initial privileges that are installed into the grant tables. This is +useful if you want to install @strong{MySQL} on a lot of machines with the +same privileges. In this case you probably should need only to add a few +extra @code{INSERT} statements to the @code{mysql.user} and @code{mysql.db} +tables! @item If you want to change things in the grant tables after installing them, you @@ -9322,10 +9394,12 @@ For more information about these alternatives, see @ref{Default privileges}. @item Start the @strong{MySQL} server like this: + @example shell> cd mysql_installation_directory shell> bin/safe_mysqld & @end example + If you have problems starting the server, see @ref{Starting server}. @item @@ -9422,7 +9496,7 @@ shell> BINDIR/mysql -e "select host,db,user from db" mysql There is also a benchmark suite in the @file{sql-bench} directory (under the @strong{MySQL} installation directory) that you can use to compare how -@strong{MySQL} performs on different platforms. The @file{sql-bench/Results} +@strong{MySQL} performs on different platforms. The @file{sql-bench/Results} directory contains the results from many runs against different databases and platforms. To run all tests, execute these commands: @@ -9433,7 +9507,7 @@ shell> run-all-tests If you don't have the @file{sql-bench} directory, you are probably using an RPM for a binary distribution. (Source distribution RPMs include the -benchmark directory.) In this case, you must first install the benchmark +benchmark directory.) In this case, you must first install the benchmark suite before you can use it. Beginning with @strong{MySQL} Version 3.22, there are benchmark RPM files named @file{mysql-bench-VERSION-i386.rpm} that contain benchmark code and data. @@ -9454,7 +9528,6 @@ The expected results are shown in the @file{./tests/auto_increment.res} file. @cindex @code{mysql_install_db} script @cindex scripts, @code{mysql_install_db} - The purpose of the @code{mysql_install_db} script is to generate new @strong{MySQL} privilege tables. It will not affect any other data! It will also not do anything if you already have @strong{MySQL} privilege @@ -9544,8 +9617,8 @@ shell> BINDIR/safe_mysqld & If you are running RedHat Version 5.0 with a version of @code{glibc} older than 2.0.7-5, you should make sure you have installed all @code{glibc} patches! There is a lot of information about this in the @strong{MySQL} mail -archives. Links to the mail archives are available at the online -@uref{http://www.mysql.com/documentation/, @strong{MySQL} documentation page}. +archives. Links to the mail archives are available online at +@uref{http://www.mysql.com/documentation/}. Also, see @ref{Linux}. You can also start @code{mysqld} manually using the @code{--skip-grant-tables} @@ -9574,9 +9647,11 @@ Generally, you start the @code{mysqld} server in one of three ways: By invoking @code{mysql.server}. This script is used primarily at system startup and shutdown, and is described more fully in @ref{Automatic start}. + @item By invoking @code{safe_mysqld}, which tries to determine the proper options for @code{mysqld} and then runs it with those options. @xref{safe_mysqld}. + @item On NT you should install @code{mysqld} as a service as follows: @example @@ -9595,6 +9670,7 @@ You can remove the service as follows: @example bin\mysqld-nt --remove # remove MySQL as a service @end example + @item By invoking @code{mysqld} directly. @end itemize @@ -9647,7 +9723,7 @@ If you find something like the following in the log file: 000729 14:50:10 Can't init databases @end example -this means that you didn't started mysqld with @code{--bdb-no-recover} +This means that you didn't start mysqld with @code{--bdb-no-recover} and Berkeley DB found something wrong with its log files when it tried to recover your databases. To be able to continue, you should move away the old Berkeley DB log file from the database directory to @@ -9709,16 +9785,16 @@ C:\mysql\bin\mysqld --standalone --debug This will not run in the background and it should also write a trace in @file{\mysqld.trace}, which may help you determine the source of your -problems. @xref{Windows}. +problems. @xref{Windows}. If you are using BDB (Berkeley DB) tables, you should familiarize -yourself with the different BDB specific startup options. @xref{BDB start}. +yourself with the different BDB specific startup options. @xref{BDB start}. If you are using Gemini tables, refer to the Gemini-specific startup options. @xref{GEMINI start}. If you are using Innobase tables, refer to the Innobase-specific startup -options. @xref{INNOBASE start}. +options. @xref{INNOBASE start}. @node Automatic start, Command-line options, Starting server, Post-installation @subsection Starting and Stopping MySQL Automatically @@ -9739,14 +9815,13 @@ under the @strong{MySQL} installation directory or in the @file{support-files} directory of the @strong{MySQL} source tree. Before @code{mysql.server} starts the server, it changes directory to -the @strong{MySQL} installation directory, then invokes -@code{safe_mysqld}. You might need to edit @code{mysql.server} if you -have a binary distribution that you've installed in a non-standard -location. Modify it to @code{cd} into the proper directory before it -runs @code{safe_mysqld}. If you want the server to run as some specific -user, you can change the @code{mysql_daemon_user=root} line to use -another user. You can also modify @code{mysql.server} to pass other -options to @code{safe_mysqld}. +the @strong{MySQL} installation directory, then invokes @code{safe_mysqld}. +You might need to edit @code{mysql.server} if you have a binary distribution +that you've installed in a non-standard location. Modify it to @code{cd} +into the proper directory before it runs @code{safe_mysqld}. If you want the +server to run as some specific user, you can change the +@code{mysql_daemon_user=root} line to use another user. You can also modify +@code{mysql.server} to pass other options to @code{safe_mysqld}. @code{mysql.server stop} brings down the server by sending a signal to it. You can take down the server manually by executing @code{mysqladmin shutdown}. @@ -9802,18 +9877,17 @@ uses: @code{mysqld} accepts the following command-line options: @table @code - @item --ansi -Use ANSI SQL syntax instead of MySQL syntax. @xref{ANSI mode}. +Use ANSI SQL syntax instead of MySQL syntax. @xref{ANSI mode}. @item -b, --basedir=path -Path to installation directory. All paths are -usually resolved relative to this. +Path to installation directory. All paths are usually resolved relative to +this. @item --big-tables -Allow big result sets by saving all temporary sets on file. It solves +Allow big result sets by saving all temporary sets on file. It solves most 'table full' errors, but also slows down the queries where -in-memory tables would suffice. Since Version 3.23.2, @strong{MySQL} is +in-memory tables would suffice. Since Version 3.23.2, @strong{MySQL} is able to solve it automatically by using memory for small temporary tables and switching to disk tables where necessary. @@ -9821,26 +9895,26 @@ tables and switching to disk tables where necessary. IP address to bind to. @item --character-sets-dir=path -Directory where character sets are. @xref{Character sets}. +Directory where character sets are. @xref{Character sets}. @item --chroot=path -Chroot mysqld daemon during startup. -Recommended security measure. It will somewhat limit @code{LOAD DATA INFILE} -and @code{SELECT ... INTO OUTFILE} though. +Chroot mysqld daemon during startup. Recommended security measure. It will +somewhat limit @code{LOAD DATA INFILE} and @code{SELECT ... INTO OUTFILE} +though. @item -h, --datadir=path Path to the database root. @item --default-character-set=charset -Set the default character set. @xref{Character sets}. +Set the default character set. @xref{Character sets}. @item --default-table-type=type -Set the default table type for tables. @xref{Table types}. +Set the default table type for tables. @xref{Table types}. @item --debug[...]= -If @strong{MySQL} is configured with @code{--with-debug}, you can use -this option to get a trace file of what @code{mysqld} is -doing. @xref{The DBUG package}. +If @strong{MySQL} is configured with @code{--with-debug}, you can use this +option to get a trace file of what @code{mysqld} is doing. +@xref{The DBUG package}. @item --delay-key-write-for-all-tables Don't flush key buffers between writes for any @code{MyISAM} table. @@ -9869,7 +9943,7 @@ Display short help and exit. Read SQL commands from this file at startup. @item -L, --language=... -Client error messages in given language. May be given as a full path. +Client error messages in given language. May be given as a full path. @xref{Languages}. @item -l, --log[=file] @@ -9880,7 +9954,7 @@ Log all ISAM/MyISAM changes to file (only used when debugging ISAM/MyISAM). @item --log-slow-queries[=file] Log all queries that have taken more than @code{long_query_time} seconds to -execute to file. @xref{Slow query log}. +execute to file. @xref{Slow query log}. @item --log-update[=file] Log updates to @code{file.#} where @code{#} is a unique number if not given. @@ -9893,12 +9967,11 @@ to the slow query log. @item --low-priority-updates Table-modifying operations (@code{INSERT}/@code{DELETE}/@code{UPDATE}) -will have lower priority than selects. -It can also be done via @code{@{INSERT | REPLACE | UPDATE | DELETE@} -LOW_PRIORITY ...} to lower the priority of only one query, or by -@code{SET OPTION SQL_LOW_PRIORITY_UPDATES=1} to change the -priority in one thread. -@xref{Table locking}. +will have lower priority than selects. It can also be done via +@code{@{INSERT | REPLACE | UPDATE | DELETE@} LOW_PRIORITY ...} to lower +the priority of only one query, or by +@code{SET OPTION SQL_LOW_PRIORITY_UPDATES=1} to change the priority in one +thread. @xref{Table locking}. @item --memlock Lock the @code{mysqld} process in memory. This works only if your system @@ -9907,22 +9980,27 @@ a problem where the operating system is causing @code{mysqld} to swap on disk. @item --myisam-recover [=option[,option...]]] where option is one of DEFAULT, BACKUP, FORCE or QUICK. If this option is used, @code{mysqld} will on open check if the table is -marked as crashed or if if the table wasn't closed properly -(The last option only works if you are running with @code{--skip-locking}). -If this is the case mysqld will run check on the table. If the table was -corrupted, @code{mysqld} will attempt to repair it. +marked as crashed or if if the table wasn't closed properly. (The last +option only works if you are running with @code{--skip-locking}). If this +is the case mysqld will run check on the table. If the table was corrupted, +@code{mysqld} will attempt to repair it. The following options affects how the repair works. @multitable @columnfractions .3 .7 -@item DEFAULT @tab The same as not giving any option to @code{--myisam-recover}. -@item BACKUP @tab If the data table was changed during recover, save a backup of the @file{table_name.MYD} data file as @file{table_name-datetime.BAK}. -@item FORCE @tab Run recover even if we will loose more than one row from the .MYD file. -@item QUICK @tab Don't check the rows in the table if there isn't any delete blocks. +@item DEFAULT @tab The same as not giving any option to + @code{--myisam-recover}. +@item BACKUP @tab If the data table was changed during recover, save a + backup of the @file{table_name.MYD} data file as + @file{table_name-datetime.BAK}. +@item FORCE @tab Run recover even if we will loose more than one row + from the .MYD file. +@item QUICK @tab Don't check the rows in the table if there isn't any + delete blocks. @end multitable -Before a table is automatically repaired, mysqld will add a note about -this in the error log. If you want to be able to recover from most +Before a table is automatically repaired, @strong{MySQL} will add a note +about this in the error log. If you want to be able to recover from most things without user intervention, you should use the options @code{BACKUP,FORCE}. This will force a repair of a table even if some rows would be deleted, but it will keep the old data file as a backup so that @@ -9939,84 +10017,77 @@ Use the 3.20 protocol for compatibility with some very old clients. @xref{Upgrading-from-3.20}. @item --one-thread -Only use one thread (for debugging under Linux). @xref{Debugging server}. +Only use one thread (for debugging under Linux). @xref{Debugging server}. @item -O, --set-variable var=option -Give a variable a value. @code{--help} lists variables. -You can find a full description for all variables in the @code{SHOW VARIABLES} -section in this manual. @xref{SHOW VARIABLES}. -The tuning server parameters section includes information of how to optimize -these. @xref{Server parameters}. +Give a variable a value. @code{--help} lists variables. You can find a full +description for all variables in the @code{SHOW VARIABLES} section in this +manual. @xref{SHOW VARIABLES}. The tuning server parameters section includes +information of how to optimize these. @xref{Server parameters}. @item --safe-mode -Skip some optimize stages. -Implies @code{--skip-delay-key-write}. +Skip some optimize stages. Implies @code{--skip-delay-key-write}. @item --safe-show-database Don't show databases for which the user doesn't have any privileges. @item --secure IP numbers returned by the @code{gethostbyname()} system call are -checked to make sure they resolve back to the original hostname. This +checked to make sure they resolve back to the original hostname. This makes it harder for someone on the outside to get access by pretending -to be another host. This option also adds some sanity checks of -hostnames. The option is turned off by default in @strong{MySQL} Version 3.21 +to be another host. This option also adds some sanity checks of +hostnames. The option is turned off by default in @strong{MySQL} Version 3.21 because sometimes it takes a long time to perform backward resolutions. @strong{MySQL} Version 3.22 caches hostnames (unless @code{--skip-host-cache} is used) and has this option enabled by default. @item --skip-concurrent-insert Turn off the ability to select and insert at the same time on @code{MyISAM} -tables. (This is only to be used if you think you have found a bug -in this feature). +tables. (This is only to be used if you think you have found a bug in this +feature). @item --skip-delay-key-write Ignore the @code{delay_key_write} option for all tables. @xref{Server parameters}. @item -Sg, --skip-grant-tables -This option causes the server not to use the privilege system at all. This +This option causes the server not to use the privilege system at all. This gives everyone @emph{full access} to all databases! (You can tell a running server to start using the grant tables again by executing @code{mysqladmin flush-privileges} or @code{mysqladmin reload}.) @item --skip-locking -Don't use system locking. To use @code{isamchk} or @code{myisamchk} you must -shut down the server. @xref{Stability}. Note that in @strong{MySQL} Version +Don't use system locking. To use @code{isamchk} or @code{myisamchk} you must +shut down the server. @xref{Stability}. Note that in @strong{MySQL} Version 3.23 you can use @code{REPAIR} and @code{CHECK} to repair/check @code{MyISAM} tables. @item --skip-name-resolve -Hostnames are not resolved. All @code{Host} column values in the grant -tables must be IP numbers or @code{localhost}. @xref{DNS}. +Hostnames are not resolved. All @code{Host} column values in the grant tables +must be IP numbers or @code{localhost}. @xref{DNS}. @item --skip-networking -Don't listen for TCP/IP connections at all. -All interaction with @code{mysqld} must be made via Unix sockets. -This option is highly recommended for systems where only local requests -are allowed. @xref{DNS}. +Don't listen for TCP/IP connections at all. All interaction with +@code{mysqld} must be made via Unix sockets. This option is highly +recommended for systems where only local requests are allowed. @xref{DNS}. @item --skip-host-cache -Never use host name cache for faster name-ip resolution, but query -DNS server on every connect instead. @xref{DNS}. +Never use host name cache for faster name-ip resolution, but query DNS server +on every connect instead. @xref{DNS}. @item --skip-new -Don't use new, possible wrong routines. -Implies @code{--skip-delay-key-write}. -This will also set default table type to @code{ISAM}. @xref{ISAM}. +Don't use new, possible wrong routines. Implies @code{--skip-delay-key-write}. +This will also set default table type to @code{ISAM}. @xref{ISAM}. @item --skip-safemalloc -If @strong{MySQL} is configured with @code{--with-debug=full}, all -programs will check the memory for overruns for every memory allocation / -memory freeing. As this checking is very slow, you can avoid this, -when you don't need memory checking, by using this option. - -this option to get a trace file of what @code{mysqld} is -doing. @xref{The DBUG package}. +If @strong{MySQL} is configured with @code{--with-debug=full}, all programs +will check the memory for overruns for every memory allocation and memory +freeing. As this checking is very slow, you can avoid this, when you don't +need memory checking, by using this option. @item --skip-show-database -Don't allow 'SHOW DATABASE' commands, unless the user has -@strong{process} privilege. +Don't allow 'SHOW DATABASE' commands, unless the user has @strong{process} +privilege. @item --skip-thread-priority Disable using thread priorities for faster response time. @@ -10026,14 +10097,14 @@ Socket file to use for local connections instead of default @code{/tmp/mysql.sock}. @item transaction-isolation= @{ READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE @} -Sets the default transaction isolation level. @xref{SET TRANSACTION}. +Sets the default transaction isolation level. @xref{SET TRANSACTION}. @item -t, --tmpdir=path Path for temporary files. It may be useful if your default @code{/tmp} directory resides on a partition too small to hold temporary tables. @item -u, --user=user_name -Run @code{mysqld} daemon as user @code{user_name}. This option is +Run @code{mysqld} daemon as user @code{user_name}. This option is @emph{mandatory} when starting @code{mysqld} as root. @item -V, --version @@ -10048,7 +10119,7 @@ Output version information and exit. @node Option files, , Command-line options, Post-installation @subsection Option Files -@strong{MySQL} Version 3.22 can read default startup options for the +@strong{MySQL} can, since Version 3.22, read default startup options for the server and for clients from option files. @strong{MySQL} reads default options from the following files on Unix: |