8. Connecting MMBase to MySQL using MySQL
Connector/J
We can connect MMBase to our
MySQL database server using
MySQL Connector/J. This
JDBC driver for MySQL can be downloaded from:
Copy the JDBC driver to the
MMBase lib/ directory:
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
|
Make this your JDBC driver for
MMBase by editing /usr/local/tomcat/webapps/mmbase-webapp/WEB-INF/config/modules/jdbc.xml.
Substitute the database name (mmbase), user (mmuser) and password (mmpass) with the database settings
you'd like MMBase to use.
<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>
|
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.
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
|
Now create the MySQL database
you've just defined for MMBase:
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;
|
Substitute the hostname (<hostname>) and domain name
(<domainname>) with
your own hostname and domain name, and the database name
(<mmbase>), user
(<mmuser>) and
password (<password>)
with the values you just entered in the JDBC driver
configuration file.
|
To quickly empty your MySQL database, i.e. after you've
updated your MMBase
configuration or application (replace the database name
<mmbase> with
your own):
mysqladmin -u root -p drop <mmbase>
mysqladmin -u root -p create <mmbase>
|
|
|
If you are already using quite some MySQL connections (for example for
authentication by and as a back-end to your mail
daemons and Apache
servers), the MySQL
server might run out of connections (its maximum number
defaults to 100). Then Tomcat could simply refuse to
start or give an error message when initiating the
MySQL connection pool,
or your IMAP or
POP servers will have
problems authenticating their clients.
You can increase the maximum number of connections to
MySQL by adding to the
configuration file /etc/my.cnf:
[mysqld]
set-variable = max_connections=200
|
|