Installing MySQL And phpMyAdmin On FreeNAS

This howto was written when I needed to run some php based web applications and the only system around was FreeNAS. Although many people are using php and MySQL on a FreeNAS box successfully I couldn't find any simple tutorial for the purpose, so I wrote one in case anyone needs it.

For this howto the following software and configurations were used:

  • FreeNAS version 0.7RC1
  • Installed with option "install 'full' OS on HDD + data + swap partition" or "install 'full' OS on HDD + data partition"
  • Installaed with enough space on OS partition to install additional packages
  • Working Internet connection

For the installation of FreeNAS there is a good tutorial available on HowtoForge, click this link.

 

Install MySQL

After a successfull installation and configuration of FreeNAS we will install MySQL on the box using the following steps.

Create the group and user 'mysql' using the FreeNAS WebGUI, it is important because FreeNAS will forget about the users created on command line after reboot.

ssh in to the FreeNAS box:

# ssh 192.168.1.250
[email protected]'s password:
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.

Welcome to FreeNAS!

freenas:~#

Create a directory to store MySQL data files, in my case I create a sub-directory in /mnt/dynamic/db to store database files, the reason to create this folder is to utilize the space on the data partition, as the data files grow it is a good place to store your growing database files.

# mkdir /mnt/dynamic/db/mysql

By default the MySQL server on FreeNAS stores database files in /var/db/mysql which does not exist at this point, so let's make a symbolic link in that directory:

# ln -s /mnt/dynamic/db/mysql /var/db/mysql

Give all permissions to the user and group mysql for /mnt/dynamic/db/mysql:

# chown -R mysql:mysql /mnt/dynamic/db/mysql

Allow anyone to create temporary files in the following direcories, MySQL needs to create temporary files there:

# chmod 777 /tmp
# chmod 777 /var/tmp

Type the following command to install MySQL server:

# pkg_add -r mysql50-server

Execute the following command to create default databases and tables:

# mysql_install_db

Installing MySQL system tables...
090819 11:18:58 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
090819 11:18:58 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
OK
Filling help tables...
090819 11:18:58 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
090819 11:18:58 [Warning] option 'max_join_size': unsigned value 18446744073709551615 adjusted to 4294967295
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:
/usr/local/bin/mysqladmin -u root password 'new-password'
/usr/local/bin/mysqladmin -u root -h freenas.local password 'new-password'

Alternatively you can run:
/usr/local/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr/local ; /usr/local/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/local/bin/mysqlbug script!

The latest information about MySQL is available on the web at
http://www.mysql.com
Support MySQL by buying support/licenses at http://shop.mysql.com

Now to automatically start mysql after a reboot, add mysql_enable="YES" to rc.conf, GUI is prefereable to make this change, select System -> Advance -> rc.conf:

System->Advance->rc.conf

Click on the red plus sign to create a new entry:

add

After filling the fields as shown in the image click the add button:

Apply changes

Click the button "Apply changes" to apply and save the changes permanently:

Done!

The installation of the MySQL server has successfully been completed. At this point you may reboot FreeNAS and check the proper startup of the MySQL server after reboot.

 

Installation of PHP

Although FreeNAS includes php for its own web interface working upon it, it's good to install extra supporting packages to run php-based applications. Let's start the process with the following commands:

# pkg_add -r php5
# pkg_add -r php5-extensions
# pkg_add -r php5-xmlrpc
# pkg_add -r php5-gettext
# pkg_add -r php5-mcrypt
# pkg_add -r php5-mysql
# pkg_add -r php5-mbstring

These commands install php5 and some basic packages needed to run phpMyAdmin, after the installation you will not be able to access FreeNAS webGUI interface because of a problem, don't panic let's correct it by issuing the following commands:

# mv /usr/local/bin/php /usr/local/bin/php-cli
# cp /usr/local/bin/php-cgi /usr/local/bin/php

Back in business! At this point our installation of the MySQL server and PHP has successfully been completed.

 

Installation of phpMyAdmin

Let's create a proper directory to hold applications, you are welcome to use you own scheme:

# mkdir /mnt/dynamic/apps
# cd /mnt/dynamic/app

Donwload phpMyAdmin from http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/; in my case I've donloaded the phpMyAdmin-3.2.1-english.tar.gz file. You can use the following command on the FreeNAS box or copy via scp.

fetch http://sourceforge.net/projects/phpmyadmin/files/phpMyAdmin/3.2.1/phpMyAdmin-3.2.1-english.tar.gz

Untar the archeive and create the necessary symbolic links:

# tar -zxvf phpMyAdmin-3.2.1-english.tar.gz
# ln -s /mnt/dynamic/apps/phpMyAdmin-3.2.1-english/ /mnt/dynamic/apps/phpMyAdmin

Now create a link to run phpMyAdmin from the default location:

# ln -s /mnt/dynamic/apps/phpMyAdmin/ /usr/local/www/phpMyAdmin

You can access phpMyAdmin from http://< FreeNAS IP >/phpMyAdmin/.

Enjoy!

Share this page:

42 Comment(s)