<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML ><HEAD ><TITLE > Connecting MMBase to MySQL using MySQL Connector/J </TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE=" MMBase Installation HOWTO " HREF="index.html"><LINK REL="PREVIOUS" TITLE="Installing MMBase" HREF="x502.html"><LINK REL="NEXT" TITLE=" Installing MMBase additional applications " HREF="x634.html"></HEAD ><BODY CLASS="sect1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" ><SPAN CLASS="application" >MMBase</SPAN > Installation HOWTO</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="x502.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="x634.html" ACCESSKEY="N" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="sect1" ><H1 CLASS="sect1" ><A NAME="AEN572" ></A >8. Connecting <SPAN CLASS="application" >MMBase</SPAN > to <SPAN CLASS="application" >MySQL</SPAN > using <SPAN CLASS="systemitem" >MySQL Connector/J</SPAN ></H1 ><P > We can connect <SPAN CLASS="application" >MMBase</SPAN > to our <SPAN CLASS="application" >MySQL</SPAN > database server using <SPAN CLASS="systemitem" >MySQL Connector/J</SPAN >. This <SPAN CLASS="acronym" >JDBC</SPAN > driver for <SPAN CLASS="application" >MySQL</SPAN > can be downloaded from: <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="screen" > <A HREF="http://www.mysql.com/downloads/api-jdbc.html" TARGET="_top" >http://www.mysql.com/downloads/api-jdbc.html</A > </PRE ></FONT ></TD ></TR ></TABLE > </P ><P > Copy the <SPAN CLASS="acronym" >JDBC</SPAN > driver to the <SPAN CLASS="application" >MMBase</SPAN > <TT CLASS="filename" >lib/</TT > directory: <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="programlisting" > cp mysql-connector-java-xxx-bin.jar /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/ chown tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/mysql-connector-java-xxx-bin.jar chmod 664 /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/lib/mysql-connector-java-xxx-bin.jar </PRE ></FONT ></TD ></TR ></TABLE > </P ><P > Make this your <SPAN CLASS="acronym" >JDBC</SPAN > driver for <SPAN CLASS="application" >MMBase</SPAN > by editing <TT CLASS="filename" >/usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/jdbc.xml</TT >. Substitute the database name (<TT CLASS="replaceable" ><I >mmbase</I ></TT >), user (<TT CLASS="replaceable" ><I >mmuser</I ></TT >) and password (<TT CLASS="replaceable" ><I >mmpass</I ></TT >) with the database settings you'd like <SPAN CLASS="application" >MMBase</SPAN > to use. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="programlisting" > <property name="url">jdbc:mysql://$HOST:$PORT/$DBM</property> <property name="user">mmuser</property> <property name="password">mmpass</property> <property name="supportclass">org.mmbase.module.database.DatabaseSupportShim</property> <property name="database">mmbase</property> <property name="connections">20</property> <property name="host">localhost</property> <property name="driver">com.mysql.jdbc.Driver</property> <property name="port">3306</property> <property name="querys">256</property> <property name="probetime">30</property> </PRE ></FONT ></TD ></TR ></TABLE > </P ><P > Set the ownership and access rights of this configuration file. Since it contains your database name, user name and password, make sure other users can not read this file. <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="programlisting" > chown tomcat:tomcat /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/jdbc.xml chmod 640 /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/jdbc.xml </PRE ></FONT ></TD ></TR ></TABLE > </P ><P > Now create the <SPAN CLASS="application" >MySQL</SPAN > database you've just defined for <SPAN CLASS="application" >MMBase</SPAN >: <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="programlisting" > mysql -u root -p </PRE ></FONT ></TD ></TR ></TABLE > </P ><P > <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="programlisting" > CREATE DATABASE <mmbase>; USE <mmbase>; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON <mmbase>.* TO <mmuser>@'%' IDENTIFIED BY '<password>'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON <mmbase>.* TO <mmuser>@localhost IDENTIFIED BY '<password>'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON <mmbase>.* TO <mmuser>@localhost.<domainname> IDENTIFIED BY '<password>'; # RH bug fix GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON <mmbase>.* TO <mmuser>@<hostname> IDENTIFIED BY '<password>'; flush privileges; exit; </PRE ></FONT ></TD ></TR ></TABLE > </P ><P > Substitute the hostname (<TT CLASS="replaceable" ><I ><hostname></I ></TT >) and domain name (<TT CLASS="replaceable" ><I ><domainname></I ></TT >) with your own hostname and domain name, and the database name (<TT CLASS="replaceable" ><I ><mmbase></I ></TT >), user (<TT CLASS="replaceable" ><I ><mmuser></I ></TT >) and password (<TT CLASS="replaceable" ><I ><password></I ></TT >) with the values you just entered in the JDBC driver configuration file. </P ><P > <DIV CLASS="tip" ><P ></P ><TABLE CLASS="tip" WIDTH="100%" BORDER="0" ><TR ><TD WIDTH="25" ALIGN="CENTER" VALIGN="TOP" ><IMG SRC="../images/tip.gif" HSPACE="5" ALT="Tip"></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > To quickly empty your <SPAN CLASS="application" >MySQL</SPAN > database, i.e. after you've updated your <SPAN CLASS="application" >MMBase</SPAN > configuration or application (replace the database name <TT CLASS="replaceable" ><I ><mmbase></I ></TT > with your own): <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="programlisting" > mysqladmin -u root -p drop <mmbase> mysqladmin -u root -p create <mmbase> </PRE ></FONT ></TD ></TR ></TABLE > </P ></TD ></TR ></TABLE ></DIV > </P ><P > <DIV CLASS="tip" ><P ></P ><TABLE CLASS="tip" WIDTH="100%" BORDER="0" ><TR ><TD WIDTH="25" ALIGN="CENTER" VALIGN="TOP" ><IMG SRC="../images/tip.gif" HSPACE="5" ALT="Tip"></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > If you are already using quite some <SPAN CLASS="application" >MySQL</SPAN > connections (for example for authentication by and as a back-end to your mail daemons and <SPAN CLASS="application" >Apache</SPAN > servers), the <SPAN CLASS="application" >MySQL</SPAN > server might run out of connections (its maximum number defaults to 100). Then <SPAN CLASS="application" >Tomcat</SPAN > could simply refuse to start or give an error message when initiating the <SPAN CLASS="application" >MySQL</SPAN > connection pool, or your <SPAN CLASS="application" >IMAP</SPAN > or <SPAN CLASS="application" >POP</SPAN > servers will have problems authenticating their clients. </P ><P > You can increase the maximum number of connections to <SPAN CLASS="application" >MySQL</SPAN > by adding to the configuration file <TT CLASS="filename" >/etc/my.cnf</TT >: <TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="programlisting" > [mysqld] set-variable = max_connections=200 </PRE ></FONT ></TD ></TR ></TABLE > </P ></TD ></TR ></TABLE ></DIV > </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="x502.html" ACCESSKEY="P" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="x634.html" ACCESSKEY="N" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Installing <SPAN CLASS="application" >MMBase</SPAN ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Installing <SPAN CLASS="application" >MMBase</SPAN > additional applications</TD ></TR ></TABLE ></DIV ></BODY ></HTML >