Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Install Apache, PHP, MySQL and phpMyAdmin on Mac OS X

Prerequisites

Install homebrew:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

1. Enable Apache

Open Terminal and run the following Code: sudo apachectl start

Open your browser and access http://localhost. If it says It Works, then you are set otherwise see if your apachectl has started or not.

2. Enable PHP for Apache

Let's make a backup of the default Apache configuration. This will help you to cross check later what you changed or in case you want to restore the configuration to default.

cd /etc/apache2/
cp httpd.conf httpd.conf.bak

Now edit the httpd.conf with vi or any other text editor: vi httpd.conf

Now uncomment the following line (Remove #): LoadModule php5_module libexec/apache2/libphp5.so

Now Restart apache: sudo apachectl restart

3. Install MySQL

To install MySQL: brew install mysql

Install brew services now: brew tap homebrew/services

Now start MySQL: brew services start mysql

Now configure MySQL : mysql_secure_installation

  • Validate Password Plugin
  • Remove anonymous users
  • Disallow root login remotely
  • Remove test database and access to it
  • Reload privilege tables now - Choose yes

After finishing this up, test MySQL: mysql -uroot -p.

It will ask you write the password you set for mysql before. Enter password and then something like this appear:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.19 Homebrew

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

4. Connect PHP and MySQL

Now we need to ensure PHP and MySQL:

cd /var
mkdir mysql
cd mysql
ln -s /tmp/mysql.sock mysql.sock

All your sites would have URLs like http://locahost/some-site pointing to /Library/WebServer/Documents/some-site.

Note on Permissions

You may recieve 403 forbidden when you visit your local site. The Apache user(_www) needs to have access to read, and sometimes write, your web directory.

You can either change permissions like this: chmod 755 directory/ or you can change the ownership of the directory to the apache user and group: chown -R _www:_www directory

5. Install PHPMyAdmin

This is optional. You can use MySQL through command line but this is a good way to administer MySQL. Download phpmyadmin from site.

cd /Library/WebServer/Documents/
tar -xvf ~/Downloads/phpMyAdmin-4.7.4-english.tar.gz
mv phpMyAdmin-4.7.4-english/ phpmyadmin
cd phpmyadmin
mv config.sample.inc.php config.inc.php

Done! Done! Done!

@Andrewngabriel
Copy link

Andrewngabriel commented May 14, 2020

This is very helpful! Thanks for sharing 👍

Loading

@eldaraldashev
Copy link

eldaraldashev commented Oct 31, 2020

Many thanks

Loading

@milad-ahmd
Copy link

milad-ahmd commented Nov 20, 2020

which port phpmyadmin has been start?

Loading

@manickkbala
Copy link

manickkbala commented Feb 1, 2021

8080

Loading

@pinoyeto
Copy link

pinoyeto commented Feb 11, 2021

can these instruction works in Big Sur?

Loading

@alekusito
Copy link

alekusito commented Apr 26, 2021

It shows "You don't have permission to access /phpmyadmin/ on this server."

Loading

@Alizadeh118
Copy link

Alizadeh118 commented Jul 27, 2021

Thank you, it was really helpful.
There is a typo in the line starts with All your sites would have URLs: l is missing in localhost link.

Loading

@BryanTitan
Copy link

BryanTitan commented Aug 15, 2021

It shows "You don't have permission to access /phpmyadmin/ on this server."

add "sudo" before the command

Loading

@websasindu
Copy link

websasindu commented Sep 11, 2021

Big Sur

Working like champ on Big Sur. thank you

Loading

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment