4 \chapter{Installing and Configuring MySQL}
6 \index[general]{MySQL!Installing and Configuring }
7 \index[general]{Installing and Configuring MySQL }
9 \section{Installing and Configuring MySQL -- Phase I}
10 \index[general]{Installing and Configuring MySQL -- Phase I }
11 \index[general]{Phase I!Installing and Configuring MySQL -- }
13 If you use the ./configure \verb:--:with-mysql=mysql-directory statement for
14 configuring {\bf Bacula}, you will need MySQL version 4.1 or later installed
15 in the {\bf mysql-directory}. If you are using one of the new modes such as
16 ANSI/ISO compatibility, you may experience problems.
18 If MySQL is installed in the standard system location, you need only enter
19 {\bf \verb:--:with-mysql} since the configure program will search all the
20 standard locations. If you install MySQL in your home directory or some
21 other non-standard directory, you will need to provide the full path to it.
23 Installing and Configuring MySQL is not difficult but can be confusing the
24 first time. As a consequence, below, we list the steps that we used to install
25 it on our machines. Please note that our configuration leaves MySQL without
26 any user passwords. This may be an undesirable situation if you have other
29 The notes below describe how to build MySQL from the source tar files. If
30 you have a pre-installed MySQL, you can return to complete the installation
31 of Bacula, then come back to Phase II of the MySQL installation. If you
32 wish to install MySQL from rpms, you will probably need to install
38 mysql-server-<version>.rpm
39 mysql-devel-<version>.rpm
42 The names of the packages may vary from distribution to
43 distribution. It is important to have the devel package loaded as
44 it contains the libraries and header files necessary to build
45 Bacula. There may be additional packages that are required to
46 install the above, for example, zlib and openssl.
48 Once these packages are installed, you will be able to build Bacula (using
49 the files installed with the mysql package, then run MySQL using the
50 files installed with mysql-server. If you have installed MySQL by rpms,
51 please skip Phase I below, and return to complete the installation of
52 Bacula, then come back to Phase II of the MySQL installation when indicated
55 Beginning with Bacula version 1.31, the thread safe version of the
56 MySQL client library is used, and hence you should add the {\bf
57 \verb:--:enable-thread-safe-client} option to the {\bf
58 ./configure} as shown below:
61 \item Download MySQL source code from
62 \elink{www.mysql.com/downloads}{http://www.mysql.com/downloads}
64 \item Detar it with something like:
66 {\bf tar xvfz mysql-filename}
68 Note, the above command requires GNU tar. If you do not have GNU tar, a
71 {\bf zcat mysql-filename | tar xvf - }
73 will probably accomplish the same thing.
75 \item cd {\bf mysql-source-directory}
77 where you replace {\bf mysql-source-directory} with the directory name where
78 you put the MySQL source code.
80 \item ./configure \verb:--:enable-thread-safe-client \verb:--:prefix=mysql-directory
82 where you replace {\bf mysql-directory} with the directory name where you
83 want to install mysql. Normally for system wide use this is /usr/local/mysql.
84 In my case, I use \~{}kern/mysql.
88 This takes a bit of time.
92 This will put all the necessary binaries, libraries and support files into
93 the {\bf mysql-directory} that you specified above.
95 \item ./scripts/mysql\_install\_db
97 This will create the necessary MySQL databases for controlling user access.
98 Note, this script can also be found in the {\bf bin} directory in the
99 installation directory
103 The MySQL client library {\bf mysqlclient} requires the gzip compression
104 library {\bf libz.a} or {\bf libz.so}. If you are using rpm packages, these
105 libraries are in the {\bf libz-devel} package. On Debian systems, you will
106 need to load the {\bf zlib1g-dev} package. If you are not using rpms or debs,
107 you will need to find the appropriate package for your system.
109 At this point, you should return to completing the installation of {\bf
110 Bacula}. Later after Bacula is installed, come back to this chapter to
111 complete the installation. Please note, the installation files used in the
112 second phase of the MySQL installation are created during the Bacula
116 \section{Installing and Configuring MySQL -- Phase II}
117 \index[general]{Installing and Configuring MySQL -- Phase II }
118 \index[general]{Phase II!Installing and Configuring MySQL -- }
120 At this point, you should have built and installed MySQL, or already have a
121 running MySQL, and you should have configured, built and installed {\bf
122 Bacula}. If not, please complete these items before proceeding.
124 Please note that the {\bf ./configure} used to build {\bf Bacula} will need to
125 include {\bf \verb:--:with-mysql=mysql-directory}, where {\bf mysql-directory} is the
126 directory name that you specified on the ./configure command for configuring
127 MySQL. This is needed so that Bacula can find the necessary include headers
128 and library files for interfacing to MySQL.
130 {\bf Bacula} will install scripts for manipulating the database (create,
131 delete, make tables etc) into the main installation directory. These files
132 will be of the form *\_bacula\_* (e.g. create\_bacula\_database). These files
133 are also available in the \lt{}bacula-src\gt{}/src/cats directory after
134 running ./configure. If you inspect create\_bacula\_database, you will see
135 that it calls create\_mysql\_database. The *\_bacula\_* files are provided for
136 convenience. It doesn't matter what database you have chosen;
137 create\_bacula\_database will always create your database.
139 Now you will create the Bacula MySQL database and the tables that Bacula uses.
143 \item Start {\bf mysql}. You might want to use the {\bf startmysql} script
144 provided in the Bacula release.
146 \item cd \lt{}install-directory\gt{}
147 This directory contains the Bacula catalog interface routines.
149 \item ./grant\_mysql\_privileges
150 This script creates unrestricted access rights for the user {\bf bacula}.
151 You may want to modify it to suit your situation. Please
152 note that none of the userids, including root, are password protected.
153 If you need more security, please assign a password to the root user
154 and to bacula. The program {\bf mysqladmin} can be used for this.
156 \item ./create\_mysql\_database
157 This script creates the MySQL {\bf bacula} database. The databases you
158 create as well as the access databases will be located in
159 \lt{}install-dir\gt{}/var/ in a subdirectory with the name of the
160 database, where \lt{}install-dir\gt{} is the directory name that you
161 specified on the {\bf \verb:--:prefix} option. This can be important to
162 know if you want to make a special backup of the Bacula database or to
165 \item ./make\_mysql\_tables
166 This script creates the MySQL tables used by {\bf Bacula}.
169 Each of the three scripts (grant\_mysql\_privileges, create\_mysql\_database
170 and make\_mysql\_tables) allows the addition of a command line argument. This
171 can be useful for specifying the user and or password. For example, you might
172 need to add {\bf -u root} to the command line to have sufficient privilege to
173 create the Bacula tables.
175 To take a closer look at the access privileges that you have setup with the
180 mysql-directory/bin/mysql -u root mysql
185 \section{Re-initializing the Catalog Database}
186 \index[general]{Database!Re-initializing the Catalog }
187 \index[general]{Re-initializing the Catalog Database }
189 After you have done some initial testing with {\bf Bacula}, you will probably
190 want to re-initialize the catalog database and throw away all the test Jobs
191 that you ran. To do so, you can do the following:
195 cd <install-directory>
201 Please note that all information in the database will be lost and you will be
202 starting from scratch. If you have written on any Volumes, you must write an
203 end of file mark on the volume so that Bacula can reuse it. Do so with:
207 (stop Bacula or unmount the drive)
208 mt -f /dev/nst0 rewind
213 Where you should replace {\bf /dev/nst0} with the appropriate tape drive
214 device name for your machine.
216 \section{Linking Bacula with MySQL}
217 \index[general]{Linking Bacula with MySQL }
218 \index[general]{MySQL!Linking Bacula with }
219 \index[general]{Upgrading}
221 After configuring Bacula with
223 ./configure \verb:--:enable-thread-safe-client \verb:--:prefix=\lt{}mysql-directory\gt{}
224 where \lt{}mysql-directory\gt{} is in my case {\bf /home/kern/mysql}, you may
225 have to configure the loader so that it can find the MySQL shared libraries.
226 If you have previously followed this procedure and later add the {\bf
227 \verb:--:enable-thread-safe-client} options, you will need to rerun the {\bf
228 ldconfig} program shown below. If you put MySQL in a standard place such as
229 {\bf /usr/lib} or {\bf /usr/local/lib} this will not be necessary, but in my
230 case it is. The description that follows is Linux specific. For other
231 operating systems, please consult your manuals on how to do the same thing:
233 First edit: {\bf /etc/ld.so.conf} and add a new line to the end of the file
234 with the name of the mysql-directory. In my case, it is:
236 /home/kern/mysql/lib/mysql then rebuild the loader's cache with:
238 /sbin/ldconfig If you upgrade to a new version of {\bf MySQL}, the shared
239 library names will probably change, and you must re-run the {\bf
240 /sbin/ldconfig} command so that the runtime loader can find them.
242 Alternatively, your system my have a loader environment variable that can be
243 set. For example, on a Solaris system where I do not have root permission, I
246 LD\_LIBRARY\_PATH=/home/kern/mysql/lib/mysql
248 Finally, if you have encryption enabled in MySQL, you may need to add {\bf
249 -lssl -lcrypto} to the link. In that case, you can either export the
250 appropriate LDFLAGS definition, or alternatively, you can include them
251 directly on the ./configure line as in:
255 LDFLAGS="-lssl -lcyrpto" \
261 \section{Installing MySQL from RPMs}
262 \index[general]{MySQL!Installing from RPMs}
263 \index[general]{Installing MySQL from RPMs}
264 If you are installing MySQL from RPMs, you will need to install
265 both the MySQL binaries and the client libraries. The client
266 libraries are usually found in a devel package, so you must
276 This will be the same with most other package managers too.
278 \section{Upgrading MySQL}
279 \index[general]{Upgrading MySQL }
280 \index[general]{Upgrading!MySQL }
281 \index[general]{Upgrading}
282 If you upgrade MySQL, you must reconfigure, rebuild, and re-install
283 Bacula otherwise you are likely to get bizarre failures. If you
284 install from rpms and you upgrade MySQL, you must also rebuild Bacula.
285 You can do so by rebuilding from the source rpm. To do so, you may need
286 to modify the bacula.spec file to account for the new MySQL version.