HowTo: Create a local environment using MAMP

Last updated on
September 30, 2016 - 11:44

MAMP creates a local server environment on Mac OS X by installing PHP, MySQL, and Apache right out of the box. This will make Drupal much easier to install because the components don't have to be installed separately. This page is to be used in conjunction with the installation instructions for Drupal on Mac OS X.

Also you may want to check out this video in the Videocasts section of the handbook: Installing a Local Web Server on Mac OS X.

Download MAMP

(This will install Apache, MySQL, and PHP in one step.)
Find the latest version here:
Download and proceed through the installer to install MAMP. Open MAMP and click "start servers," then "Open start page."

Download Drupal

Find the latest Drupal release here:

Move the directory containing the Drupal files into the MAMP htdocs directory:

mv drupal-x.x.x/* drupal-x.x.x/.htaccess /Applications/MAMP/htdocs/yourdrupaldir

where yourdrupaldir is whatever you want the directory to be called.

Note: if you use Finder you may miss moving the .htaccess file which is necessary for clean URLs to work. It is generally best to download and unzip Drupal directly in the document root (default is htdocs) so you don't miss the .htaccess.

Create the Drupal database

To create a database for Drupal

  1. Go to the MAMP start page
  2. Click "phpMyAdmin"
  3. On the next page click "Databases"
  4. On the "Databases" page enter a name for your Drupal database in the "Create new database" field at the bottom of the page
  5. Select "utf8_general_ci" under the "Collation" drop-down (must be utf8!)
  6. Click "Create"
  7. Next you must create a user name with the privileges Drupal requires to use the new database
  8. Jump to your new database by clicking its name in the left sidebar and then click the "Privileges" tab.
  9. On the next page click "Add user".
  10. Fill out the "Login Information" form, making sure to change the "Host" field to "Local" and not leave it as "Any host" (for some reason Drupal will not be able to connect to your local database if you select "Any host")
  11. Leave the "None" radio button selected under the "Database for user" section, and under the "Global privileges" section leave everything unchecked
  12. Click "Add user"
  13. Go back to the main phpMyAdmin home page by clicking the Home icon in the left sidebar.
  14. Click the "Users" tab and edit the user that you just created.
  15. On the next page scroll down to the "Database-specific privileges" section and select the new Drupal database you created from the dropdown and then click "Go".
  16. Check the SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX and ALTER checkboxes and then click "Go".

You can also use a GUI such as Sequel Pro, just remember to use this as your Socket:


Changing your password

The default username/password for your MySQL install is now root/root! For security purposes, it's always best to change this. If you're connected to the internet, this is a must.

When you are changing the default user/password from root/root, you need to do two things. Only the first is documented in the MAMP start page FAQ, but if you don't do the second then you get an error message when you try to access anything from the MAMP start page.

  1. Use command line to change the password (as documented in the MAMP start page FAQ)

    Open the terminal and type the following:
    /Applications/MAMP/Library/bin/mysqladmin -u root -p password [NEWPASSWORD]

    It will ask for the current password after you hit enter. Once you have entered that, the MySQL password is changed.

  2. Open a text editor and change the password in the four following files:
    • /Applications/MAMP/bin/phpMyAdmin-X.X.X/

      Find the line that reads...
      $cfg['Servers'][$i]['password'] = 'root';
      ...and change the value 'root' to your new password, retaining the quotes.

    • /Applications/MAMP/bin/mamp/index.php

      Find the line that reads...
      $link = @mysql_connect(':/Applications/MAMP/tmp/mysql/mysql.sock', 'root', 'root');
      ...and change the last parameter to your new password.

    • /Applications/MAMP/bin/

      Find -proot and replace just the root part with your new password. Note that it's important not to have a space between -p and the password itself. (If you don't change this one you can have zombie mysqld's running after you thought you stopped the server.)

    • /Applications/MAMP/bin/

      As above, replace root in -proot with your new password. (If you see an error pop up when you run the MAMP app that says "Error: 1045: Access denied for user 'root'@'localhost' (using password: YES) when trying to connect", this should fix it.)

Or in Mamp Pro you can change the MySQL password under the "MySQL" tab.

Optional: Adjust PHP's memory limit for scripts

By default, MAMP has the memory limit that a script can use set at 8MB, which is the PHP default. Looking at PHP's php.ini-recommended file, this memory limit is normally set at 128MB. To adjust this amount, open the php.ini file in a text editor and change the following line (approximately on line 232):

memory_limit = 8M ; Maximum amount of memory a script may consume (8MB)

PHP.ini file locations:

  • /Applications/MAMP/conf/php4/php.ini
  • /Applications/MAMP/conf/php5/php.ini

In MAMP PRO, don't alter the file directly since it will be recreated at each server start. Please edit the appropriate template (menu File > Edit template > ...) instead.

MySQL issues

Even with larger PHP memory limits you can get timeout errors trying to import large Drupal databases into MySQL. These issues are discussed at length elsewhere with regards to the cache and views cache. Generally the solution is to empty the Drupal cache before importing/exporting databases to/from MySQL.

You may also need to adjust MAMP's memory settings for MySQL. For example, if you get an error message that says, "General error: 2006 MySQL server has gone away," it probably means that you need to increase MySQL's max_allowed_packet setting. To change this setting, edit file /Applications/MAMP/bin/ by appending --max_allowed_packet=100M at the end before the & character.

To adjust MAMP Pro's memory settings navigate to:

File > Edit template > MySQL my.cnf

In the text file that opens, change the value for 'max_allowed_packet' to 100M. Note you can set this in MAMP by adding your own my.cnf file manually.

Adding mysqldump and other libraries to $PATH

In order to make use of mysqldump and other libraries that ship with MAMP you'll likely want to add the location of these libraries to your $PATH (especially if you want to use some of the SQL functions of Drush). Tap the following line into Terminal and hit Return:

export PATH=/Applications/MAMP/Library/bin/:$PATH

Start configuring Drupal!

  • Navigate to http://localhost:8888/yourdrupaldir/install.php
  • Fill in the installation fields using the information provided on the MAMP start page and the database you created in step 4 as well as the username you specified in step 10.
  • Continue filling out the remaining fields during the installation.
  • Refer to the INSTALL.txt, in the Drupal Root directory, for additional help.

NOTE!! If you changed your MySQL username and password, at any time post-installation, you will need to modify that in your local Drupal settings.php file as well.

Temporary Files Note:

By default the File System settings (admin/config/media/file-system) will place the temporary files directory inside /Applications/MAMP/tmp/php which should be changed to something like files/tmp or sites/files/tmp to avoid later confusion.

Clean up your Localhost URL

If you would like to shorten your URL from "http://localhost:8888" to "http://localhost" follow these instructions:

  • Open the MAMP application
  • Click on "Preferences" and then "Ports"
  • Change the Apache Port to 80 (the standard web server port)

In MAMP PRO, change the port of apache to 80 and click on apply.