manual.texi
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:1883k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. Sometimes the amount of memory (real and virtual) is relevant.
  2. If in doubt, include these values.
  3. @item
  4. If you are using a source distribution of @strong{MySQL}, the name and
  5. version number of the compiler used is needed.
  6. If you have a binary distribution, the distribution name is needed.
  7. @item
  8. If the problem occurs during compilation, include the exact error
  9. message(s) and also a few lines of context around the offending code in the
  10. file where the error occurred.
  11. @item
  12. If @code{mysqld} died, you should also report query that crashed
  13. @code{mysqld}. You can usually find this out by running @code{mysqld} with
  14. logging enabled. @xref{Using log files}.
  15. @item
  16. If any database table is related to the problem, include the output from
  17. @code{mysqldump --no-data db_name tbl_name1 tbl_name2 ...}.  This is very easy
  18. to do and is a powerful way to get information about any table in a database
  19. that will help us create a situation matching the one you have.
  20. @item
  21. For speed-related bugs or problems with @code{SELECT} statements, you should
  22. always include the output of @code{EXPLAIN SELECT ...}, and at least the
  23. number of rows that the @code{SELECT} statement produces.  The more
  24. information you give about your situation, the more likely it is that someone
  25. can help you!  For example, the following is an example of a very good bug
  26. report (it should of course be posted with the @code{mysqlbug} script):
  27. Example run using the @code{mysql} command line tool (note the use of the
  28. @code{G} statement terminator for statements whose output width would
  29. otherwise exceed that of an 80-column display device):
  30. @example
  31. mysql> SHOW VARIABLES;
  32. mysql> SHOW COLUMNS FROM ...G
  33.        <output from SHOW COLUMNS>
  34. mysql> EXPLAIN SELECT ...G
  35.        <output from EXPLAIN>
  36. mysql> FLUSH STATUS;
  37. mysql> SELECT ...;
  38.        <A short version of the output from SELECT,
  39.        including the time taken to run the query>
  40. mysql> SHOW STATUS;
  41.        <output from SHOW STATUS>
  42. @end example
  43. @item
  44. If a bug or problem occurs while running @strong{mysqld}, try to provide an
  45. input script that will reproduce the anomaly. This script should include any
  46. necessary source files. The more closely the script can reproduce your
  47. situation, the better. If you can make a repeatable test case, you should
  48. post this to @email{bugs@@lists.mysql.com} for a high priority treatment!
  49. If you can't provide a script, you should at least include the output
  50. from @code{mysqladmin variables extended-status processlist} in your mail to
  51. provide some information of how your system is performing!
  52. @item
  53. If you can't produce a test case in a few rows, or if the test table
  54. is too big to be mailed to the mailing list (more than 10 rows), you should
  55. dump your tables using @code{mysqldump} and create a @file{README} file
  56. that describes your problem.
  57. Create a compressed archive of your files using
  58. @code{tar} and @code{gzip} or @code{zip}, and use @code{ftp}
  59. to transfer the archive to @uref{ftp://support.mysql.com/pub/mysql/secret/}.
  60. Then send a short description of the problem to @email{bugs@@lists.mysql.com}.
  61. @item
  62. If you think that @strong{MySQL} produces a strange result from a query,
  63. include not only the result, but also your opinion of what the result
  64. should be and an account describing the basis for your opinion.
  65. @item
  66. When giving an example of the problem, it's better to use the variable names,
  67. table names, etc., that exist in your actual situation than to come up with
  68. new names. The problem could be related to the name of a variable or table!
  69. These cases are rare, perhaps, but it is better to be safe than
  70. sorry.  After all, it should be easier for you to provide an example that
  71. uses your actual situation, and it is by all means better for us.  In case you
  72. have data you don't want to show to others, you can use @code{ftp} to
  73. transfer it to @uref{ftp://support.mysql.com/pub/mysql/secret/}.  If the data
  74. are really top secret and you don't want to show them even to us, then go ahead
  75. and provide an example using other names, but please regard this as the last
  76. choice.
  77. @item
  78. Include all the options given to the relevant programs, if possible.  For
  79. example, indicate the options that you use when you start the @code{mysqld}
  80. daemon and that you use to run any @strong{MySQL} client programs.  The
  81. options to programs like @code{mysqld} and @code{mysql}, and to the
  82. @code{configure} script, are often keys to answers and are very relevant!
  83. It is never a bad idea to include them anyway!  If you use any modules, such
  84. as Perl or PHP, please include the version number(s) of those as well.
  85. @item
  86. If your question is related to the privilege system, please include the
  87. output of @code{mysqlaccess}, the output of @code{mysqladmin reload}, and all
  88. the error messages you get when trying to connect!  When you test your
  89. privileges, you should first run @code{mysqlaccess}. After this, execute
  90. @code{mysqladmin reload version} and try to connect with the program that
  91. gives you trouble.  @code{mysqlaccess} can be found in the @file{bin}
  92. directory under your @strong{MySQL} installation directory.
  93. @item
  94. If you have a patch for a bug, that is good, but don't assume the patch is
  95. all we need, or that we will use it, if you don't provide some necessary
  96. information, such as test cases showing the bug that your patch fixes.  We
  97. might find problems with your patch or we might not understand it at all; if
  98. so, we can't use it.
  99. If we can't verify exactly what the patch is meant for, we won't use it.
  100. Test cases will help us here.  Show that the patch will handle all the
  101. situations that may occur. If we find a borderline case (even a rare one)
  102. where the patch won't work, it may be useless.
  103. @item
  104. Guesses about what the bug is, why it occurs, or what it depends on,
  105. are usually wrong. Even the MySQL team can't guess such things without
  106. first using a debugger to determine the real cause of a bug.
  107. @item
  108. Indicate in your mail message that you have checked the reference manual
  109. and mail archive so others know that you have tried to solve the
  110. problem yourself.
  111. @item
  112. If you get a @code{parse error}, please check your syntax closely! If
  113. you can't find something wrong with it, it's extremely likely that your
  114. current version of @strong{MySQL} doesn't support the query you are
  115. using.  If you are using the current version and the manual at
  116. @uref{http://www.mysql.com/documentation/manual.php} doesn't cover the
  117. syntax you are using, @strong{MySQL} doesn't support your query.  In this
  118. case, your only options are to implement the syntax yourself or e-mail
  119. @email{mysql-licensing@@mysql.com} and ask for an offer to implement it!
  120. If the manual covers the syntax you are using, but you have an older version
  121. of @strong{MySQL}, you should check the @strong{MySQL} change history to see
  122. when the syntax was implemented.  @xref{News}.  In this case, you have the
  123. option of upgrading to a newer version of @strong{MySQL}.
  124. @item
  125. If you have a problem such that your data appears corrupt or you get
  126. errors when you access some particular table, you should first check and then
  127. try repairing your tables with @code{myisamchk} or @code{CHECK TABLE}/
  128. @code{REPAIR TABLE}.
  129. @xref{Maintenance}.
  130. @item
  131. If you often get corrupted tables you should try to find out when and
  132. why this happens!  In this case, the
  133. @file{mysql-data-directory/'hostname'.err} file may contain some
  134. information about what happened.  @xref{Error log}. Please include any relevant
  135. information from this file in your bug report!  Normally @code{mysqld}
  136. should @strong{NEVER} crash a table if nothing killed it in the middle
  137. of an update!  If you can find the cause of @code{mysqld} dying,
  138. it's much easier for us to provide you with a fix for the problem!
  139. @xref{What is crashing}.
  140. @item
  141. If possible, download the most recent version of @strong{MySQL} and check
  142. whether or not it solves your problem.  All versions of @strong{MySQL} are
  143. thoroughly tested and should work without problems!  We believe in making
  144. everything as backward compatible as possible, and you should be able to
  145. switch @strong{MySQL} versions in minutes!  @xref{Which version}.
  146. @end itemize
  147. If you are a support customer, please cross-post the bug report to
  148. @email{mysql-support@@mysql.com} for higher priority treatment, as well as to
  149. the appropriate mailing list to see if someone else has experienced (and
  150. perhaps solved) the problem.
  151. @cindex technical support, mailing address
  152. @cindex support, mailing address
  153. @cindex customer support, mailing address
  154. @cindex mailing address, for customer support
  155. For information on reporting bugs in @strong{MyODBC}, see @ref{ODBC
  156. Problems}.
  157. For solutions to some common problems, see @xref{Problems}.
  158. When answers are sent to you individually and not to the mailing list,
  159. it is considered good etiquette to summarize the answers and send the
  160. summary to the mailing list so that others may have the benefit of
  161. responses you received that helped you solve your problem!
  162. @cindex net etiquette
  163. @cindex questions, answering
  164. @cindex answering questions, etiquette
  165. @cindex mailing lists, guidelines
  166. @node Answering questions,  , Bug reports, Questions
  167. @section Guidelines for Answering Question on the Mailing List
  168. If you consider your answer to have broad interest, you may want to post it
  169. to the mailing list instead of replying directly to the individual who
  170. asked.  Try to make your answer general enough that people other than the
  171. original poster may benefit from it.  When you post to the list, please make
  172. sure that your answer is not a duplication of a previous answer.
  173. Try to summarize the essential part of the question in your reply; don't feel
  174. obliged to quote the entire original message.
  175. Please don't post mail messages from your browser with HTML mode turned on!
  176. Many users don't read mail with a browser!
  177. @cindex licensing terms
  178. @cindex support terms
  179. @node Licensing and Support, Installing, Questions, Top
  180. @chapter MySQL Licensing and Support
  181. @menu
  182. * Licensing policy::            @strong{MySQL} licensing policy
  183. * Copyright::                   Copyrights used by @strong{MySQL}
  184. * Licensing examples::          Example licensing situations
  185. * Cost::                        @strong{MySQL} licensing and support costs
  186. * Support::                     Types of commercial support
  187. @end menu
  188. This chapter describes @strong{MySQL} support and licensing
  189. arrangements:
  190. @itemize @bullet
  191. @item The copyrights under which @strong{MySQL} is distributed
  192. (@pxref{Copyright})
  193. @item Sample situations illustrating when a license is required
  194. (@pxref{Licensing examples})
  195. @item Support costs (@pxref{Cost}) and support benefits
  196. (@pxref{Support})
  197. @item Commercial licensing costs
  198. @end itemize
  199. @cindex licensing policy
  200. @cindex technical support, licensing
  201. @cindex support, licensing
  202. @cindex General Public License, MySQL
  203. @node Licensing policy, Copyright, Licensing and Support, Licensing and Support
  204. @section MySQL Licensing Policy
  205. The formal terms of the GPL license can be found at @ref{GPL license}.
  206. Basically, our licensing policy and intepretation of the GPL is as follows:
  207. Note that older versions of @strong{MySQL} are still using a more
  208. @uref{http://www.mysql.com/support/arrangements/mypl.html, strict license}. See the documentation for that version for more information.
  209. If you need a commercial @strong{MySQL} license, because the GPL license
  210. doesn't suit your application, you can buy one at
  211. @uref{https://order.mysql.com/license.htmy}.
  212. For normal internal use, @strong{MySQL} costs nothing.  You do not have
  213. to pay us if you do not want to.
  214. A license is required if:
  215. @itemize @minus
  216. @item
  217. You link a part of the of @strong{MySQL} that has a GPL Copyright to a
  218. program that is not free software (embedded usage of the @strong{MySQL}
  219. server).  In this case your application would also become GPL through the
  220. clause in the GPL license that acts as a virus. By licensing
  221. @strong{MySQL} from us under a commercial license you will avoid this
  222. problem.
  223. @item
  224. You have a commercial application that ONLY works with @strong{MySQL}
  225. and ships the application with the @strong{MySQL} server. This is
  226. because we view this as linking even if it is done over the network.
  227. @item
  228. You have a distribution of @strong{MySQL} and you don't provide the
  229. source code for your copy of the @strong{MySQL} server, as defined in
  230. the GPL license.
  231. @end itemize
  232. A license is @strong{NOT} required if:
  233. @itemize @minus
  234. @item
  235. You do not need a license to include the client code in commercial
  236. programs.  The client part of @strong{MySQL} licensed with the
  237. LGPL @code{GNU Library General Public License}. The @code{mysql} command-line
  238. client includes code from the @code{readline} library that is under
  239. the @code{GPL}.
  240. @item
  241. If your use of @strong{MySQL} does not require a license, but you
  242. like @strong{MySQL} and want to encourage further development, you are
  243. certainly welcome to purchase a license or @strong{MySQL} support anyway.
  244. @item
  245. If you use @strong{MySQL} in a commercial context such that
  246. you profit by its use, we ask that you further the development of
  247. @strong{MySQL} by purchasing some level of support.  We feel that if
  248. @strong{MySQL} helps your business, it is reasonable to ask that you help
  249. @strong{MySQL}.  (Otherwise, if you ask us support questions, you are not
  250. only using for free something into which we've put a lot a work, you're
  251. asking us to provide free support, too.)
  252. @end itemize
  253. For circumstances under which a @strong{MySQL} license is required, you
  254. need a license per machine that runs the @code{mysqld} server.  However,
  255. a multiple-CPU machine counts as a single machine, and there is no
  256. restriction on the number of @strong{MySQL} servers that run on one
  257. machine, or on the number of clients concurrently connected to a server
  258. running on that machine!
  259. If you have any questions as to whether or not a license is required for
  260. your particular use of @strong{MySQL}, please read this again and then
  261. contact us. @xref{Contact information}.
  262. If you require a @strong{MySQL} license, the easiest way to pay for it
  263. is to use the license form on @strong{MySQL}'s secure server at
  264. @uref{https://order.mysql.com/license.htmy}. Other forms of payment are
  265. discussed in @ref{Payment information}.
  266. @cindex copyrights
  267. @node Copyright, Licensing examples, Licensing policy, Licensing and Support
  268. @section Copyrights Used by MySQL
  269. @menu
  270. * Copyright changes::           Possible future copyright changes
  271. @end menu
  272. There are several different copyrights on the @strong{MySQL} distribution:
  273. @enumerate
  274. @item
  275. The @strong{MySQL}-specific source needed to build the
  276. @code{mysqlclient} library is licensed under the @code{LGPL} and
  277. programs in the @file{client} directory is GPL. Each file has a header
  278. that shows which copyright is used for that file.
  279. @item The client library and the (GNU @code{getopt}) library are covered
  280. by the ``GNU LIBRARY GENERAL PUBLIC LICENSE.'' @xref{LGPL license}.
  281. @item Some parts of the source (the @code{regexp} library) are covered
  282. by a Berkeley-style copyright.
  283. @item
  284. All the source in the server and the (GNU @code{readline}) library
  285. is covered by the ``GNU GENERAL PUBLIC LICENSE.'' @xref{GPL
  286. license}. This is also available as the file @file{COPYING} in the
  287. distributions.
  288. @end enumerate
  289. One goal is that the SQL client library should be free enough that it is
  290. possible to add @strong{MySQL} support into commercial products
  291. without a license. For this reason, we chose the LGPL license for the
  292. client code.
  293. @cindex licensing, free
  294. @cindex free licensing
  295. This means that you can use @strong{MySQL} for free with any program that uses
  296. any of the free software licenses.  @strong{MySQL} is also free for any end
  297. user for his own or company usage.
  298. However, if you use @strong{MySQL} for something important to you, you may
  299. want to help secure its development by purchasing licenses or a support
  300. contract. @xref{Support}.
  301. @node Copyright changes,  , Copyright, Copyright
  302. @subsection Copyright Changes
  303. The stable versions of @strong{MySQL} are still using a more strict
  304. license. See the documentation for that version for more information.
  305. @node Licensing examples, Cost, Copyright, Licensing and Support
  306. @section Example Licensing Situations
  307. @menu
  308. * Products that use MySQL::     Selling products that use @strong{MySQL}
  309. * ISP::                         ISP @strong{MySQL} services
  310. * Web server::                  Running a web server using @strong{MySQL}.
  311. @end menu
  312. @cindex licensing, examples
  313. @cindex selling products
  314. @cindex products, selling
  315. This section describes some situations illustrating whether or not you
  316. must license the @strong{MySQL} server.  Generally these examples
  317. involve providing @strong{MySQL} as an integral part of a product.
  318. Note that a single @strong{MySQL} license covers any number of CPUs and
  319. @code{mysqld} servers on a machine! There is no artificial limit on the number
  320. of clients that connect to the server in any way.
  321. @node Products that use MySQL, ISP, Licensing examples, Licensing examples
  322. @subsection Selling Products that use MySQL
  323. To determine whether or not you need a @strong{MySQL} license when
  324. selling your application, you should ask whether the proper functioning
  325. of your application is dependent on the use of @strong{MySQL} and
  326. whether you include the @strong{MySQL} server with your product.  There
  327. are several cases to consider:
  328. @itemize @bullet
  329. @item
  330. Does your application require @strong{MySQL} to function properly?
  331. @item
  332. If your product requires @strong{MySQL}, you need a license for any
  333. machine that runs the @code{mysqld} server.  For example, if you've
  334. designed your application around @strong{MySQL}, then you've really made
  335. a commercial product that requires the engine, so you need a license.
  336. @item
  337. If your application does not require @strong{MySQL}, you need not obtain
  338. a license.  For example, if using @strong{MySQL} just adds some new optional
  339. features to your product (such as adding logging to a database if
  340. @strong{MySQL} is used rather than logging to a text file), it should
  341. fall within normal use, and a license would not be required.
  342. @item
  343. In other words, you need a license if you sell a product designed
  344. specifically for use with @strong{MySQL} or that requires the
  345. @strong{MySQL} server to function at all.  This is true whether or not
  346. you provide @strong{MySQL} for your client as part of your product
  347. distribution.
  348. @item
  349. It also depends on what you're doing for the client.  Do you plan to
  350. provide your client with detailed instructions on installing
  351. @strong{MySQL} with your software?  Then your product may be contingent
  352. on the use of @strong{MySQL}; if so, you need to buy a license.  If you
  353. are simply tying into a database that you expect already to have been
  354. installed by the time your software is purchased, then you probably
  355. don't need a license.
  356. @end itemize
  357. @node ISP, Web server, Products that use MySQL, Licensing examples
  358. @subsection ISP MySQL Services
  359. @cindex ISP services
  360. @cindex services, ISP
  361. @cindex services, web
  362. @cindex Internet Service Providers
  363. Internet Service Providers (ISPs) often host @strong{MySQL} servers for
  364. their customers. With the GPL license this does not require a license.
  365. On the other hand, we do encourage people to use ISPs that have
  366. @strong{MySQL} support, as this will give them the confidence that if
  367. they have some problem with their @strong{MySQL} installation, their ISP
  368. will be able to solve the problem for them (in some cases with the help
  369. from the @strong{MySQL} development team).
  370. All ISPs that want to keep themselves up-to-date should subscribe
  371. to our @code{announce} mailing list so that they can be aware of fatal issues
  372. that may be relevant for their @strong{MySQL} installations.
  373. Note that if the ISP doesn't have a license for @strong{MySQL},
  374. it should give its customers at least read access to the source of
  375. the @strong{MySQL} installation so that its customer can verify that
  376. it is patched correctly.
  377. @cindex web server, running
  378. @cindex running, a web server
  379. @node Web server,  , ISP, Licensing examples
  380. @subsection Running a Web Server Using MySQL
  381. If you use @strong{MySQL} in conjunction with a Web server on Unix, you
  382. don't have to pay for a license.
  383. This is true even if you run a commercial Web server that uses
  384. @strong{MySQL}, because you are not selling an embedded @strong{MySQL}
  385. version yourself. However, in this case we would like you to purchase
  386. @strong{MySQL} support, because @strong{MySQL} is helping your
  387. enterprise.
  388. @cindex costs, licensing and support
  389. @cindex licensing costs
  390. @cindex support costs
  391. @cindex prices, licensing and support
  392. @node Cost, Support, Licensing examples, Licensing and Support
  393. @section MySQL Licensing and Support Costs
  394. @menu
  395. * Payment information::         Payment information
  396. * Contact information::         Contact information
  397. @end menu
  398. Our current license prices are shown below. These prices are now under
  399. review because of the change to a GPL copyright. New prices and terms
  400. will be posted on the @strong{MySQL} web site
  401. @uref{http://www.mysql.com/} as soon as they are ready.
  402. All prices are in US Dollars. If you pay by credit card, the currency is
  403. EURO (European Union Euro) so the prices will differ slightly.
  404. @multitable @columnfractions .3 .3 .3
  405. @item @strong{Number of licenses} @tab @strong{Per copy} @tab @strong{Total}
  406. @item 1                  @tab 200 EURO @tab 200 EURO
  407. @item 10 pack            @tab 150 EURO @tab 1500 EURO
  408. @item 50 pack            @tab 120 EURO @tab 6000 EURO
  409. @end multitable
  410. For high volume (OEM) purchases, the following prices apply:
  411. @multitable @columnfractions .25 .2 .3 .25
  412. @item @strong{Number of licenses}  @tab @strong{Per copy} @tab @strong{Minimum } @tab @strong{Minimum payment}
  413. @item 100-999   @tab 40 EURO   @tab 100                     @tab 4000 EURO
  414. @item 1000-2499 @tab 25 EURO   @tab 200                     @tab 5000 EURO
  415. @item 2500-4999 @tab 20 EURO   @tab 400                     @tab 8000 EURO
  416. @end multitable
  417. For OEM purchases, you must act as the middle-man for eventual problems
  418. or extension requests from your users. We also require that OEM
  419. customers have at least an extended e-mail support contract.  Note that
  420. OEM licenses only apply for products where the user doesn't have direct
  421. access to the @strong{MySQL} server (embedded system). In other words,
  422. the @strong{MySQL} server should only be used with the application
  423. that was supplied you.
  424. If you have a low-margin high-volume product, you can always talk to us
  425. about other terms (for example, a percent of the sale price). If you do,
  426. please be informative about your product, pricing, market, and any other
  427. information that may be relevant.
  428. A full-price license is not a support agreement and includes very minimal
  429. support. This means that we try to answer any relevant questions. If the
  430. answer is in the documentation, we will direct you to the appropriate
  431. section. If you have not purchased a license or support, we probably will not
  432. answer at all.
  433. If you discover what we consider a real bug, we are likely to fix it in
  434. any case. But if you pay for support we will notify you about the fix
  435. status instead of just fixing it in a later release.
  436. More comprehensive support is sold separately.  Descriptions of what each
  437. level of support includes are given in @ref{Support}.  Costs for the various
  438. types of commercial support are shown below.  Support level prices are in
  439. EURO (European Union Euro). One EURO is about 1.06 USD.
  440. @multitable @columnfractions .5 .5
  441. @item @strong{Type of support}  @tab @strong{Cost per year}
  442. @item Basic e-mail support. @xref{Basic email support}. @tab EURO 200
  443. @item Extended e-mail support @xref{Extended email support}. @tab EURO 1000
  444. @item Login support @xref{Login support}.            @tab EURO 2000
  445. @item Extended login support @xref{Extended login support}.  @tab EURO 5000
  446. @item Telephone support @xref{Telephone support}.  @tab EURO 12000
  447. @end multitable
  448. You may upgrade from any lower level of support to a higher level of
  449. support for the difference in price between the two support levels.
  450. We do also provide telephone support (mostly emergency support but also
  451. 24/7 support). This support option doesn't however have a fixed price
  452. but is negotiated for case to case. If you are interested in this option
  453. you can email @email{sales@@mysql.com} and tell us about your needs.
  454. Note that as our sales staff is very busy, it may take some time until
  455. your request is handled.  Our support staff does however always answer
  456. promptly to support questions!
  457. @cindex payment information
  458. @node Payment information, Contact information, Cost, Cost
  459. @subsection Payment information
  460. Currently we can take SWIFT payments, checks, or credit cards.
  461. Payment should be made to:
  462. @example
  463. Postgirot Bank AB
  464. 105 06 STOCKHOLM, SWEDEN
  465. MySQL AB
  466. BOX 6434
  467. 11382 STOCKHOLM, SWEDEN
  468. SWIFT address: PGSI SESS
  469. Account number: 96 77 06 - 3
  470. @end example
  471. Specify: license and/or support and your name and e-mail address.
  472. In Europe and Japan you can use EuroGiro (that should be less expensive) to the
  473. same account.
  474. If you want to pay by check, make it payable to ``MySQL Finland AB'' and
  475. mail it to the address below:
  476. @example
  477. MySQL AB
  478. BOX 6434, Torsgatan 21
  479. 11382 STOCKHOLM, SWEDEN
  480. @end example
  481. If you want to pay by credit card over the Internet, you can use
  482. @uref{https://order.mysql.com/license.htmy, MySQL AB's secure license form}.
  483. You can also print a copy of the license form, fill it in, and send it by fax
  484. to:
  485. +46-8-729 69 05
  486. If you want us to bill you, you can use the license form and write ``bill
  487. us'' in the comment field.  You can also mail a message to
  488. @email{sales@@mysql.com} (@strong{not} @code{mysql@@lists.mysql.com}!)
  489. with your company information and ask us to bill you.
  490. @cindex contact information
  491. @cindex licensing, contact information
  492. @cindex partnering, with MySQL
  493. @cindex employment with MySQL
  494. @cindex jobs at MySQL
  495. @node Contact information,  , Payment information, Cost
  496. @subsection Contact Information
  497. For commercial licensing, please contact the @strong{MySQL} licensing
  498. team. The much preferred method is by e-mail to
  499. @email{licensing@@mysql.com}. Fax is also possible but handling of
  500. these may take much longer (Fax +46-8-729 69 05).
  501. If you represent a business that is interested in partnering with
  502. @strong{MySQL}, please send e-mail to @email{partner@@mysql.com}.
  503. For timely, precise answers to technical questions about @strong{MySQL}
  504. you should @uref{https://order.mysql.com/, order} one of our
  505. @uref{http://www.mysql.com/support/arrangements/types.html, support contracts}.
  506. @strong{MySQL} support is provided by the @strong{MySQL} developers so the
  507. standard is extremely high.
  508. If you are interested in placing a banner advertisement on our Web site,
  509. please send e-mail to @email{advertising@@mysql.com}.
  510. If you are interested in any of the jobs listed in our
  511. @uref{http://www.mysql.com/development/jobs/, jobs} section, please send e-mail
  512. to @email{jobs@@mysql.com}.
  513. For general discussion amongst our many users, please direct your attention to
  514. the appropriate @uref{http://www.mysql.com/documentation/lists.html, mailing
  515. list}.
  516. For general information inquires, please send e-mail to
  517. @email{info@@mysql.com}.
  518. For questions or comments about the workings or content of this Web site,
  519. please send e-mail to @email{webmaster@@mysql.com}.
  520. @cindex support, types
  521. @cindex types, of support
  522. @cindex commercial support, types
  523. @node Support,  , Cost, Licensing and Support
  524. @section Types of Commercial Support
  525. @menu
  526. * Basic email support::         Basic email support
  527. * Extended email support::      Extended email support
  528. * Login support::               Login support
  529. * Extended login support::      Extended login support
  530. * Telephone support::           Telephone support
  531. * Table handler support::       Support for other table handlers
  532. @end menu
  533. @cindex email, technical support
  534. @cindex technical support, by email
  535. @node Basic email support, Extended email support, Support, Support
  536. @subsection Basic E-mail Support
  537. Basic e-mail support is a very inexpensive support option and should be
  538. thought of more as a way to support our development of @strong{MySQL}
  539. than as a real support option.  We at @strong{MySQL} do give a lot of free
  540. support in all the different @strong{MySQL} lists, and the money we get from
  541. basic e-mail support is largely used to make this possible.
  542. At this support level, the @strong{MySQL} mailing lists are the preferred
  543. means of communication.  Questions normally should be mailed to the primary
  544. mailing list (@email{mysql@@lists.mysql.com}) or one of the other regular
  545. lists (for example, @email{win32@@lists.mysql.com} for Windows-related
  546. @strong{MySQL} questions), as someone else already may have experienced and
  547. solved the problem you have.  @xref{Asking questions}.
  548. However, by purchasing basic e-mail support, you also have access to the
  549. support address @email{mysql-support@@mysql.com}, which is not available
  550. as part of the minimal support that you get by purchasing a
  551. @strong{MySQL} license.  This means that for especially critical
  552. questions, you can cross-post your message to
  553. @email{mysql-support@@mysql.com}.  (If the message contains sensitive
  554. data, you should post only to @email{mysql-support@@mysql.com}.)
  555. @emph{REMEMBER!} to ALWAYS include your registration number and
  556. expiration date when you send a message to
  557. @email{mysql-support@@mysql.com}.
  558. Note that if you have encountered a critical repeatable bug and follow
  559. the rules outlined in the manual section of how to report bugs and send
  560. it to @email{bugs@@lists.mysql.com}, we promise to try to fix this as
  561. soon as possible, regardless of your support level! @xref{Bug reports}.
  562. Basic e-mail support includes the following types of service:
  563. @itemize @bullet
  564. @item
  565. If your question is already answered in the manual, we will inform you of the
  566. correct section in which you can find the answer.  If the answer is not in
  567. the manual, we will point you in the right direction to solve your problem.
  568. @item
  569. We guarantee a timely answer for your e-mail messages.  We can't guarantee
  570. that we can solve any problem, but at least you will receive an answer if we
  571. can contact you by e-mail.
  572. @item
  573. We will help with unexpected problems when you install @strong{MySQL} from a
  574. binary distribution on supported platforms.  This level of support does not
  575. cover installing @strong{MySQL} from a source distribution.  Supported
  576. platforms are those for which @strong{MySQL} is known to work.
  577. @xref{Which OS}.
  578. @item
  579. We will help you with bugs and missing features. Any bugs that are found are
  580. fixed for the next @strong{MySQL} release. If the bug is critical for
  581. you, we will mail you a patch for it as soon the bug is fixed.  Critical
  582. bugs always have the highest priority for us, and we ensure that they are
  583. fixed as soon as possible.
  584. @item
  585. Your suggestions for the further development of @strong{MySQL} will be
  586. taken into consideration. By taking email support you have already
  587. helped the further development of @strong{MySQL}. If you want to have
  588. more input, upgrade to a higher level of support.
  589. @item
  590. If you want us to help optimize your system, you must upgrade to a
  591. higher level of support.
  592. @end itemize
  593. @cindex extended email support
  594. @node Extended email support, Login support, Basic email support, Support
  595. @subsection Extended E-mail Support
  596. Extended e-mail support includes everything in basic e-mail support with
  597. these additions:
  598. @itemize @bullet
  599. @item
  600. Your e-mail will be dealt with before mail from basic e-mail support users and
  601. non-registered users.
  602. @item
  603. Your suggestions for the further development of @strong{MySQL} will
  604. receive strong consideration. Simple extensions that suit the basic
  605. goals of @strong{MySQL} are implemented in a matter of days. By taking
  606. extended e-mail support you have already helped the further development
  607. of @strong{MySQL}.
  608. @item
  609. Typical situations that are covered by extended e-mail support are:
  610. @itemize @minus
  611. @item
  612. We will answer and (within reason) solve questions that relate to possible
  613. bugs in @strong{MySQL}.  As soon as the bug is found and corrected, we
  614. will mail a patch for it.
  615. @item
  616. We will help with unexpected problems when you install @strong{MySQL} from a
  617. source or binary distribution on supported platforms.
  618. @item
  619. We will answer questions about missing features and offer hints how to work
  620. around them.
  621. @item
  622. We will provide hints on optimizing @code{mysqld} for your situation.
  623. @end itemize
  624. @item
  625. You are allowed to influence the priority of items on the @strong{MySQL}
  626. TODO List. @xref{TODO}. This will ensure that the features you really need
  627. will be implemented sooner than they might be otherwise.
  628. @end itemize
  629. @cindex login support
  630. @node Login support, Extended login support, Extended email support, Support
  631. @subsection Login Support
  632. Login support includes everything in extended e-mail support with
  633. these additions:
  634. @itemize @bullet
  635. @item
  636. Your e-mail will be dealt with even before e-mail from extended e-mail
  637. support users.
  638. @item
  639. Your suggestions for the further development of @strong{MySQL} will
  640. be taken into very high consideration.  Realistic extensions that can be
  641. implemented in a couple of hours and that suit the basic goals of
  642. @strong{MySQL} will be implemented as soon as possible.
  643. @item
  644. If you have a very specific problem, we can try to log in on your system
  645. to solve the problem ``in place.''
  646. @item
  647. Like any database vendor, we can't guarantee that we can rescue any data from
  648. crashed tables, but if the worst happens, we will help you rescue as much as
  649. possible. @strong{MySQL} has proven itself very reliable, but anything is
  650. possible due to circumstances beyond our control (for example, if your system
  651. crashes or someone kills the server by executing a @code{kill -9} command).
  652. @item
  653. We will provide hints on optimizing your system and your queries.
  654. @item
  655. You are allowed to call a @strong{MySQL} developer (in moderation) and
  656. discuss your @strong{MySQL}-related problems.  This option is however
  657. only to be used as a last result during an emergency after we have
  658. failed to grasp the total problem with email.  To make efficient
  659. use of our time we need to first get all facts about the problem,
  660. before talking on phone, to be able to work as efficiently as possible on
  661. solving the problem.
  662. @end itemize
  663. @node Extended login support, Telephone support, Login support, Support
  664. @subsection Extended Login Support
  665. Extended login support includes everything in login support with these
  666. additions:
  667. @itemize @bullet
  668. @item
  669. Your e-mail has the highest possible priority.
  670. @item
  671. We will actively examine your system and help you optimize it and your
  672. queries. We may also optimize and/or extend @strong{MySQL} to better
  673. suit your needs.
  674. @item
  675. You may also request special extensions just for you. For example:
  676. @example
  677. mysql> select MY_FUNC(col1,col2) from table;
  678. @end example
  679. @item
  680. We will provide a binary distribution of all important @strong{MySQL}
  681. releases for your system, as long as we can get an account on a
  682. similar system. In the worst case, we may require access to your system
  683. to be able to create a binary distribution.
  684. @item
  685. If you can provide accommodations and pay for traveler fares, you can
  686. even get a @strong{MySQL} developer to visit you and offer you help with
  687. your troubles. Extended login support entitles you to one personal
  688. encounter per year, but we are always very flexible towards our
  689. customers!  If the visit takes 16 hours or more, the first 8 hours is
  690. without charge.  For the hours above 8 hours, you will be charged with a
  691. rate that is at least 20 % less than our standard rates.
  692. @end itemize
  693. @node Telephone support, Table handler support, Extended login support, Support
  694. @subsection Telephone Support
  695. Telephone support includes everything in extended login support with
  696. these additions:
  697. @itemize @bullet
  698. @item
  699. We will provide you with a dynamic web page showing the current list of
  700. @code{MySQL} developers that you can phone when you have a critical
  701. problem.
  702. @item
  703. For non critical problem, you can request a @strong{MySQL} developer to
  704. phone back within 48 hours to discuss @code{MySQL} related issues.
  705. @end itemize
  706. @cindex support, BDB Tables
  707. @cindex support, INNOBASE Tables
  708. @cindex support, GEMENI Tables
  709. @node Table handler support,  , Telephone support, Support
  710. @subsection Support for other table handlers
  711. To get support for @code{BDB} tables, @code{INNOBASE} tables or
  712. @code{GEMINI} tales you has to pay and additional 30 % on the basic
  713. support price for each of the table handlers you want to get support on.
  714. This extra cost is cover the back support cost for the other table
  715. handlers.
  716. We at @code{MySQL AB} will help you create a proper bug report for the
  717. table handler and submit it to the developers for to specific table
  718. handler. We will also do our best to ensure that you will get a timely
  719. answer/solution from the developers of the table handler.
  720. Even if we are quite confident that we can solve most problems within a
  721. timely manner, we can't guarantee a quick solution for any problems you
  722. can get with the different table handlers. We will however do our best
  723. to help you get the problem solved.
  724. @node Installing, Compatibility, Licensing and Support, Top
  725. @chapter Installing MySQL
  726. @cindex installing, overview
  727. @menu
  728. * Getting MySQL::               How to get @strong{MySQL}
  729. * Which OS::                    Operating systems supported by @strong{MySQL}
  730. * Which version::               Which @strong{MySQL} version to use
  731. * Many versions::               How and when updates are released
  732. * Installation layouts::        Installation layouts
  733. * Installing binary::           Installing a @strong{MySQL} binary distribution
  734. * Installing source::           Installing a @strong{MySQL} source distribution
  735. * Installing source tree::      Installing @strong{MySQL} from development source tree
  736. * Compilation problems::        Problems compiling?
  737. * MIT-pthreads::                MIT-pthreads notes
  738. * Perl support::                Perl installation comments
  739. * Source install system issues::  System-specific issues
  740. * Windows::                     Windows notes
  741. * OS/2::                        OS/2 notes
  742. * MySQL binaries::              MySQL binaries
  743. * Post-installation::           Post-installation setup and testing
  744. * Installing many servers::     Installing many servers on the same machine
  745. * Upgrade::                     Upgrading/Downgrading MySQL
  746. @end menu
  747. This chapter describes how to obtain and install @strong{MySQL}:
  748. @itemize @bullet
  749. @item
  750. For a list of sites from which you can obtain @strong{MySQL}, see
  751. @ref{Getting MySQL, , Getting @strong{MySQL}}.
  752. @item
  753. To see which platforms are supported, see @ref{Which OS}.
  754. @item
  755. Several versions of @strong{MySQL} are available in both binary and
  756. source distributions. We also provide public access to our current
  757.  source tree for those who want to see our most recent developments and
  758. help us test new code. To determine which version and type of
  759. distribution you should use, see @ref{Many versions}.
  760. @item
  761. Installation instructions for binary and source distributions are described
  762. in @ref{Installing binary} and @ref{Installing source}.  Each set of
  763. instructions includes a section on system-specific problems you may run
  764. into.
  765. @item
  766. For post-installation procedures, see @ref{Post-installation}.  These
  767. procedures apply whether you install @strong{MySQL} using a binary or
  768. source distribution.
  769. @end itemize
  770. @cindex downloading
  771. @cindex MySQL version
  772. @cindex version, latest
  773. @cindex getting MySQL
  774. @cindex mirror sites
  775. @cindex URLS for downloading MySQL
  776. @node Getting MySQL, Which OS, Installing, Installing
  777. @section How to Get MySQL
  778. Check the @uref{http://www.mysql.com/, @strong{MySQL} home page} for
  779. information about the current version and for downloading instructions.
  780. Our main download mirror is located at:
  781. @uref{http://download.sourceforge.net/mirrors/mysql/, http://download.sourceforge.net/mirrors/mysql/}
  782. If you are interested in becoming a @strong{MySQL} mirror site, you may
  783. anonymously rsync with: @code{rsync://download.sourceforge.net/mysql/}. Please
  784. send e-mail to @email{webmaster@@mysql.com} notifying us of your mirror to be
  785. added to the list below.
  786. If you have problems downloading from our main site, try using one of the
  787. mirrors listed below.
  788. Please report bad or out-of-date mirrors to @email{webmaster@@mysql.com}.
  789. @c START_OF_MIRROR_LISTING
  790. @strong{Europe:}
  791. @itemize @bullet
  792. @item
  793. @c EMAIL: sl@iuinfo.tuwien.ac.at (Tony Sprinzl)
  794. @image{Flags/austria} Austria [Univ. of Technology/Vienna] @
  795. @uref{http://gd.tuwien.ac.at/db/mysql/, WWW}
  796. @uref{ftp://gd.tuwien.ac.at/db/mysql/, FTP}
  797. @c @item
  798. @c Not ok 20000919; Old site (Matt)
  799. @c EMAIL: delian@naturella.com (Delian Delchev)
  800. @c @image{Flags/bulgaria} Bulgaria [Naturella] @
  801. @c @uref{http://archive.nat.bg/pub/mirror/mysql/, WWW}
  802. @c @uref{ftp://ftp.ntrl.net/pub/mirror/mysql/, FTP}
  803. @item
  804. @c EMAIL: salle@online.bg (Admin)
  805. @image{Flags/bulgaria} Bulgaria [online.bg/Sofia] @
  806. @uref{http://mysql.online.bg/, WWW}
  807. @uref{ftp://mysql.online.bg/, FTP}
  808. @c @item
  809. @c Added: 990614
  810. @c Not ok 20000919; Out of date (Matt)
  811. @c EMAIL: vuksan@veus.hr (Vladimir Vuksan)
  812. @c @image{Flags/croatia} Croatia [HULK] @
  813. @c @uref{http://ftp.linux.hr/pub/mysql/, WWW}
  814. @c @uref{ftp://ftp.linux.hr/pub/mysql/, FTP}
  815. @item
  816. @c Added: 990614
  817. @c EMAIL: kas@informatics.muni.cz (Jan Kasprzak)
  818. @image{Flags/czech-republic} Czech Republic [Masaryk University in Brno] @
  819. @uref{http://mysql.linux.cz/index.html, WWW}
  820. @uref{ftp://ftp.fi.muni.cz/pub/mysql/, FTP}
  821. @item
  822. @c Added: 990920
  823. @c EMAIL: <radek@sopik.cz> (Radek Libovicky)
  824. @image{Flags/czech-republic} Czech Republic [www.sopik.cz] @
  825. @uref{http://www.mysql.cz/, WWW}
  826. @item
  827. @c Added: 000418
  828. @c EMAIL: <feela@ipex.cz> (Ondrej Feela Filip)
  829. @image{Flags/czech-republic} Czech Republic [www.gin.cz] @
  830. @uref{http://mysql.gin.cz/, WWW}
  831. @uref{ftp://ftp.gin.cz/pub/MIRRORS/www.mysql.com/, FTP}
  832. @item
  833. @c removed 991020 (no DNS entry). New name 991026. Added 991121
  834. @c Statistics at http://mirror.borsen.dk/
  835. @c EMAIL: mirrorman@borsen.dk  (Michael Kyed)
  836. @image{Flags/denmark} Denmark [Borsen] @
  837. @uref{ http://mysql.borsen.dk/, WWW}
  838. @item
  839. @c EMAIL: mkp@socsci.auc.dk (Martin Kasper Petersen)
  840. @image{Flags/denmark} Denmark [SunSITE] @
  841. @uref{http://SunSITE.auc.dk/mysql/, WWW}
  842. @uref{ftp://SunSITE.auc.dk/pub/databases/mysql/, FTP}
  843. @c @item
  844. @c T鮪u does not work there anymore :-) 990720
  845. @c EMAIL: tonu@tradenet.ee (T鮪u Samuel)
  846. @c @image{Flags/estonia} Estonia [Tradenet] @
  847. @c @uref{http://mysql.tradenet.ee, WWW}
  848. @item
  849. @c EMAIL: tonu@spam.ee (T鮪u Samuel)
  850. @image{Flags/estonia} Estonia [OKinteractive] @
  851. @uref{http://mysql.mirror.ok.ee, WWW}
  852. @c @item
  853. @c Changed 990531
  854. @c Not ok 20000919; Old site (Matt)
  855. @c EMAIL: Steeve.Devergne@minet.net (Steeve Devergne)
  856. @c @image{Flags/france} France [minet] @
  857. @c @uref{http://www.minet.net/devel/mysql/, WWW}
  858. @item
  859. @c EMAIL: alex@mtesa.net (Alexandre Dupouy)
  860. @image{Flags/france} France [mtesa.net] @
  861. @uref{http://mysql.mtesa.net/, WWW}
  862. @c @item
  863. @c Not ok 20000919; Old site (Matt)
  864. @c EMAIL: Jaakko.Hyvatti@eunet.fi
  865. @c @image{Flags/finland} Finland [EUnet] @
  866. @c @uref{http://mysql.eunet.fi/, WWW}
  867. @c @item
  868. @c Added 990829
  869. @c Not ok 20000919; Non-existent (Matt)
  870. @c EMAIL: tomi.hakala@clinet.fi (Tomi Hakala)
  871. @c @image{Flags/finland} Finland [clinet] @
  872. @c @uref{ftp://ftp.clinet.fi/mirrors/ftp.mysql.org/pub/mysql/, FTP}
  873. @item
  874. @c Added 20001019
  875. @c EMAIL: d@d.tj (Dominique L . Bouix)
  876. @image{Flags/finland} Finland [tonnikala.net] @
  877. @uref{http://mysql.tonnikala.org/, WWW}
  878. @item
  879. @c Added 981208
  880. @c EMAIL: noel@uni-bonn.de (Noel Koethe)
  881. @image{Flags/germany} Germany [Kernelnotes.de, Bonn] @
  882. @uref{http://www.kernelnotes.de/mysql/, WWW}
  883. @uref{ftp://ftp.kernelnotes.de/pub/mirror/mysql.org/, FTP}
  884. @item
  885. @c EMAIL: th@rz.fh-wolfenbuettel.de (Thorsten Ludewig)
  886. @image{Flags/germany} Germany [Wolfenbuettel] @
  887. @uref{http://www.fh-wolfenbuettel.de/ftp/pub/database/mysql/, WWW}
  888. @uref{ftp://ftp.fh-wolfenbuettel.de/pub/database/mysql/, FTP}
  889. @c @item
  890. @c Ok 980114. Removed 981208 (down > 3 days) ok 981214
  891. @c Not ok 20000919; Non-existent (Matt)
  892. @c EMAIL: straub@gks.de (Hans-Peter Straub)
  893. @c @image{Flags/germany} Germany [Staufen] @
  894. @c @uref{http://mysql.staufen.de/, WWW}
  895. @c @item
  896. @c Added 990614
  897. @c Not ok 20000919; Non-existent (Matt)
  898. @c EMAIL: thomas.rohde@ecrc.de (Thomas Rohde)
  899. @c @image{Flags/germany} Germany [Cable & Wireless] @
  900. @c @uref{ftp://ftp.ecrc.net/pub/database/mysql/, FTP}
  901. @item
  902. @c Added 981208
  903. @c EMAIL: christias@noc.ntua.gr (Panagiotis Christias)
  904. @image{Flags/greece} Greece [NTUA, Athens] @
  905. @uref{http://www.ntua.gr/mysql/, WWW}
  906. @uref{ftp://ftp.ntua.gr/pub/databases/mysql/, FTP}
  907. @item
  908. @c EMAIL: torlasz@xenia.sote.hu (Laszlo L. Tornoc)
  909. @image{Flags/hungary} Hungary [Xenia] @
  910. @uref{http://mysql.sote.hu/, WWW}
  911. @uref{ftp://xenia.sote.hu/pub/mirrors/www.mysql.com/, FTP}
  912. @item
  913. @c EMAIL: mirrors@gm.is (Tomas Edwardsson)
  914. @image{Flags/iceland} Iceland [GM] @
  915. @uref{http://mysql.gm.is/, WWW}
  916. @uref{ftp://ftp.gm.is/pub/mysql/, FTP}
  917. @c @item
  918. @c Out of date 990906
  919. @c EMAIL: bourbon@netvision.net.il (Zeev Suraski)
  920. @c @image{Flags/israel} Israel [Netvision] @
  921. @c @uref{http://mysql.netvision.net.il/, WWW}
  922. @c @item
  923. @c Not working 99.03.06
  924. @c EMAIL: maruzz@matrice.it (Giovanni Maruzzelli)
  925. @c @image{Flags/italy} Italy [Matrice] @
  926. @c @uref{http://www.matrice.it/risorse/mysql/, WWW}
  927. @item
  928. @c EMAIL: gabriele@feelinglinux.com (Giansante Gabriele)
  929. @image{Flags/italy} Italy [feelinglinux.com] @
  930. @uref{http://mysql.feelinglinux.com/, WWW}
  931. @item
  932. @c EMAIL: irena@yacc.it
  933. @image{Flags/italy} Italy [Teta Srl] @
  934. @uref{http://www.teta.it/mysql/, WWW}
  935. @item
  936. @c EMAIL: rudy@comm2000.it (Rudy)
  937. @image{Flags/italy} Italy [tzone.it] @
  938. @uref{http://mysql.tzone.it/, WWW}
  939. @c @item
  940. @c Added 991121
  941. @c Not ok 20000919; Old site (Matt)
  942. @c EMAIL: nick@iol.ie (Nick Hilliard)
  943. @c @image{Flags/ireland} Ireland [Ireland On-Line/Dublin] @
  944. @c @uref{http://mysql.iol.ie, WWW}
  945. @c @uref{ftp://ftp.iol.ie/pub/mysql, FTP}
  946. @item
  947. @c Added 20001031
  948. @c EMAIL: dave@esat.net (Dave Rynne)
  949. @image{Flags/ireland} Ireland [Esat Net] @
  950. @uref{http://ftp.esat.net/mirrors/download.sourceforge.net/pub/mirrors/mysql/, WWW}
  951. @uref{ftp://ftp.esat.net/mirrors/download.sourceforge.net/pub/mirrors/mysql/, FTP}
  952. @item
  953. @c Added 20001125
  954. @c EMAIL: mleicher@silverpoint.nl (Marcel Leicher)
  955. @image{Flags/netherlands} Netherlands [Silverpoint] @
  956. @uref{http://mysql.silverpoint.nl/, WWW}
  957. @item
  958. @c EMAIL: mysql@widexs.nl (Wouter de Jong)
  959. @image{Flags/netherlands} Netherlands [Widexs BV] @
  960. @uref{http://mysql.widexs.nl/, WWW}
  961. @uref{ftp://mysql.widexs.nl/pub/mysql/, FTP}
  962. @item
  963. @c EMAIL: W.Sylwestrzak@icm.edu.pl (Wojtek Sylwestrzak)
  964. @c mirroring nightly at 05:25
  965. @image{Flags/poland} Poland [Sunsite] @
  966. @uref{http://sunsite.icm.edu.pl/mysql/, WWW}
  967. @uref{ftp://sunsite.icm.edu.pl/pub/unix/mysql/, FTP}
  968. @item
  969. @c EMAIL: admin@net.ncservice.com.pl (Marian Witkowski)
  970. @image{Flags/poland} Poland [ncservice.com/Gdansk] @
  971. @uref{http://mysql.service.net.pl/, WWW}
  972. @c @item
  973. @c EMAIL: melo@co.telenet.pt (Pedro Melo)
  974. @c Temp out of service (email from Pedro)
  975. @c @image{Flags/portugal} Portugal [IP] @
  976. @c @uref{http://mysql.ip.pt, WWW}
  977. @c @item
  978. @c Not ok 20000919; Non-existent (Matt)
  979. @c EMAIL: Equipa de suporte do Leirianet <support@leirianet.pt>
  980. @c @image{Flags/portugal} Portugal [lerianet] @
  981. @c @uref{http://mysql.leirianet.pt, WWW}
  982. @c @uref{ftp://ftp.leirianet.pt/pub/mysql/,FTP}
  983. @item
  984. @c Added 20001031
  985. @c bofh@netc.pt (Bruno Rodrigues)
  986. @image{Flags/portugal} Portugal [Netc] @
  987. @uref{http://ftp.netc.pt/pub/mysql/, WWW}
  988. @uref{ftp://ftp.netc.pt/pub/mysql/, FTP}
  989. @item
  990. @c EMAIL: keeper@roedu.net (Mihai RUSU)
  991. @image{Flags/romania} Romania [roedu.net/Bucharest] @
  992. @uref{ftp://ftp.roedu.net/pub/mirrors/ftp.mysql.com/, FTP}
  993. @item
  994. @c EMAIL: kuzmin@dn.ru (Roma Kuzmin)
  995. @image{Flags/russia} Russia [DirectNet] @
  996. @uref{http://mysql.directnet.ru/, WWW}
  997. @uref{ftp://ftp.dn.ru/pub/MySQL/, FTP}
  998. @c @item
  999. @c down 990113
  1000. @c EMAIL: nikkic@cityline.ru (Nikki Chumakov)
  1001. @c @image{Flags/russia} Russia [Cityline] @
  1002. @c @uref{ftp://mysql.cityline.ru/pub/mysql, FTP}
  1003. @c @uref{http://mysql.cityline.ru, WWW}
  1004. @c EMAIL: bar@izhcom.ru (Alexander I Barkov)
  1005. @c @item
  1006. @c Not ok 20000919; Non-existent (Matt)
  1007. @c @image{Flags/russia} Russia [IZHCOM] @
  1008. @c @uref{http://mysql.udm.net/, WWW}
  1009. @c @uref{ftp://ftp.izhcom.ru/pub/mysql/,FTP}
  1010. @item
  1011. @c Added 990507
  1012. @c EMAIL: demon@gpad.ac.ru (Dima Sivachenko)
  1013. @image{Flags/russia} Russia [Scientific Center/Chernogolovka] @
  1014. @uref{ftp://ftp.chg.ru/pub/databases/mysql/, FTP}
  1015. @c @item
  1016. @c Not ok 20000919; Old site (Matt)
  1017. @c EMAIL: sebi@dnttm.ro (Sebastian DEAC)
  1018. @c @image{Flags/romania} Romania [Timisoara] @
  1019. @c @uref{http://download.dnttm.ro/mysql, WWW}
  1020. @c @uref{ftp://ftp.dnttm.ro/pub/mysql, FTP}
  1021. @c @item
  1022. @c Not ok 20001123; Non-existant (Matt)
  1023. @c EMAIL: tim@lbi.ro (Bogdan Surdu)
  1024. @c @image{Flags/romania}
  1025. @c Romania [Bucharest] @
  1026. @c @uref{http://www.lbi.ro/MySQL/, WWW}
  1027. @c @uref{ftp://ftp.lbi.ro/mirrors/ftp.tcx.se, FTP}
  1028. @c @item
  1029. @c Removed 20000521 because there is no mirror here.
  1030. @c EMAIL: jips@masterd.es (Juan Ignacio P閞ez Sacrist醤)
  1031. @c @image{Flags/spain} Spain [MasterD]
  1032. @c @uref{http://mysql.masterd.es, WWW}
  1033. @c @item
  1034. @c Not ok 20000919; Old site (Matt)
  1035. @c EMAIL: Patrik.Karen@sdi.slu.se (Patrik Karen)
  1036. @c ftp -> remove old files
  1037. @c @image{Flags/sweden} Sweden [Sunet] @
  1038. @c @uref{http://ftp.sunet.se/pub/unix/databases/relational/mysql/, WWW}
  1039. @c @uref{ftp://ftp.sunet.se/pub/unix/databases/relational/mysql/, FTP}
  1040. @item
  1041. @c EMAIL: archive@sunsite.cnlab-switch.ch (Thomas Lenggenhager)
  1042. @image{Flags/switzerland} Switzerland [Sunsite] @
  1043. @uref{http://sunsite.cnlab-switch.ch/ftp/mirror/mysql/, WWW}
  1044. @uref{ftp://sunsite.cnlab-switch.ch/mirror/mysql/, FTP}
  1045. @c @item
  1046. @c Not ok 20000919; Non-existent (Matt)
  1047. @c simon@oyster.co.uk (Simon Gornall)
  1048. @c @image{Flags/great-britain} UK [Oyster/UK] @
  1049. @c @uref{ftp://ftp.oyster.co.uk/pub/mysql, FTP}
  1050. @item
  1051. @c gareth@omnipotent.net (Gareth Watts)
  1052. @image{Flags/great-britain} UK [Omnipotent/UK] @
  1053. @uref{http://mysql.omnipotent.net/, WWW}
  1054. @uref{ftp://mysql.omnipotent.net/, FTP}
  1055. @item
  1056. @c keet@mordor.plig.net (Christiaan Keet)
  1057. @image{Flags/great-britain} UK [PLiG/UK] @
  1058. @uref{http://ftp.plig.org/pub/mysql/, WWW}
  1059. @uref{ftp://ftp.plig.org/pub/mysql/, FTP}
  1060. @c @item
  1061. @c lance@uklinux.net (Lance)
  1062. @c @image{Flags/great-britain} UK [uklinux.net] @
  1063. @c @uref{http://mirror.uklinux.net/mysql/, WWW}
  1064. @c @uref{ftp://mirror.uklinux.net/pub/mysql/, FTP}
  1065. @c @item
  1066. @c unknown
  1067. @c @image{Flags/great-britain} UK [MicroMuse] @
  1068. @c @uref{ftp://ftp.micromuse.co.uk/pub/packages/unix/databases/mysql/, FTP}
  1069. @c @item
  1070. @c Not ok 20000919; Old site (Matt)
  1071. @c lmjm@icparc.ic.ac.uk (Lee McLoughlin)
  1072. @c @image{Flags/great-britain} UK [SunSITE] @
  1073. @c @uref{http://sunsite.org.uk/packages/mysql/, WWW}
  1074. @c @uref{ftp://sunsite.org.uk/packages/mysql/, FTP}
  1075. @item
  1076. @c sander@paco.net (Alexander Ivanov)
  1077. @image{Flags/ukraine} Ukraine [PACO] @
  1078. @uref{http://mysql.paco.net.ua, WWW}
  1079. @uref{ftp://mysql.paco.net.ua/, FTP}
  1080. @item
  1081. @c mizi@alkar.net (Alexander Ryumshin)
  1082. @image{Flags/ukraine} Ukraine [ISP Alkar Teleport/Dnepropetrovsk] @
  1083. @uref{http://mysql.dp.ua/, WWW}
  1084. @end itemize
  1085. @strong{North America:}
  1086. @itemize @bullet
  1087. @c @item
  1088. @c Not ok 990101 (only to 981007)
  1089. @c EMAIL: sysop@polarcom.com (Seamus Venasse)
  1090. @c @image{Flags/canada} Canada [Polaris Computing] @
  1091. @c @uref{http://mysql.polaris.ca/, WWW}
  1092. @item
  1093. @c Ok 980109
  1094. @c EMAIL: wojtek@tryc.on.ca (Wojtjeck Tryc)
  1095. @image{Flags/canada} Canada [Tryc] @
  1096. @uref{http://web.tryc.on.ca/mysql/, WWW}
  1097. @c @item
  1098. @c not updated 990218. Added again 990918
  1099. @c Not ok 20000919; Non-existent (Matt)
  1100. @c EMAIL: rhooper@cyberus.ca (Roy Hooper)
  1101. @c @image{Flags/canada} Canada [Cyberus] @
  1102. @c @uref{http://mysql.cyberus.ca/, WWW}
  1103. @c @uref{ftp://mysql.cyberus.ca/, FTP}
  1104. @item
  1105. @c EMAIL: mleber@he.net (Mike Leber)
  1106. @c Added 980312
  1107. @image{Flags/usa} USA [Hurricane Electric/San Jose] @
  1108. @uref{http://mysql.he.net/, WWW}
  1109. @item
  1110. @c EMAIL: ask@valueclick.com (Ask Bjoern Hansen)
  1111. @c Added 20000925
  1112. @image{Flags/usa} USA [ValueClick, Los Angeles CA] @
  1113. @uref{http://mysql.valueclick.com/, WWW}
  1114. @uref{ftp://mysql.valueclick.com/mysql/, FTP}
  1115. @c @item
  1116. @c Not ok 20000919; Non-existent (Matt)
  1117. @c EMAIL: meltzer@icsnet.com (Jeffrey Meltzer)
  1118. @c Added 000108
  1119. @c @image{Flags/usa} USA [Meltzer/New York State] @
  1120. @c @uref{ftp://ftp.meltzer.org/pub/mysql/, FTP}
  1121. @c @item
  1122. @c No such directory 990830
  1123. @c EMAIL: tps@users.buoy.com (Tim Sailer)
  1124. @c @image{Flags/usa} USA [Buoy/New York] @
  1125. @c @uref{http://www.buoy.com/mysql/, WWW}
  1126. @c @item
  1127. @c EMAIL: db@hpnc.com (Douglas Bowyer)
  1128. @c Added 980107, removed 981124 because of 'file not found'
  1129. @c @image{Flags/usa} USA [Hypernet Communications/Dallas] @
  1130. @c @uref{http://epsilon.hpnc.com/mysql, WWW}
  1131. @c @item @c **********************************
  1132. @c Not updated 980106
  1133. @c EX: twh@iquest.net (Thomas Holt) who no longer works there
  1134. @c @image{Flags/usa} USA [IQuest/Indiana] @
  1135. @c @uref{http://mirrors.iquest.net/mysql/, WWW}
  1136. @c @item @c **********************************
  1137. @c Only a partial mirror so we exclude it from the list
  1138. @c EX: lindberg@id.wustl.edu (Fred Lindberg)
  1139. @c @image{Flags/usa} USA [Washington University/St. Louis] @
  1140. @c @uref{ftp://ftp.id.wustl.edu/pub/database/mysql/, FTP}
  1141. @c removed 991111 -> no answer
  1142. @c @item
  1143. @c EMAIL: andrew@netcasting.net (Andrew Sawyers)
  1144. @c @image{Flags/usa} USA [Netcasting/West Coast] @
  1145. @c @uref{ftp://ftp.netcasting.net/pub/mysql/, FTP}
  1146. @c @item
  1147. @c No mirror! 980809 David
  1148. @c EMAIL: savages@savages.com (Shaun Savage)
  1149. @c @image{Flags/usa} USA [Savages/Oregon] @
  1150. @c @uref{http://mysql.savages.com, WWW}
  1151. @item
  1152. @c EMAIL: tcobb@staff.circle.net (Troy Cobb)
  1153. @image{Flags/usa} USA [Circle Net/North Carolina] @
  1154. @uref{http://www.mysql.net, WWW}
  1155. @c @item
  1156. @c Not ok 20000919; Non-existent (Matt)
  1157. @c EMAIL: paul@gina.net (Paul Vining)
  1158. @c mirrors ftp.sunet.se
  1159. @c @image{Flags/usa} USA [Gina net/Florida] @
  1160. @c @uref{http://www.gina.net/mysql/, WWW}
  1161. @c Out of date 2000-01-08 (Not updated since 1999-10)
  1162. @c @item
  1163. @c EMAIL: wswanson@pingzero.net (Wylie Swanson)
  1164. @c mirrors mysql.org
  1165. @c @image{Flags/usa} USA [pingzero/Los Angeles] @
  1166. @c @uref{http://mysql.pingzero.net/, WWW}
  1167. @item
  1168. @c EMAIL: ftpkeeper@mirror.sit.wisc.edu
  1169. @image{Flags/usa} USA [Wisconsin University/Wisconsin] @
  1170. @uref{http://mirror.sit.wisc.edu/mysql/, WWW}
  1171. @uref{ftp://mirror.sit.wisc.edu/mirrors/mysql/, FTP}
  1172. @c @item
  1173. @c Not ok 20000919; Out of date (Matt)
  1174. @c EMAIL: ftp-admin@digex.net
  1175. @c @image{Flags/usa} USA [DIGEX] @
  1176. @c @uref{ftp://ftp.digex.net/pub/packages/database/mysql/, FTP}
  1177. @item
  1178. @c EMAIL: andrew.sawyers@thelinuxstore.com
  1179. @image{Flags/usa} USA [LinuxWired/Scottsdale, AZ] @
  1180. @uref{http://mysql.linuxwired.net/, WWW}
  1181. @uref{ftp://ftp.linuxwired.net/pub/mirrors/mysql/, FTP}
  1182. @item
  1183. @c EMAIL: dan@surfsouth.com (Dan Muntz)
  1184. @image{Flags/usa} USA [Venoma.Org/Valdosta, GA] @
  1185. @uref{http://mysql.venoma.org/, WWW}
  1186. @item
  1187. @c EMAIL: hkind@adgrafix.com (Hans Kind)
  1188. @image{Flags/usa} USA [adgrafix.com/Boston, MA] @
  1189. @uref{http://mysql.adgrafix.com/, WWW}
  1190. @end itemize
  1191. @strong{South America:}
  1192. @itemize @bullet
  1193. @item
  1194. @c Added 20001102
  1195. @c EMAIL: nico@bannerlandia.com (Nicolas Moldavsky)
  1196. @image{Flags/argentina} Argentina [bannerlandia.com] @
  1197. @uref{http://mysql.bannerlandia.com.ar/, WWW}
  1198. @uref{ftp://mysql.bannerlandia.com.ar/mirrors/mysql/, FTP}
  1199. @c @item
  1200. @c Not ok 20000919; Non-existent (Matt)
  1201. @c EMAIL: gaiser@matrix.com.br (Roberto Gaiser)
  1202. @c @image{Flags/brazil} Brazil [Matrix] @
  1203. @c @uref{http://mysql.matrix.com.br, WWW}
  1204. @item
  1205. @c jpabuyer@vision.cl
  1206. @image{Flags/chile} Chile [Vision] @
  1207. @uref{http://mysql.vision.cl/, WWW}
  1208. @item
  1209. @c EMAIL: bartschm@psi.com (Marcelo Bartsch)
  1210. @image{Flags/chile} Chile [PSINet] @
  1211. @uref{http://mysql.psinet.cl/, WWW}
  1212. @uref{ftp://ftp.psinet.cl/pub/database/mysql/, FTP}
  1213. @item
  1214. @c EMAIL: jpabuyer@tecnoera.com (Juan Pablo Abuyeres)
  1215. @image{Flags/chile} Chile [Tecnoera] @
  1216. @uref{http://mysql.tecnoera.com/, WWW}
  1217. @c @item
  1218. @c Removed 990730
  1219. @c @c EMAIL: dan@amerikanclaris.com (Danilo Lotina F.)
  1220. @c @image{Flags/chile} Chile [Amerikanclaris] @
  1221. @c @uref{http://www.labs.amerikanclaris.cl/mysql, WWW}
  1222. @c @uref{ftp://ftp.amerikanclaris.cl/pub/mysql, FTP}
  1223. @end itemize
  1224. @strong{Asia:}
  1225. @itemize @bullet
  1226. @item
  1227. @c EMAIL: mirnshi@263.net (Meng Lingbo)
  1228. @image{Flags/china} China [Freecode] @
  1229. @uref{http://www.freecode.net.cn/mirror/mysql/, WWW}
  1230. @item
  1231. @c EMAIL: yusun@atwell.co.jp (yu sun)
  1232. @image{Flags/china} China [linuxforum.net] @
  1233. @uref{http://www2.linuxforum.net/mirror/mysql/, WWW}
  1234. @item
  1235. @c EMAIL: Vincent_Fong@innovator.com.hk (Vincent Fong)
  1236. @image{Flags/china} China [ISL/Hong Kong] @
  1237. @uref{http://mysql.islnet.net, WWW}
  1238. @item
  1239. @c EMAIL: marquischan@hotmail.com (Marquis Chan)
  1240. @image{Flags/china} China [TraLand.com/Hong Kong] @
  1241. @uref{http://www.traland.com/mysql/, WWW}
  1242. @c @item
  1243. @c Not ok 20000919; Non-existent (Matt)
  1244. @c EMAIL: george@netfirm.net (Hongsheng Zhu)
  1245. @c @image{Flags/china} China [Netfirm] @
  1246. @c @uref{http://mysql.netfirm.net, WWW}
  1247. @c @item
  1248. @c Not ok 20000919; Old site (Matt)
  1249. @c EMAIL: ahmlhs@nmsvr.chosun.com (Ho-sun Lee)
  1250. @c @image{Flags/south-korea} South Korea [KREONet] @
  1251. @c @uref{http://linux.kreonet.re.kr/mysql/, WWW}
  1252. @item
  1253. @c EMAIL: jasper@webiiz.com (Kang, Tae-jin)
  1254. @image{Flags/south-korea} South Korea [Webiiz] @
  1255. @uref{http://mysql.webiiz.com/, WWW}
  1256. @item
  1257. @c EMAIL: hollywar@holywar.net (Oh Junseon)
  1258. @image{Flags/south-korea} South Korea [PanworldNet] @
  1259. @uref{http://mysql.holywar.net/, WWW}
  1260. @c @item
  1261. @c ftp -> remove old files
  1262. @c EX: ahmlhs@nmsvr.chosun.com (Ho-sun Lee)
  1263. @c @image{Flags/south-korea} South Korea [KREONet] @
  1264. @c @uref{ftp://linux.kreonet.re.kr/pub/tools/db/mysql/, FTP}
  1265. @item
  1266. @c Ok 980805
  1267. @c EMAIL: takeshi@SoftAgency.co.jp
  1268. @image{Flags/japan} Japan [Soft Agency] @
  1269. @uref{http://www.softagency.co.jp/MySQL, WWW}
  1270. @item
  1271. @c EMAIL: takafumi@u-aizu.ac.jp (Takafumi Hayashi)
  1272. @image{Flags/japan} Japan [u-aizu.ac.jp/Aizu] @
  1273. @uref{ftp://ftp.u-aizu.ac.jp/ftp/pub/dbms/mysql/mysql.com, FTP}
  1274. @c @item
  1275. @c Ok 980109 Removed 990730
  1276. @c EMAIL: satoshi@HappySize.co.jp (Satoshi TATSUOKA)
  1277. @c @image{Flags/japan} Japan [HappySize] @
  1278. @c @uref{http://www.happysize.co.jp/mysql/, WWW}
  1279. @c @uref{ftp://ftp.happysize.co.jp/pub/mysql/, FTP}
  1280. @c @item
  1281. @c Ok 981204
  1282. @c Not ok 20000919; Old site (Matt)
  1283. @c EMAIL: hiroyuki@nucba.ac.jp (hiroyuki kurimoto)
  1284. @c @image{Flags/japan} Japan [Nagoya Syouka University] @
  1285. @c @uref{http://mirror.nucba.ac.jp/mirror/mysql, WWW}
  1286. @c @uref{ftp://mirror.nucba.ac.jp/mirror/mysql, FTP}
  1287. @c @item
  1288. @c Removed 990308
  1289. @c EMAIL: terence@com5.net (Terence Chan)
  1290. @c @image{Flags/singapore} Singapore [Com5 Productions] @
  1291. @c @uref{http://mysql.com5.net, WWW}
  1292. @c @uref{ftp://ftp.com5.net/pub/mysql, FTP}
  1293. @item
  1294. @c EMAIL: csy@hjc.edu.sg
  1295. @image{Flags/singapore} Singapore [HJC] @
  1296. @uref{http://mysql.hjc.edu.sg, WWW}
  1297. @uref{ftp://ftp.hjc.edu.sg/mysql, FTP}
  1298. @c @item
  1299. @c Not ok 20000919; Old site (Matt)
  1300. @c 991118: Removed because a user complained about that the page contains
  1301. @c nothing about MySQL. 991119: Added again because it is a mirror again
  1302. @c EMAIL: dean@ht.net.tw (Dean Lin)
  1303. @c @image{Flags/taiwan} Taiwan [HT] @
  1304. @c @uref{http://mysql.ht.net.tw, WWW}
  1305. @item
  1306. @c EMAIL: linda@ttn.com.tw (Linda Hu)
  1307. @image{Flags/taiwan} Taiwan [TTN] @
  1308. @uref{http://mysql.ttn.net, WWW}
  1309. @c @item
  1310. @c Ok 980321 No connect -> removed 990730
  1311. @c EMAIL: tby@ccca.nctu.edu.tw (Bao-Yi Tuang)
  1312. @c @image{Flags/taiwan} Taiwan [NCTU] @
  1313. @c @uref{http://mysql.taconet.com.tw, WWW}
  1314. @c @item
  1315. @c Out of date 990905 (~2 months)
  1316. @c @item @c **********************************
  1317. @c Error 980106
  1318. @c EX: WolfySu@acer.net (Wolfy Su)
  1319. @c @image{Flags/taiwan} Taiwan [Acer] @
  1320. @c @uref{http://mysql.acer.net/, WWW}
  1321. @c @item @c **********************************
  1322. @c files to delete
  1323. @c EX: service@wownet.net
  1324. @c @image{Flags/taiwan} Taiwan [Wownet] @
  1325. @c @uref{ftp://ftp.wownet.net/mysql/, FTP}
  1326. @c @item @c **********************************
  1327. @c No conntact 980106
  1328. @c EX: serge@oneway.net
  1329. @c @image{Flags/taiwan} Taiwan [Oneway] @
  1330. @c @uref{ftp://ftp.oneway.com.tw/pub/mysql/, FTP}
  1331. @item
  1332. @c Added 20001031
  1333. @c EMAIL: ijliao@php.nctu.edu.tw (Ying-Chieh Liao)
  1334. @image{Flags/taiwan} Taiwan [nctu.edu/HsinChu] @
  1335. @uref{http://mysql.nctu.edu.tw/, WWW}
  1336. @end itemize
  1337. @strong{Australia:}
  1338. @itemize @bullet
  1339. @item
  1340. @c Added 980610
  1341. @c EMAIL: jason@dstc.edu.au (Jason Andrade)
  1342. @image{Flags/australia} Australia [AARNet/Queensland] @
  1343. @uref{http://mirror.aarnet.edu.au/mysql, WWW}
  1344. @uref{ftp://mirror.aarnet.edu.au/pub/mysql, FTP}
  1345. @c @item
  1346. @c Added 980805. Removed 000102 'no such directory'
  1347. @c EMAIL: sdd@ntccc.tas.gov.au (Scott Donovan)
  1348. @c @image{Flags/australia} Australia [Tas] @
  1349. @c @uref{http://ftp.tas.gov.au/mysql, WWW}
  1350. @c @uref{ftp://ftp.tas.gov.au/pub/mysql, FTP}
  1351. @c @item
  1352. @c Ok 980623
  1353. @c Not ok 20000919; Old site (Matt)
  1354. @c EMAIL: samh@bluep.com (Sam Hadzajlic)
  1355. @c @image{Flags/australia} Australia [Blue Planet/Melbourne] @
  1356. @c @uref{http://mysql.bluep.com/, WWW}
  1357. @c removed because ftp was not working 990729 & 30
  1358. @c @uref{ftp://mysql.bluep.com/pub/mirror1/mysql/, FTP}
  1359. @c @item
  1360. @c Added 990531
  1361. @c EMAIL: gavin@itworks.com.au (Gavin Cameron)
  1362. @c @image{Flags/australia} Australia [ITworks Consulting/Victoria] @
  1363. @c @uref{http://mysql.itworks.com.au, WWW}
  1364. @c @item
  1365. @c 980610 Only the toplevel dir!
  1366. @c EMAIL: lucifer@maths.uq.edu.au (David Conran)
  1367. @c @image{Flags/australia} Australia FTP @
  1368. @c @uref{ftp://ftp.sage-au.org.au/pub/database/mysql, [Sage]}
  1369. @end itemize
  1370. @strong{Africa:}
  1371. @itemize @bullet
  1372. @item
  1373. @c EMAIL: ftp-admin@mweb.com (Warren Baker)
  1374. @image{Flags/south-africa1} South-Africa [Mweb] @
  1375. @uref{http://www.mysql.mweb.co.za/, WWW}
  1376. @item
  1377. @c Ok 981010
  1378. @c EMAIL: oskar@is.co.za (Oskar Pearson)
  1379. @image{Flags/south-africa1} South Africa [The Internet Solution/Johannesburg] @
  1380. @uref{ftp://ftp.is.co.za/linux/mysql/, FTP}
  1381. @end itemize
  1382. @c END_OF_MIRROR_LISTING
  1383. @cindex operating systems, supported
  1384. @cindex native thread support
  1385. @cindex thread support
  1386. @cindex process support
  1387. @cindex support, for operating systems
  1388. @node Which OS, Which version, Getting MySQL, Installing
  1389. @section Operating Systems Supported by MySQL
  1390. We use GNU Autoconf, so it is possible to port @strong{MySQL} to all modern
  1391. systems with working Posix threads and a C++ compiler. (To compile only the
  1392. client code, a C++ compiler is required but not threads.)  We use and develop
  1393. the software ourselves primarily on Sun Solaris (Versions 2.5 - 2.7) and
  1394. RedHat Linux Version 6.x.
  1395. Note that for many operating systems, the native thread support works only
  1396. in the latest versions. @strong{MySQL} has been reported to compile
  1397. sucessfully on the following operating system/thread package combinations:
  1398. @itemize @bullet
  1399. @item
  1400. AIX 4.x with native threads. @xref{IBM-AIX}.
  1401. @item
  1402. BSDI 2.x with the included MIT-pthreads package. @xref{BSDI}.
  1403. @item
  1404. BSDI 3.0, 3.1 and 4.x with native threads. @xref{BSDI}.
  1405. @item
  1406. DEC Unix 4.x with native threads. @xref{Alpha-DEC-UNIX}.
  1407. @item
  1408. FreeBSD 2.x with the included MIT-pthreads package. @xref{FreeBSD}.
  1409. @item
  1410. FreeBSD 3.x and 4.x with native threads. @xref{FreeBSD}.
  1411. @item
  1412. HP-UX 10.20 with the included MIT-pthreads package. @xref{HP-UX 10.20}.
  1413. @item
  1414. HP-UX 11.x with the native threads. @xref{HP-UX 11.x}.
  1415. @item
  1416. Linux 2.0+ with LinuxThreads 0.7.1+ or @code{glibc} 2.0.7+ . @xref{Linux}.
  1417. @item
  1418. Mac OS X Server. @xref{Mac OS X}.
  1419. @item
  1420. NetBSD 1.3/1.4 Intel and NetBSD 1.3 Alpha (Requires GNU make). @xref{NetBSD}.
  1421. @item
  1422. OpenBSD > 2.5 with native therads. OpenBSD < 2.5 with the included
  1423. MIT-pthreads package. @xref{OpenBSD}.
  1424. @item
  1425. OS/2 Warp 3, FixPack 29 and OS/2 Warp 4, FixPack 4. @xref{OS/2}.
  1426. @item
  1427. SGI Irix 6.x with native threads. @xref{SGI-Irix}.
  1428. @item
  1429. Solaris 2.5 and above with native threads on SPARC and x86. @xref{Solaris}.
  1430. @item
  1431. SunOS 4.x with the included MIT-pthreads package. @xref{Solaris}.
  1432. @item
  1433. SCO OpenServer with a recent port of the FSU Pthreads package. @xref{SCO}.
  1434. @item
  1435. SCO UnixWare 7.0.1. @xref{SCO Unixware}.
  1436. @item
  1437. Tru64 Unix
  1438. @item
  1439. Win95, Win98, NT, and Win2000. @xref{Windows}.
  1440. @end itemize
  1441. @cindex MySQL binary distribution
  1442. @cindex MySQL source distribution
  1443. @cindex release numbers
  1444. @cindex version, choosing
  1445. @cindex choosing, a MySQL version
  1446. @node Which version, Many versions, Which OS, Installing
  1447. @section Which MySQL Version to Use
  1448. The first decision to make is whether you want to use the latest development
  1449. release or the last stable release:
  1450. @itemize @bullet
  1451. @item
  1452. Normally, if you are beginning to use @strong{MySQL} for the first time
  1453. or trying to port it to some system for which there is no binary
  1454. distribution, we recommend going with the development release (currently
  1455. Version @value{mysql_version}. This is because there are usually no really
  1456. serious bugs in the development release, and you can easily test it on
  1457. your machine with the @code{crash-me} and benchmark tests.
  1458. @xref{Benchmarks}.  Note that all @strong{MySQL} releases are
  1459. checked with the @strong{MySQL} benchmarks and an extensive test suite
  1460. before each release.
  1461. @item
  1462. Otherwise, if you are running an old system and want to upgrade, but
  1463. don't want to take chances with the development version, you should
  1464. upgrade to the latest in the same branch you are using (where only the
  1465. last version number is newer than yours).  We have tried to fix only
  1466. fatal bugs and make small, relatively safe changes to that version.
  1467. @end itemize
  1468. The second decision to make is whether you want to use a source
  1469. distribution or a binary distribution.  In most cases you should probably
  1470. use a binary distribution, if there exist one for your platform, as this
  1471. is generally, it will be easier to install than a source distribution.
  1472. In the following cases you will probably be better of with a source
  1473. installation:
  1474. @itemize @bullet
  1475. @item
  1476. If you want to install @strong{MySQL} at some explicit location. (The standard
  1477. binary distributions are 'ready to run' at any place, but you may want
  1478. to get even more flexibility).
  1479. @item
  1480. If you want to configure @code{mysqld} with some extra feature that is NOT in
  1481. the standard binary distributions. Here is a list of the most common
  1482. extra options that you may want to use
  1483. @itemize @bullet
  1484. @item --with-berkeley-db
  1485. @item --with-raid
  1486. @item --with-libwrap
  1487. @item --with-named-z-lib  (This is done for some of the binaries)
  1488. @item --with-debugging[=full]
  1489. @end itemize
  1490. @item
  1491. The default binary distribution is normally compiled with support
  1492. for all characters sets and should work on a variety of processors from
  1493. the same processor family.
  1494. If you want a faster @strong{MySQL} server you may want to recompile it
  1495. with support for only the character sets you need, use a better compiler
  1496. (like pgcc) or use compiler options that are better optimized for your
  1497. processor.
  1498. @item
  1499. If you have found a bug and reported it to the @strong{MySQL}
  1500. development team you will probably got a patch that you need to apply to
  1501. the source distribution to get the bug fixed.
  1502. @item
  1503. If you want to read (and/or modify) the C and C++ code that makes up
  1504. @strong{MySQL}, you should get a source distribution. The source code is
  1505. always the ultimate manual. Source distributions also contain more
  1506. tests and examples than binary distributions.
  1507. @end itemize
  1508. @cindex naming, releases of MySQL
  1509. @cindex releases, naming scheme
  1510. The @strong{MySQL} naming scheme uses release numbers that consist of three
  1511. numbers and a suffix.  For example, a release name like
  1512. @code{mysql-3.21.17-beta} is interpreted like this:
  1513. @itemize @bullet
  1514. @item
  1515. The first number (@code{3}) describes the file format.  All
  1516. Version 3 releases have the same file format. When a Version 4 appears, every
  1517. table will have to be converted to the new format (nice tools for this will
  1518. be included, of course.)
  1519. @item
  1520. The second number (@code{21}) is the release level. Normally there are two to
  1521. choose from. One is the release/stable branch (currently @code{22}) and the
  1522. other is the development branch (currently @code{23}) . Normally both are
  1523. stable, but the development version may have quirks, missing documentation on
  1524. new features, or may fail to compile on some systems.
  1525. @item
  1526. The third number (@code{17}) is the version number within the
  1527. release level. This is incremented for each new distribution. Usually you
  1528. want the latest version for the release level you have choosen.
  1529. @item
  1530. The suffix (@code{beta}) indicates the stability level of the release.
  1531. The possible suffixes are:
  1532. @itemize @minus
  1533. @item @code{alpha} indicates that the release contains some large section of
  1534. new code that hasn't been 100% tested.  Known bugs (usually there are none)
  1535. should be documented in the News section.  @xref{News}.  There are also new
  1536. commands and extensions in most alpha releases.  Active development that
  1537. may involve major code changes can occur on an alpha release, but everything
  1538. will be tested before doing a release.  There should be no known bugs in any
  1539. @strong{MySQL} release.
  1540. @item
  1541. @code{beta} means that all new code has been tested. No major new
  1542. features that could cause corruption on old code are added. There should
  1543. be no known bugs.  A version changes from alpha to beta when there
  1544. haven't been any reported fatal bugs within an alpha version for at least
  1545. a month and we don't plan to add any features that could make any old command
  1546. more unreliable.
  1547. @item
  1548. @code{gamma} is a beta that has been around a while and seems to work fine.
  1549. Only minor fixes are added. This is what many other companies call a release.
  1550. @item
  1551. If there is no suffix, it means that the version has been run for a
  1552. while at many different sites with no reports of bugs other than
  1553. platform-specific bugs.  Only critical bug fixes are applied to the
  1554. release. This is what we call a stable release.
  1555. @end itemize
  1556. @end itemize
  1557. All versions of @strong{MySQL} are run through our standard tests and
  1558. benchmarks to ensure that they are relatively safe to use.  Because the
  1559. standard tests are extended over time to check for all previously found bugs,
  1560. the test suite keeps getting better.
  1561. @cindex releases, testing
  1562. @cindex testing, of MySQL releases
  1563. Note that all releases have been tested at least with:
  1564. @table @asis
  1565. @item An internal test suite
  1566. This is part of a production system for a customer. It has many tables with
  1567. hundreds of megabytes of data.
  1568. @item The @strong{MySQL} benchmark suite
  1569. This runs a range of common queries. It is also a test to see whether the
  1570. latest batch of optimizations actually made the code faster.
  1571. @xref{Benchmarks}.
  1572. @item The @code{crash-me} test
  1573. This tries to determine what features the database supports and what its
  1574. capabilities and limitations are.
  1575. @xref{Benchmarks}.
  1576. @end table
  1577. Another test is that we use the newest @strong{MySQL} version in our internal
  1578. production environment, on at least one machine.  We have more than 100
  1579. gigabytes of data to work with.
  1580. @cindex releases, updating
  1581. @cindex updating, releases of MySQL
  1582. @node Many versions, Installation layouts, Which version, Installing
  1583. @section How and When Updates Are Released
  1584. @strong{MySQL} is evolving quite rapidly here at MySQL AB and we want
  1585. to share this with other @strong{MySQL} users. We try to make a release
  1586. when we have very useful features that others seem to have a need for.
  1587. We also try to help out users who request features that are easy to
  1588. implement. We take note of what our licensed users want to have, and
  1589. we especially take note of what our extended e-mail supported customers
  1590. want and try to help them out.
  1591. No one has to download a new release. The News section will tell you if
  1592. the new release has something you really want. @xref{News}.
  1593. We use the following policy when updating @strong{MySQL}:
  1594. @itemize @bullet
  1595. @item
  1596. For each minor update, the last number in the version string is incremented.
  1597. When there are major new features or minor incompatibilities with previous
  1598. versions, the second number in the version string is incremented. When the
  1599. file format changes, the first number is increased.
  1600. @item
  1601. Stable tested releases are meant to appear about 1-2 times a year, but
  1602. if small bugs are found, a release with only bug fixes will be released.
  1603. @item
  1604. Working releases are meant to appear about every 1-8 weeks.
  1605. @item
  1606. Binary distributions for some platforms will be made by us for major releases.
  1607. Other people may make binary distributions for other systems but probably
  1608. less frequently.
  1609. @item
  1610. We usually make patches available as soon as we have located and fixed
  1611. small bugs.
  1612. @item
  1613. For non-critical but annoying bugs, we will make patches available if they
  1614. are sent to us. Otherwise we will combine many of them into a larger
  1615. patch.
  1616. @item
  1617. If there is, by any chance, a fatal bug in a release we will make a new
  1618. release as soon as possible. We would like other companies to do this,
  1619. too.
  1620. @end itemize
  1621. The current stable release is Version 3.23; We have already moved active
  1622. development to Version 4.0. Bugs will still be fixed in the stable version.
  1623. We don't believe in a complete freeze, as this also leaves out bug fixes
  1624. and things that ``must be done.'' ``Somewhat frozen'' means that we may
  1625. add small things that ``almost surely will not affect anything that's
  1626. already working.''
  1627. @node Installation layouts, Installing binary, Many versions, Installing
  1628. @section Installation Layouts
  1629. @cindex installation layouts
  1630. @cindex layout of installation
  1631. @cindex directory structure, default
  1632. @cindex default installation location
  1633. This section describes the default layout of the directories created by
  1634. installing binary and source distributions.
  1635. A binary distribution is installed by unpacking it at the installation
  1636. location you choose (typically @file{/usr/local/mysql}) and creates the
  1637. following directories in that location:
  1638. @multitable @columnfractions .3 .7
  1639. @item @strong{Directory} @tab @strong{Contents of directory}
  1640. @item @file{bin}         @tab Client programs and the @code{mysqld} server
  1641. @item @file{data}        @tab Log files, databases
  1642. @item @file{include}     @tab Include (header) files
  1643. @item @file{lib}         @tab Libraries
  1644. @item @file{scripts}     @tab @code{mysql_install_db}
  1645. @item @file{share/mysql} @tab Error message files
  1646. @item @file{sql-bench}   @tab Benchmarks
  1647. @end multitable
  1648. A source distribution is installed after you configure and compile it.  By
  1649. default, the installation step installs files under @file{/usr/local}, in the
  1650. following subdirectories:
  1651. @multitable @columnfractions .3 .7
  1652. @item @strong{Directory} @tab @strong{Contents of directory}
  1653. @item @file{bin}         @tab Client programs and scripts
  1654. @item @file{include/mysql}  @tab Include (header) files
  1655. @item @file{info}  @tab Documentation in Info format
  1656. @item @file{lib/mysql}   @tab Libraries
  1657. @item @file{libexec}     @tab The @code{mysqld} server
  1658. @item @file{share/mysql} @tab Error message files
  1659. @item @file{sql-bench}   @tab Benchmarks and @code{crash-me} test
  1660. @item @file{var}         @tab Databases and log files
  1661. @end multitable
  1662. Within an installation directory, the layout of a source installation differs
  1663. from that of a binary installation in the following ways:
  1664. @itemize @bullet
  1665. @item
  1666. The @code{mysqld} server is installed in the @file{libexec}
  1667. directory rather than in the @file{bin} directory.
  1668. @item
  1669. The data directory is @file{var} rather than @file{data}.
  1670. @item
  1671. @code{mysql_install_db} is installed in the @file{/usr/local/bin} directory
  1672. rather than in @file{/usr/local/mysql/scripts}.
  1673. @item
  1674. The header file and library directories are @file{include/mysql} and
  1675. @file{lib/mysql} rather than @file{include} and @file{lib}.
  1676. @end itemize
  1677. You can create your own binary installation from a compiled source
  1678. distribution by executing the script @file{scripts/make_binary_distribution}.
  1679. @cindex installing, binary distribution
  1680. @cindex binary distributions, installing
  1681. @node Installing binary, Installing source, Installation layouts, Installing
  1682. @section Installing a MySQL Binary Distribution
  1683. @menu
  1684. * Linux-RPM::                   Linux RPM files
  1685. * Building clients::            Building client programs
  1686. * Binary install system issues::  System-specific issues
  1687. @end menu
  1688. You need the following tools to install a @strong{MySQL} binary distribution:
  1689. @itemize @bullet
  1690. @item
  1691. GNU @code{gunzip} to uncompress the distribution.
  1692. @item
  1693. A reasonable @code{tar} to unpack the distribution. GNU @code{tar} is
  1694. known to work. Sun @code{tar} is known to have problems.
  1695. @end itemize
  1696. @cindex RPM, defined
  1697. @cindex RedHat Package Manager
  1698. An alternative installation method under Linux is to use RPM (RedHat Package
  1699. Manager) distributions. @xref{Linux-RPM}.
  1700. @c texi2html fails to split chapters if I use strong for all of this.
  1701. If you run into problems, @strong{PLEASE ALWAYS USE} @code{mysqlbug} when
  1702. posting questions to @email{mysql@@lists.mysql.com}.  Even if the problem
  1703. isn't a bug, @code{mysqlbug} gathers system information that will help others
  1704. solve your problem.  By not using @code{mysqlbug}, you lessen the likelihood
  1705. of getting a solution to your problem!  You will find @code{mysqlbug} in the
  1706. @file{bin} directory after you unpack the distribution.  @xref{Bug reports}.
  1707. @cindex commands, for binary distribution
  1708. The basic commands you must execute to install and use a @strong{MySQL}
  1709. binary distribution are:
  1710. @example
  1711. shell> groupadd mysql
  1712. shell> useradd -g mysql mysql
  1713. shell> cd /usr/local
  1714. shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
  1715. shell> ln -s mysql-VERSION-OS mysql
  1716. shell> cd mysql
  1717. shell> scripts/mysql_install_db
  1718. shell> chown -R root  /usr/local/mysql
  1719. shell> chown -R mysql /usr/local/mysql/var
  1720. shell> chgrp -R mysql /usr/local/mysql
  1721. shell> chown -R root /usr/local/mysql/bin/
  1722. shell> bin/safe_mysqld --user=mysql &
  1723. @end example
  1724. @cindex adding, new users
  1725. @cindex new users, adding
  1726. @cindex users, adding
  1727. You can add new users using the @code{bin/mysql_setpermission} script if
  1728. you install the @code{DBI} and @code{Msql-Mysql-modules} Perl modules.
  1729. A more detailed description follows.
  1730. To install a binary distribution, follow the steps below, then proceed
  1731. to @ref{Post-installation}, for post-installation setup and testing:
  1732. @enumerate
  1733. @item
  1734. Pick the directory under which you want to unpack the distribution, and move
  1735. into it.  In the example below, we unpack the distribution under
  1736. @file{/usr/local} and create a directory @file{/usr/local/mysql} into which
  1737. @strong{MySQL} is installed.  (The following instructions therefore assume
  1738. you have permission to create files in @file{/usr/local}.  If that directory
  1739. is protected, you will need to perform the installation as @code{root}.)
  1740. @item
  1741. Obtain a distribution file from one of the sites listed in
  1742. @ref{Getting MySQL, , Getting @strong{MySQL}}.
  1743. @strong{MySQL} binary distributions are provided as compressed @code{tar}
  1744. archives and have names like @file{mysql-VERSION-OS.tar.gz}, where
  1745. @code{VERSION} is a number (for example, @code{3.21.15}), and @code{OS}
  1746. indicates the type of operating system for which the distribution is intended
  1747. (for example, @code{pc-linux-gnu-i586}).
  1748. @item
  1749. Add a user and group for @code{mysqld} to run as:
  1750. @example
  1751. shell> groupadd mysql
  1752. shell> useradd -g mysql mysql
  1753. @end example
  1754. These commands add the @code{mysql} group and the @code{mysql} user.  The
  1755. syntax for @code{useradd} and @code{groupadd} may differ slightly on different
  1756. Unixes.  They may also be called @code{adduser} and @code{addgroup}.  You may
  1757. wish to call the user and group something else instead of @code{mysql}.
  1758. @item
  1759. Change into the intended installation directory:
  1760. @example
  1761. shell> cd /usr/local
  1762. @end example
  1763. @item
  1764. Unpack the distribution and create the installation directory:
  1765. @example
  1766. shell> gunzip < /path/to/mysql-VERSION-OS.tar.gz | tar xvf -
  1767. shell> ln -s mysql-VERSION-OS mysql
  1768. @end example
  1769. The first command creates a directory named @file{mysql-VERSION-OS}.  The
  1770. second command makes a symbolic link to that directory.  This lets you refer
  1771. more easily to the installation directory as @file{/usr/local/mysql}.
  1772. @item
  1773. Change into the installation directory:
  1774. @example
  1775. shell> cd mysql
  1776. @end example
  1777. You will find several files and subdirectories in the @code{mysql} directory.
  1778. The most important for installation purposes are the @file{bin} and
  1779. @file{scripts} subdirectories.
  1780. @table @file
  1781. @item bin
  1782. @tindex PATH environment variable
  1783. @tindex Environment variable, PATH
  1784. This directory contains client programs and the server
  1785. You should add the full pathname of this directory to your
  1786. @code{PATH} environment variable so that your shell finds the @strong{MySQL}
  1787. programs properly. @xref{Environment variables}.
  1788. @item scripts
  1789. This directory contains the @code{mysql_install_db} script used to initialize
  1790. the server access permissions.
  1791. @end table
  1792. @item
  1793. If you would like to use @code{mysqlaccess} and have the @strong{MySQL}
  1794. distribution in some nonstandard place, you must change the location where
  1795. @code{mysqlaccess} expects to find the @code{mysql} client. Edit the
  1796. @file{bin/mysqlaccess} script at approximately line 18. Search for a line
  1797. that looks like this:
  1798. @example
  1799. $MYSQL     = '/usr/local/bin/mysql';    # path to mysql executable
  1800. @end example
  1801. Change the path to reflect the location where @code{mysql} actually is
  1802. stored on your system.  If you do not do this, you will get a @code{Broken
  1803. pipe} error when you run @code{mysqlaccess}.
  1804. @item
  1805. Create the @strong{MySQL} grant tables (necessary only if you haven't
  1806. installed @strong{MySQL} before):
  1807. @example
  1808. shell> scripts/mysql_install_db
  1809. @end example
  1810. Note that @strong{MySQL} versions older than Version 3.22.10 started the
  1811. @strong{MySQL} server when you run @code{mysql_install_db}.  This is no
  1812. longer true!
  1813. @item
  1814. Change ownership of binaries to @code{root} and ownership of the data 
  1815. directory to the user that you will run @code{mysqld} as:
  1816. @example
  1817. shell> chown -R root  /usr/local/mysql
  1818. shell> chown -R mysql /usr/local/mysql/var
  1819. shell> chgrp -R mysql /usr/local/mysql
  1820. @end example
  1821. The first command changes the @code{owner} attribute of the files to the
  1822. @code{root} user, the second one changes the @code{owner} attribute of the 
  1823. data directory to the @code{mysql} user, and the third one changes the
  1824. @code{group} attribute to the @code{mysql} group.
  1825. @item
  1826. If you want to install support for the Perl @code{DBI}/@code{DBD} interface,
  1827. see @ref{Perl support}.
  1828. @item
  1829. If you would like @strong{MySQL} to start automatically when you boot your
  1830. machine, you can copy @code{support-files/mysql.server} to the location where
  1831. your system has its startup files. More information can be found in the
  1832. @code{support-files/mysql.server} script itself and in @ref{Automatic
  1833. start}.
  1834. @end enumerate
  1835. After everything has been unpacked and installed, you should initialize
  1836. and test your distribution.
  1837. You can start the @strong{MySQL} server with the following command:
  1838. @example
  1839. shell> bin/safe_mysqld --user=mysql &
  1840. @end example
  1841. @xref{safe_mysqld}.
  1842. @xref{Post-installation}.
  1843. @cindex RPM file
  1844. @cindex RedHat Package Manager
  1845. @c This node name is special
  1846. @node Linux-RPM, Building clients, Installing binary, Installing binary
  1847. @subsection Linux RPM Notes
  1848. The recommended way to install @strong{MySQL} on Linux is by using an RPM
  1849. file. The @strong{MySQL} RPMs are currently being built on a RedHat Version
  1850. 6.2 system but should work on other versions of Linux that support @code{rpm}
  1851. and use @code{glibc}.
  1852. If you have problems with an RPM file, for example, if you receive the error
  1853. ``@code{Sorry, the host 'xxxx' could not be looked up}'', see
  1854. @ref{Binary notes-Linux}.
  1855. The RPM files you may want to use are:
  1856. @itemize @bullet
  1857. @item @code{MySQL-VERSION.i386.rpm}
  1858. The @strong{MySQL} server.  You will need this unless you only want to
  1859. connect to a @strong{MySQL} server running on another machine.
  1860. @item @code{MySQL-client-VERSION.i386.rpm}
  1861. The standard @strong{MySQL} client programs. You probably always want to
  1862. install this package.
  1863. @item @code{MySQL-bench-VERSION.i386.rpm}
  1864. Tests and benchmarks. Requires Perl and msql-mysql-modules RPMs.
  1865. @item @code{MySQL-devel-VERSION.i386.rpm}
  1866. Libraries and include files needed if you want to compile other
  1867. @strong{MySQL} clients, such as the Perl modules.
  1868. @item @code{MySQL-VERSION.src.rpm}
  1869. This contains the source code for all of the above packages. It can also
  1870. be used to try to build RPMs for other architectures (for example, Alpha
  1871. or SPARC).
  1872. @end itemize
  1873. To see all files in an RPM package, run:
  1874. @example
  1875. shell> rpm -qpl MySQL-VERSION.i386.rpm
  1876. @end example
  1877. To perform a standard minimal installation, run:
  1878. @example
  1879. shell> rpm -i MySQL-VERSION.i386.rpm MySQL-client-VERSION.i386.rpm
  1880. @end example
  1881. To install just the client package, run:
  1882. @example
  1883. shell> rpm -i MySQL-client-VERSION.i386.rpm
  1884. @end example
  1885. The RPM places data in @file{/var/lib/mysql}. The RPM also creates the
  1886. appropriate entries in @file{/etc/rc.d/} to start the server automatically
  1887. at boot time.  (This means that if you have performed a previous
  1888. installation, you may want to make a copy of your previously installed
  1889. @strong{MySQL} startup file if you made any changes to it, so you don't lose
  1890. your changes.)
  1891. After installing the RPM file(s), the @file{mysqld} daemon should be running
  1892. and you should now be able to start using @strong{MySQL}.
  1893. @xref{Post-installation}.
  1894. If something goes wrong, you can find more information in the binary
  1895. installation chapter. @xref{Installing binary}.
  1896. @cindex client programs, building
  1897. @cindex linking
  1898. @cindex building, client programs
  1899. @cindex programs, client
  1900. @node Building clients, Binary install system issues, Linux-RPM, Installing binary
  1901. @subsection Building Client Programs
  1902. If you compile @strong{MySQL} clients that you've written yourself or that
  1903. you obtain from a third party, they must be linked using the
  1904. @code{-lmysqlclient} option on the link command.  You may also need to
  1905. specify a @code{-L} option to tell the linker where to find the library.  For
  1906. example, if the library is installed in @file{/usr/local/mysql/lib}, use
  1907. @code{-L/usr/local/mysql/lib -lmysqlclient} on the link command.
  1908. For clients that use @strong{MySQL} header files, you may need to specify a
  1909. @code{-I} option when you compile them (for example,
  1910. @code{-I/usr/local/mysql/include}), so the compiler can find the header
  1911. files.
  1912. @node Binary install system issues,  , Building clients, Installing binary
  1913. @subsection System-specific Issues
  1914. @menu
  1915. * Binary notes-Linux::          Linux notes for binary distribution
  1916. * Binary notes-HP-UX::          HP-UX notes for binary distribution
  1917. @end menu
  1918. The following sections indicate some of the issues that have been observed
  1919. on particular systems when installing @strong{MySQL} from a binary
  1920. distribution.
  1921. @cindex binary distributions, on Linux
  1922. @cindex Linux, binary distribution
  1923. @node Binary notes-Linux, Binary notes-HP-UX, Binary install system issues, Binary install system issues
  1924. @subsubsection Linux Notes for Binary Distributions
  1925. @strong{MySQL} needs at least Linux Version 2.0.
  1926. The binary release is linked with @code{-static}, which means you do not
  1927. normally need to worry about which version of the system libraries you
  1928. have. You need not install LinuxThreads, either.  A program linked with
  1929. @code{-static} is slightly bigger than a dynamically linked program but
  1930. also slightly faster (3-5%).  One problem, however, is that you can't use
  1931. user-definable functions (UDFs) with a statically linked program.  If
  1932. you are going to write or use UDF functions (this is something only for
  1933. C or C++ programmers), you must compile @strong{MySQL} yourself, using
  1934. dynamic linking.
  1935. If you are using a @code{libc}-based system (instead of a @code{glibc2}
  1936. system), you will probably get some problems with hostname resolving and
  1937. getpwnam() with the binary release. (This is because @code{glibc}
  1938. unfortunately depends on some external libraries to resolve hostnames
  1939. and getpwent() , even when compiled with @code{-static}). In this case
  1940. you probably get the following error message when you run
  1941. @code{mysql_install_db}:
  1942. @example
  1943. Sorry, the host 'xxxx' could not be looked up
  1944. @end example
  1945. or the following error when you try to run mysqld with the @code{--user}
  1946. option:
  1947. @example
  1948. getpwnam: No such file or directory
  1949. @end example
  1950. You can solve this problem in one of the following ways:
  1951. @itemize @bullet
  1952. @item
  1953. Get a @strong{MySQL} source distribution (an RPM or the @code{tar.gz}
  1954. distribution) and install this instead.
  1955. @item
  1956. Execute @code{mysql_install_db --force}; This will not execute the
  1957. @code{resolveip} test in @code{mysql_install_db}.  The downside is that
  1958. you can't use host names in the grant tables; you must use IP numbers
  1959. instead (except for @code{localhost}).  If you are using an old @strong{MySQL}
  1960. release that doesn't support @code{--force}, you have to remove the
  1961. @code{resolveip} test in @code{mysql_install} with an editor.
  1962. @item
  1963. Start mysqld with @code{su} instead of using @code{--user}.
  1964. @end itemize
  1965. The Linux-Intel binary and RPM releases of @strong{MySQL} are configured
  1966. for the highest possible speed. We are always trying to use the fastest
  1967. stable compiler available.
  1968. @strong{MySQL} Perl support requires Version Perl 5.004_03 or newer.
  1969. On some Linux 2.2 versions, you may get the error @code{Resource
  1970. temporarily unavailable} when you do a lot of new connections to a
  1971. @code{mysqld} server over TCP/IP.
  1972. The problem is that Linux has a delay between when you close a TCP/IP
  1973. socket and until this is actually freed by the system.  As there is only
  1974. room for a finite number of TCP/IP slots, you will get the above error if
  1975. you try to do too many new TCP/IP connections during a small time, like
  1976. when you run the @strong{MySQL} @file{test-connect} benchmark over
  1977. TCP/IP.
  1978. We have mailed about this problem a couple of times to different Linux
  1979. mailing lists but have never been able to resolve this properly.
  1980. The only known 'fix' to this problem is to use persistent connections in
  1981. your clients or use sockets, if you are running the database server
  1982. and clients on the same machine.  We hope that the @code{Linux 2.4}
  1983. kernel will fix this problem in the future.
  1984. @cindex HP-UX, binary distribution
  1985. @cindex binary distributions, on HP-UX
  1986. @node Binary notes-HP-UX,  , Binary notes-Linux, Binary install system issues
  1987. @subsubsection HP-UX Notes for Binary Distributions
  1988. Some of the binary distributions of @strong{MySQL} for HP-UX is
  1989. distributed as an HP depot file and as a tar file.  To use the depot
  1990. file you must be running at least HP-UX 10.x to have access to HP's
  1991. software depot tools.
  1992. The HP version of @strong{MySQL} was compiled on an HP 9000/8xx server
  1993. under HP-UX 10.20, and uses MIT-pthreads. It is known to work
  1994. well under this configuration.
  1995. @strong{MySQL} Version 3.22.26 and newer can also be built with HP's native
  1996. thread package.
  1997. Other configurations that may work:
  1998. @itemize @bullet
  1999. @item
  2000. HP 9000/7xx running HP-UX 10.20+
  2001. @item
  2002. HP 9000/8xx running HP-UX 10.30
  2003. @end itemize
  2004. The following configurations almost definitely won't work:
  2005. @itemize @bullet
  2006. @item
  2007. HP 9000/7xx or 8xx running HP-UX 10.x where x < 2
  2008. @item
  2009. HP 9000/7xx or 8xx running HP-UX 9.x
  2010. @end itemize
  2011. To install the distribution, use one of the commands below, where
  2012. @code{/path/to/depot} is the full pathname of the depot file:
  2013. @itemize @bullet
  2014. @item
  2015. To install everything, including the server, client and development tools:
  2016. @example
  2017. shell> /usr/sbin/swinstall -s /path/to/depot mysql.full
  2018. @end example
  2019. @item
  2020. To install only the server:
  2021. @example
  2022. shell> /usr/sbin/swinstall -s /path/to/depot mysql.server
  2023. @end example
  2024. @item
  2025. To install only the client package:
  2026. @example
  2027. shell> /usr/sbin/swinstall -s /path/to/depot mysql.client
  2028. @end example
  2029. @item
  2030. To install only the development tools:
  2031. @example
  2032. shell> /usr/sbin/swinstall -s /path/to/depot mysql.developer
  2033. @end example
  2034. @end itemize
  2035. The depot places binaries and libraries in @file{/opt/mysql} and data in
  2036. @file{/var/opt/mysql}. The depot also creates the appropriate entries in
  2037. @file{/etc/init.d} and @file{/etc/rc2.d} to start the server automatically
  2038. at boot time. Obviously, this entails being @code{root} to install.
  2039. To install the HP-UX tar.gz distribution, you must have a copy of GNU
  2040. @code{tar}.
  2041. @cindex installing, source distribution
  2042. @cindex source distribution, installing
  2043. @cindex installation overview
  2044. @node Installing source, Installing source tree, Installing binary, Installing
  2045. @section Installing a MySQL Source Distribution
  2046. You need the following tools to build and install @strong{MySQL} from source:
  2047. @itemize @bullet
  2048. @item
  2049. GNU @code{gunzip} to uncompress the distribution.
  2050. @item
  2051. A reasonable @code{tar} to unpack the distribution. GNU @code{tar} is
  2052. known to work.  Sun @code{tar} is known to have problems.
  2053. @item
  2054. A working ANSI C++ compiler. @code{gcc} >= 2.8.1, @code{egcs} >=
  2055. 1.0.2, SGI C++, and SunPro C++ are some of the compilers that are known to
  2056. work.  @code{libg++} is not needed when using @code{gcc}.  @code{gcc}
  2057. 2.7.x has a bug that makes it impossible to compile some perfectly legal
  2058. C++ files, such as @file{sql/sql_base.cc}. If you only have @code{gcc} 2.7.x,
  2059. you must upgrade your @code{gcc} to be able to compile @strong{MySQL}.
  2060. @code{gcc} >= 2.95.2 is recommended when compiling @strong{MySQL}
  2061. Version 3.23.x.
  2062. @item
  2063. A good @code{make} program.  GNU @code{make} is always recommended and is
  2064. sometimes required.  If you have problems, we recommend trying GNU
  2065. @code{make} 3.75 or newer.
  2066. @end itemize
  2067. @c texi2html fails to split chapters if I use strong for all of this.
  2068. If you run into problems, @strong{PLEASE ALWAYS USE @code{mysqlbug}} when
  2069. posting questions to @email{mysql@@lists.mysql.com}.  Even if the problem
  2070. isn't a bug, @code{mysqlbug} gathers system information that will help others
  2071. solve your problem.  By not using @code{mysqlbug}, you lessen the likelihood
  2072. of getting a solution to your problem!  You will find @code{mysqlbug} in the
  2073. @file{scripts} directory after you unpack the distribution.  @xref{Bug
  2074. reports}.
  2075. @menu
  2076. * Quick install::               Quick installation overview
  2077. * Applying patches::            Applying patches
  2078. * configure options::           Typical @code{configure} options
  2079. @end menu
  2080. @node Quick install, Applying patches, Installing source, Installing source
  2081. @subsection Quick Installation Overview
  2082. The basic commands you must execute to install a @strong{MySQL} source
  2083. distribution are:
  2084. @example
  2085. shell> groupadd mysql
  2086. shell> useradd -g mysql mysql
  2087. shell> gunzip < mysql-VERSION.tar.gz | tar -xvf -
  2088. shell> cd mysql-VERSION
  2089. shell> ./configure --prefix=/usr/local/mysql
  2090. shell> make
  2091. shell> make install
  2092. shell> scripts/mysql_install_db
  2093. shell> chown -R root  /usr/local/mysql
  2094. shell> chown -R mysql /usr/local/mysql/var
  2095. shell> chgrp -R mysql /usr/local/mysql
  2096. shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
  2097. @end example
  2098. If you start from a source RPM, then do the following:
  2099. @example
  2100. shell> rpm --rebuild MySQL-VERSION.src.rpm
  2101. @end example
  2102. This will make a binary RPM that you can install.
  2103. You can add new users using the @code{bin/mysql_setpermission} script if
  2104. you install the @code{DBI} and @code{Msql-Mysql-modules} Perl modules.
  2105. A more detailed description follows.
  2106. To install a source distribution, follow the steps below, then proceed
  2107. to @ref{Post-installation}, for post-installation initialization and testing:
  2108. @enumerate
  2109. @item
  2110. Pick the directory under which you want to unpack the distribution, and move
  2111. into it.
  2112. @item
  2113. Obtain a distribution file from one of the sites listed in
  2114. @ref{Getting MySQL, , Getting @strong{MySQL}}.
  2115. @item
  2116. If you are interested in using Berkeley DB tables with MySQL, you
  2117. will need to obtain a patched version of the Berkeley DB source
  2118. code.  Please read the chapter on Berkeley DB tables before
  2119. proceeding. @xref{BDB}.
  2120. @strong{MySQL} source distributions are provided as compressed @code{tar}
  2121. archives and have names like @file{mysql-VERSION.tar.gz}, where
  2122. @code{VERSION} is a number like @value{mysql_version}.
  2123. @item
  2124. Add a user and group for @code{mysqld} to run as:
  2125. @example
  2126. shell> groupadd mysql
  2127. shell> useradd -g mysql mysql
  2128. @end example
  2129. These commands add the @code{mysql} group, and the @code{mysql} user.  The
  2130. syntax for @code{useradd} and @code{groupadd} may differ slightly on different
  2131. Unixes.  They may also be called @code{adduser} and @code{addgroup}.  You may
  2132. wish to call the user and group something else instead of @code{mysql}.
  2133. @item
  2134. Unpack the distribution into the current directory:
  2135. @example
  2136. shell> gunzip < /path/to/mysql-VERSION.tar.gz | tar xvf -
  2137. @end example
  2138. This command creates a directory named @file{mysql-VERSION}.
  2139. @item
  2140. Change into the top-level directory of the unpacked distribution:
  2141. @example
  2142. shell> cd mysql-VERSION
  2143. @end example
  2144. Note that currently you must configure and build @strong{MySQL} from
  2145. this top-level directory.  You can not build it in a different
  2146. directory.
  2147. @item
  2148. Configure the release and compile everything:
  2149. @example
  2150. shell> ./configure --prefix=/usr/local/mysql
  2151. shell> make
  2152. @end example
  2153. When you run @code{configure}, you might want to specify some options.
  2154. Run @code{./configure --help} for a list of options.
  2155. @ref{configure options, , @code{configure} options}, discusses some of the
  2156. more useful options.
  2157. If @code{configure} fails, and you are going to send mail to
  2158. @email{mysql@@lists.mysql.com} to ask for assistance, please include any
  2159. lines from @file{config.log} that you think can help solve the problem.  Also
  2160. include the last couple of lines of output from @code{configure} if
  2161. @code{configure} aborts. Post the bug report using the @code{mysqlbug}
  2162. script.  @xref{Bug reports}.
  2163. If the compile fails, see @ref{Compilation problems}, for help with
  2164. a number of common problems.
  2165. @item
  2166. Install everything:
  2167. @example
  2168. shell> make install
  2169. @end example
  2170. You might need to run this command as @code{root}.
  2171. @item
  2172. Create the @strong{MySQL} grant tables (necessary only if you haven't
  2173. installed @strong{MySQL} before):
  2174. @example
  2175. shell> scripts/mysql_install_db
  2176. @end example
  2177. Note that @strong{MySQL} versions older than Version 3.22.10 started the
  2178. @strong{MySQL} server when you run @code{mysql_install_db}.  This is no
  2179. longer true!
  2180. @item
  2181. Change ownership of binaries to @code{root} and ownership of the data 
  2182. directory to the user that you will run @code{mysqld} as:
  2183. @example
  2184. shell> chown -R root  /usr/local/mysql
  2185. shell> chown -R mysql /usr/local/mysql/var
  2186. shell> chgrp -R mysql /usr/local/mysql
  2187. @end example
  2188. The first command changes the @code{owner} attribute of the files to the
  2189. @code{root} user, the second one changes the @code{owner} attribute of the 
  2190. data directory to the @code{mysql} user, and the third one changes the
  2191. @code{group} attribute to the @code{mysql} group.
  2192. @item
  2193. If you want to install support for the Perl @code{DBI}/@code{DBD} interface,
  2194. see @ref{Perl support}.
  2195. @item
  2196. If you would like @strong{MySQL} to start automatically when you boot your
  2197. machine, you can copy @code{support-files/mysql.server} to the location where
  2198. your system has its startup files. More information can be found in the
  2199. @code{support-files/mysql.server} script itself and in @ref{Automatic
  2200. start}.
  2201. @end enumerate
  2202. After everything has been installed, you should initialize and test your
  2203. distribution:
  2204. @example
  2205. shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
  2206. @end example
  2207. If that command fails immediately with @code{mysqld daemon ended} then you can
  2208. find some information in the file
  2209. @file{mysql-data-directory/'hostname'.err}.  The likely reason is that
  2210. you already have another @code{mysqld} server running.  @xref{Multiple
  2211. servers}.
  2212. @xref{Post-installation}.
  2213. @cindex patches, applying
  2214. @cindex applying, patches
  2215. @node Applying patches, configure options, Quick install, Installing source
  2216. @subsection Applying Patches
  2217. Sometimes patches appear on the mailing list or are placed in the
  2218. @uref{http://www.mysql.com/Downloads/Patches, patches area} of the
  2219. @strong{MySQL} Web site.
  2220. To apply a patch from the mailing list, save the message in which the patch
  2221. appears in a file, change into the top-level directory of your @strong{MySQL}
  2222. source tree, and run these commands:
  2223. @example
  2224. shell> patch -p1 < patch-file-name
  2225. shell> rm config.cache
  2226. shell> make clean
  2227. @end example
  2228. Patches from the FTP site are distributed as plain text files or as files
  2229. compressed with @code{gzip}.  Apply a plain patch as shown above for
  2230. mailing list patches.  To apply a compressed patch, change into the
  2231. top-level directory of your @strong{MySQL} source tree and run these
  2232. commands:
  2233. @example
  2234. shell> gunzip < patch-file-name.gz | patch -p1
  2235. shell> rm config.cache
  2236. shell> make clean
  2237. @end example
  2238. After applying a patch, follow the instructions for a normal source install,
  2239. beginning with the @code{./configure} step.  After running the @code{make
  2240. install} step, restart your @strong{MySQL} server.
  2241. You may need to bring down any currently running server before you run
  2242. @code{make install}.  (Use @code{mysqladmin shutdown} to do this.)  Some
  2243. systems do not allow you to install a new version of a program if it replaces
  2244. the version that is currently executing.
  2245. @cindex @code{configure} script
  2246. @cindex options, configure
  2247. @cindex configuration options
  2248. @findex without-server option
  2249. @cindex log files
  2250. @cindex files, log
  2251. @node configure options,  , Applying patches, Installing source
  2252. @subsection Typical @code{configure} Options
  2253. The @code{configure} script gives you a great deal of control over how
  2254. you configure your @strong{MySQL} distribution.  Typically you do this
  2255. using options on the @code{configure} command line.  You can also affect
  2256. @code{configure} using certain environment variables.  @xref{Environment
  2257. variables}. For a list of options supported by @code{configure}, run
  2258. this command:
  2259. @example
  2260. shell> ./configure --help
  2261. @end example
  2262. Some of the more commonly-used @code{configure} options are described below:
  2263. @itemize @bullet
  2264. @item
  2265. To compile just the @strong{MySQL} client libraries and client programs and
  2266. not the server, use the @code{--without-server} option:
  2267. @example
  2268. shell> ./configure --without-server
  2269. @end example
  2270. @c FIX incorrect..
  2271. If you don't have a C++ compiler, @code{mysql} will not compile (it is the
  2272. one client program that requires C++).  In this case,
  2273. you can remove the code in @code{configure} that tests for the C++ compiler
  2274. and then run @code{./configure} with the @code{--without-server} option. The
  2275. compile step will still try to build @code{mysql}, but you can ignore any
  2276. warnings about @file{mysql.cc}.  (If @code{make} stops, try @code{make -k}
  2277. to tell it to continue with the rest of the build even if errors occur.)
  2278. @item
  2279. If you don't want your log files and database directories located under
  2280. @file{/usr/local/var}, use a @code{configure} command, something like one
  2281. of these:
  2282. @example
  2283. shell> ./configure --prefix=/usr/local/mysql
  2284. shell> ./configure --prefix=/usr/local 
  2285.            --localstatedir=/usr/local/mysql/data
  2286. @end example
  2287. The first command changes the installation prefix so that everything is
  2288. installed under @file{/usr/local/mysql} rather than the default of
  2289. @file{/usr/local}.  The second command preserves the default installation
  2290. prefix, but overrides the default location for database directories
  2291. (normally @file{/usr/local/var}) and changes it to
  2292. @code{/usr/local/mysql/data}.
  2293. @item
  2294. If you are using Unix and you want the @strong{MySQL} socket located somewhere
  2295. other than the default location (normally in the directory @file{/tmp} or
  2296. @file{/var/run}) use a @code{configure} command like this:
  2297. @example
  2298. shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
  2299. @end example
  2300. Note that the given file must be an absolute pathname!
  2301. @cindex socket location
  2302. @item
  2303. If you want to compile statically linked programs (for example, to make a
  2304. binary distribution, to get more speed, or to work around problems with some
  2305. RedHat distributions), run @code{configure} like this:
  2306. @example
  2307. shell> ./configure --with-client-ldflags=-all-static 
  2308.            --with-mysqld-ldflags=-all-static
  2309. @end example
  2310. @cindex statistically-linked programs
  2311. @item
  2312. If you are using @code{gcc} and don't have @code{libg++} or @code{libstdc++}
  2313. installed, you can tell @code{configure} to use @code{gcc} as your C++
  2314. compiler:
  2315. @tindex CC environment variable
  2316. @tindex Environment variable, CC
  2317. @tindex CXX environment variable
  2318. @tindex Environment variable, CXX
  2319. @example
  2320. shell> CC=gcc CXX=gcc ./configure
  2321. @end example
  2322. @cindex gcc
  2323. @cindex C++ complier, gcc
  2324. @cindex compiler, C++ gcc
  2325. When you use @code{gcc} as your C++ compiler, it will not attempt to link in
  2326. @code{libg++} or @code{libstdc++}.
  2327. Here is some common environment variables to set depending on
  2328. the compiler you are using:
  2329. @tindex CXXFLAGS environment variable
  2330. @tindex Environment variable, CXXFLAGS
  2331. @multitable @columnfractions .20 .80
  2332. @item gcc 2.7.2.1 @tab
  2333. CC=gcc CXX=gcc CXXFLAGS="-O6 -felide-constructors"
  2334. @item egcs 1.0.3a @tab
  2335. CC=gcc CXX=gcc CXXFLAGS="-O6 -felide-constructors -fno-exceptions -fno-rtti"
  2336. @item gcc 2.95.2 @tab
  2337. CFLAGS="-O6 -mpentiumpro" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti"
  2338. @item pgcc 2.90.29 or newer @tab
  2339. CFLAGS="-O6 -mpentiumpro -mstack-align-double" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti"
  2340. @end multitable
  2341. In most cases you can get a resonable optimal @strong{MySQL} binary
  2342. picking the options from the above and add the following options to the
  2343. configure line: 
  2344. @example
  2345. --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static
  2346. @end example
  2347. The full configure line would in other words be something like the
  2348. following for all recent gcc versions:
  2349. @example
  2350. 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
  2351. @end example
  2352. The binaries we provide at on the MySQL home site
  2353. @uref{http://www.mysql.com}, are all compiled with full optimization and
  2354. should be ok for most users.  @xref{MySQL binaries}. There is some
  2355. things one can tweak to make an even faster binary, but this is only for
  2356. advanced users.  @xref{Compile and link options}.
  2357. If the build fails and produces errors about your compiler or linker not
  2358. being able to create the shared library @file{libmysqlclient.so.#} (@samp{#}
  2359. is a version number), you can work around this problem by giving the
  2360. @code{--disable-shared} option to @code{configure}.  In this case,
  2361. @code{configure} will not build a shared @code{libmysqlclient.so.#} library.
  2362. @item
  2363. You can configure @strong{MySQL} not to use @code{DEFAULT} column values for
  2364. non-@code{NULL} columns (that is, columns that are not allowed to be
  2365. @code{NULL}).  This causes @code{INSERT} statements to generate an error
  2366. unless you explicitly specify values for all columns that require a
  2367. non-@code{NULL} value.  To suppress use of default values, run
  2368. @code{configure} like this:
  2369. @tindex CXXFLAGS environment variable
  2370. @tindex Environment variable, CXXFLAGS
  2371. @example
  2372. shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
  2373. @end example
  2374. @cindex default values, suppression
  2375. @cindex suppression, default values
  2376. @item
  2377. By default, @strong{MySQL} uses the ISO-8859-1 (Latin1) character set. To
  2378. change the default set, use the @code{--with-charset} option:
  2379. @example
  2380. shell> ./configure --with-charset=CHARSET
  2381. @end example
  2382. @code{CHARSET} may be one of @code{big5}, @code{cp1251}, @code{cp1257},
  2383. @code{czech}, @code{danish}, @code{dec8}, @code{dos}, @code{euc_kr},
  2384. @code{gb2312}, @code{gbk}, @code{german1}, @code{hebrew}, @code{hp8},
  2385. @code{hungarian}, @code{koi8_ru}, @code{koi8_ukr}, @code{latin1},
  2386. @code{latin2}, @code{sjis}, @code{swe7}, @code{tis620}, @code{ujis},
  2387. @code{usa7}, or @code{win1251ukr}.
  2388. @xref{Character sets}.
  2389. @cindex character sets
  2390. @findex CHARSET
  2391. If you want to convert characters between the server and the client,
  2392. you should take a look at the @code{SET OPTION CHARACTER SET} command.
  2393. @xref{SET OPTION, , @code{SET OPTION}}.
  2394. @cindex @code{myisamchk}
  2395. @strong{Warning:} If you change character sets after having created any
  2396. tables, you will have to run @code{myisamchk -r -q} on every table. Your
  2397. indexes may be sorted incorrectly otherwise.  (This can happen if you
  2398. install @strong{MySQL}, create some tables, then reconfigure
  2399. @strong{MySQL} to use a different character set and reinstall it.)
  2400. @item
  2401. To configure
  2402. @strong{MySQL} with debugging code, use the @code{--with-debug} option:
  2403. @example
  2404. shell> ./configure --with-debug
  2405. @end example
  2406. This causes a safe memory allocator to be included that can find some errors
  2407. and that provides output about what is happening.
  2408. @xref{Debugging server}.
  2409. @item
  2410. If your client programs are using threads, you need to also compile a
  2411. thread-safe version of the @strong{MySQL} client library with the
  2412. @code{--with-thread-safe-client} configure options. This will create a
  2413. @code{libmysqlclient_r} library with which you should link your threaded
  2414. applications. @xref{Thread-safe clients}.
  2415. @item
  2416. Options that pertain to particular systems can be found in the
  2417. system-specific sections later in this chapter.
  2418. @xref{Source install system issues}.
  2419. @end itemize
  2420. @node Installing source tree, Compilation problems, Installing source, Installing
  2421. @section Installing from development source tree
  2422. @strong{CAUTION:} You should only read this section if you are
  2423. interested in helping us test our new code. If you just want to get
  2424. @strong{MySQL} up and running on your system, you should use either
  2425. source or binary distribution.
  2426. Below are the instructions to obtain our most recent development
  2427. source tree:
  2428. @itemize
  2429. @item
  2430. Download @strong{BitKeeper} from
  2431. @uref{http://www.bitmover.com/cgi-bin/download.cgi}.  You will need
  2432. @strong{Bitkeeper} 2.0 or newer to access our repository.
  2433. @item
  2434. Follow the instructions to install it.
  2435. @item
  2436. Once @strong{BitKeeper} is installed, if you want to clone 3.23 branch,
  2437. @code{bk clone bk://work.mysql.com:7000 mysql}, and
  2438. @code{bk clone bk://work.mysql.com:7001 mysql-4.0} for 4.0 branch
  2439. The initial download may take a while, depending on the speed of your
  2440. connection.
  2441. @item
  2442. You will need GNU autoconf/automake, libtool, and m4 to do the next stage.
  2443. If you get some strange error during the first stage, check that you really
  2444. have libtool installed!
  2445. @example
  2446. cd mysql
  2447. bk -r edit
  2448. aclocal; autoheader; autoconf;  automake;
  2449. ./configure  # Add your favorite options here
  2450. make
  2451. @end example
  2452. We have a collection of our standard configure scripts in the
  2453. @code{BUILD/} subdirectory - if you are lazy, you can do
  2454. @code{BUILD/compile-pentium-debug} . It will actually work on a lot of
  2455. non-x86 machines despite its name.
  2456. @item
  2457. Once the build is done, @code{make install}. Be careful with this on
  2458. a production machine - this may overwrite your live release binary. We
  2459. recommend that if you have another installation of @strong{MySQL} that
  2460. you @code{./configure} with different values for @code{prefix},
  2461. @code{tcp-port}, and @code{unix-socket-path}.
  2462. @item
  2463. Play hard with your new installation and try to make the new features
  2464. crash. Start by running @code{make test}. @xref{MySQL test suite}.
  2465. @item
  2466. If you have gotten to the @code{make} stage and it does not compile,
  2467. please report it to @email{bugs@@lists.mysql.com}. If you have
  2468. installed the update version of the required GNU tools, and they crash
  2469. trying to process our configuration files, please report it also. However,
  2470. if you execute @code{aclocal} and get @code{command not found}, or a
  2471. similar problem, do not report it - make sure all the needed tools are
  2472. installed and your @code{PATH} variable is set correctly.
  2473. @item
  2474. After the initial @code{bk clone}, do @code{bk pull} to get the updates. If
  2475. you are using the most recent beta version of BitKeeper, you should use
  2476. @code{bk opull} instead.
  2477. @item
  2478. You can examine change history of the tree with all the diffs with
  2479. @code{bk sccstool}. If you see some funny diffs or code that you have a
  2480. question about, do not hesitate and e-mail
  2481. @email{internals@@lists.mysql.com}. Also if you think you have a
  2482. better idea on how to do something, send an email to the same place
  2483. with a patch - @code{bk diffs} will produce a patch for you after you
  2484. have made changes to the source. If you do not have the time to code
  2485. your idea, just send a description.
  2486. @item
  2487. @strong{BitKeeper} has a nice help utility - @code{bk helptool}.
  2488. @end itemize
  2489. @cindex compiling, problems
  2490. @cindex problems, compiling
  2491. @cindex reconfiguring
  2492. @cindex @code{config.cache} file
  2493. @cindex files, @code{config.cache}
  2494. @node Compilation problems, MIT-pthreads, Installing source tree, Installing
  2495. @section Problems Compiling?
  2496. All @strong{MySQL} programs compile cleanly for us with no warnings on
  2497. Solaris using @code{gcc}. On other systems, warnings may occur due to
  2498. differences in system include files. See @ref{MIT-pthreads}, for warnings
  2499. that may occur when using MIT-pthreads.  For other problems, check the list
  2500. below.
  2501. The solution to many problems involves reconfiguring.  If you do need to
  2502. reconfigure, take note of the following:
  2503. @cindex running @code{configure} after prior invocation
  2504. @cindex @code{configure}, running after prior invocation
  2505. @itemize @bullet
  2506. @item
  2507. If @code{configure} is run after it already has been run, it may use
  2508. information that was gathered during its previous invocation.  This
  2509. information is stored in @file{config.cache}.  When @code{configure} starts
  2510. up, it looks for that file and reads its contents if it exists, on the
  2511. assumption that the information is still correct.  That assumption is invalid
  2512. when you reconfigure.
  2513. @item
  2514. Each time you run @code{configure}, you must run @code{make} again
  2515. to recompile.  However, you may want to remove old object files from previous
  2516. builds first, because they were compiled using different configuration options.
  2517. @end itemize
  2518. To prevent old configuration information or object files from being used,
  2519. run these commands before rerunning @code{configure}:
  2520. @example
  2521. shell> rm config.cache
  2522. shell> make clean
  2523. @end example
  2524. Alternatively, you can run @code{make distclean}.
  2525. The list below describes some of the problems compiling @strong{MySQL}
  2526. that have been found to occur most often:
  2527. @itemize @bullet
  2528. @item
  2529. @cindex @code{cc1plus} problems
  2530. @cindex @code{fatal signal 11}
  2531. @cindex @code{sql_yacc.cc} problems
  2532. @cindex internal compiler errors
  2533. @cindex virtual memory, problems while compiling
  2534. If you get errors when compiling @file{sql_yacc.cc}, such as the ones shown
  2535. below, you have probably run out of memory or swap space:
  2536. @example
  2537. Internal compiler error: program cc1plus got fatal signal 11
  2538.   or
  2539. Out of virtual memory
  2540.   or
  2541. Virtual memory exhausted
  2542. @end example
  2543. The problem is that @code{gcc} requires huge amounts of memory to compile
  2544. @file{sql_yacc.cc} with inline functions.  Try running @code{configure} with
  2545. the @code{--with-low-memory} option:
  2546. @example
  2547. shell> ./configure --with-low-memory
  2548. @end example
  2549. This option causes @code{-fno-inline} to be added to the compile line if you
  2550. are using @code{gcc} and @code{-O0} if you are using something else.  You
  2551. should try the @code{--with-low-memory} option even if you have so much
  2552. memory and swap space that you think you can't possibly have run out.  This
  2553. problem has been observed to occur even on systems with generous hardware
  2554. configurations, and the @code{--with-low-memory} option usually fixes it.
  2555. @item
  2556. By default, @code{configure} picks @code{c++} as the compiler name and
  2557. GNU @code{c++} links with @code{-lg++}.  If you are using @code{gcc},
  2558. that behavior can cause problems during configuration such as this:
  2559. @cindex C++ compiler cannot create executables
  2560. @example
  2561. configure: error: installation or configuration problem:
  2562. C++ compiler cannot create executables.
  2563. @end example
  2564. @tindex CXX environment variable
  2565. @tindex Environment variable, CXX
  2566. You might also observe problems during compilation related to
  2567. @code{g++}, @code{libg++}, or @code{libstdc++}.
  2568. One cause of these problems is that you may not have @code{g++}, or you may
  2569. have @code{g++} but not @code{libg++}, or @code{libstdc++}.  Take a look at
  2570. the @file{config.log} file.  It should contain the exact reason why your c++
  2571. compiler didn't work!  To work around these problems, you can use @code{gcc}
  2572. as your C++ compiler.  Try setting the environment variable @code{CXX} to
  2573. @code{"gcc -O3"}.  For example:
  2574. @tindex CXX environment variable
  2575. @tindex Environment variables, CXX
  2576. @example
  2577. shell> CXX="gcc -O3" ./configure
  2578. @end example
  2579. This works because @code{gcc} compiles C++ sources as well as @code{g++}
  2580. does, but does not link in @code{libg++} or @code{libstdc++} by default.
  2581. Another way to fix these problems, of course, is to install @code{g++},
  2582. @code{libg++} and @code{libstdc++}.
  2583. @item
  2584. If your compile fails with errors, such as any of the following,
  2585. you must upgrade your version of @code{make} to GNU @code{make}:
  2586. @example
  2587. making all in mit-pthreads
  2588. make: Fatal error in reader: Makefile, line 18:
  2589. Badly formed macro assignment
  2590.   or
  2591. make: file `Makefile' line 18: Must be a separator (:
  2592.   or
  2593. pthread.h: No such file or directory
  2594. @end example
  2595. @cindex Solaris troubleshooting
  2596. @cindex FreeBSD troubleshooting
  2597. @cindex troubleshooting, Solaris
  2598. @cindex troubleshooting, FreeBSD
  2599. Solaris and FreeBSD are known to have troublesome @code{make} programs.