I have installed 64 bit MYSQL server on MAC OS High Sierra. After installation when I open MySQL through System Preferences and click on 'Start MySQL Server' button, MySQL Server is not running. I try to run MySQL server through terminal using the below command.
Fair warning: Today’s tip is over-the-top geeky.
After many years of not doing anything with web serving on my local Mac, I recently had a need to look at some mySQL/PHP-based web packages. While I could install these on robservatory as tests, I generally like to install things locally first, because I’ll install a handful of packages until I find the one I like. But it’d been so long, I didn’t have anything configured. (Remember when enabling Apache—i.e. web sharing—was a feature of the System Preferences’ Sharing panel? Ah, good times!)
I could have opted to use the built-in Apache, but I wanted something that I could more easily keep up to date, and that, if I chose, would be easy to remove. The good news is that Homebrew has packages available for Apache, PHP, and MySQL. Homebrew installs everything in its own directory tree, and adding and removing packages is simple—exactly the setup I wanted.
So in theory, installation was as easy as three brew tap commands. The reality, though, is that the installation is a bit more complex. OK, it’s a lot more complex. The good news is that, this being the age of the internet, help is but a search away. Or the advice of a friend away, which is what I used in this case.
A friend pointed me to this excellent installion guide that walks through the entire process, including installing two versions of PHP with the ability to switch between them on the fly.
It was this on-the-fly switching, though, that gave me troubles: I couldn’t get a site to load unless I specified “index.php” or “index.html” as part of the URL. (Apache is configured to grab those files automatically.) Solving that one took a bit of time…
The problem appeared to be the ProxyPassMatch line in the virtual hosts file; if I put the full URL into that line, without the trailing “index” bit, then it worked fine. Some web searching eventually led me to this page, which explained you really shouldn’t use ProxyPassMatch. Instead, the author recommends this construct:
<FilesMatch .php$>
SetHandler 'proxy:fcgi://127.0.0.1:9000'
</FilesMatch>
SetHandler 'proxy:fcgi://127.0.0.1:9000'
</FilesMatch>
So I switched over to that, and now everything’s running fine: I have virtual hosts set up to run the packages I want to look at, all running locally and with packages that I can easily update, disable, or remove.
Related Posts:
macOS Update: While these instructions still work, there are new posts for recent versions of macOS, the latest being Install Apache, PHP, and MySQL on macOS Mojave.
PHP Update: Mac OS X Sierra comes pre-installed with PHP version 5.6, however the latest version of PHP is 7.1. After you complete this post, you should upgrade PHP on Mac OS X.
Note: This post is for new installations. If you have installed Apache, PHP, and MySQL for Mac OS El Capitan, read my post on Updating Apache, PHP, and MySQL for Mac OS X Sierra.
Mac OS X runs atop UNIX. So most UNIX software installs easily on Mac OS X. Furthermore, Apache and PHP come packaged with Mac OS X. To create a local web server, all you need to do is configure Apache and install MySQL.
I am aware of the web server software available for Mac OS X, notably MAMP. These get you started quickly. But they forego the learning experience and, as most developers report, can become difficult to manage.
Running Commands
First, open the Terminal app and switch to the
root
user so you can run the commands in this post without any permission issues:Enable Apache on Mac OS X
Verify It works! by accessing http://localhost
Enable PHP for Apache
First, make a backup of the default Apache configuration. This is good practice and serves as a comparison against future versions of Mac OS X.
Now edit the Apache configuration. Feel free to use TextEdit if you are not familiar with vi.
Uncomment the following line (remove
#
):Restart Apache:
You can verify PHP is enabled by creating a
phpinfo()
page in your DocumentRoot
.The default
DocumentRoot
for Mac OS X Sierra is /Library/WebServer/Documents
. You can verify this from your Apache configuration.![Php Support For Mysql Mac Sierra Php Support For Mysql Mac Sierra](/uploads/1/2/5/7/125754572/967864227.png)
Now create the
phpinfo()
page in your DocumentRoot
:Verify PHP by accessing http://localhost/phpinfo.php
Install MySQL on Mac OS X Sierra
Download and install the latest MySQL generally available release DMG for Mac OS X.
The README suggests creating aliases for
mysql
and mysqladmin
. However there are other commands that are helpful such as mysqldump
. Instead, you can update your path to include /usr/local/mysql/bin
.Note: You will need to open a new Terminal window or run the command above for your path to update.
Finally, you should run
mysql_secure_installation
. While this isn't necessary, it's good practice to secure your database.Connect PHP and MySQL
You need to ensure PHP and MySQL can communicate with one another. There are several options to do so. I do the following:
Additional Configuration (optional)
The default configuration for Apache 2.4 on Mac OS X seemed pretty lean. For example, common modules like
mod_rewrite
were disabled. You may consider enabling this now to avoid forgetting they are disabled in the future.I edited my Apache Configuration:
I uncommented the following lines (remove
#
):If you develop multiple projects and would like each to have a unique url, you can configure Apache VirtualHosts for Mac OS X.
If you would like to install PHPMyAdmin, return to my original post on installing Apache, PHP, and MySQL on Mac OS X.
Find this interesting? Let's continue the conversation on Twitter.