Unable to start MySQL service
Tags: database, mysql, osx
Published: 2021-12-30 23:36:09

---
title: Unable to start MySQL service
published: true
date: 2021-09-05 09:21:00 UTC
tags: databases,mysql,osx
canonical_url: https://jason.sultana.net.au/databases/mysql/osx/2021/09/05/unable-to-start-mysql-service.html
---

G’day guys!

Have you ever tried to start MySQL as a service, either on MacOS or Windows - and the service inexplicably starts, then stops? Chances are, it’s encountering a file permissions issue behind the scenes, but is neglecting to tell you. Well, let’s look at how you might be able to identify the problem, and take some steps to resolve it.

![](https://jason.sultana.net.au/static/img/mysql-wont-start.png)

#### Why is it stopping!?

Let’s get this out of the way first. To figure out why the service is stopping, I recommend you try starting the service on the command line, where you’ll hopefully get some more output as to what’s going wrong. On MacOS, that’ll probably look like: `/usr/local/mysql/support-files/mysql.server start`.

Note that this file location assumes that you’ve installed MySQL using the official installer. If you’ve installed MySQL using another means (eg: homebrew), then the path might look a bit different. Regardless though, you can find your mysql install directory (so long as `mysql` is on your path) by running `which mysql`. Once you’ve done that, you should be able to adjust the previous command so that `/support-files/mysql.server start` is relative to your mysql install directory.

In my case, I got back something that looked like this:

```
Starting MySQL
./usr/local/mysql/bin/mysqld_safe: line 653: /usr/local/mysql/data/Jasons-iMac.hub.err: Permission denied

```

#### Great! How do I fix it?

Provided that you got a similar-looking error as the one shown above, then fundamentally, this is a permissions issue. You’ll need to make sure that the user account assumed by the MySQL service has permissions to access the directories and files that it requires. You could try this using the GUI (yuck!) or here’s some command-line magic to do it for you:

```
sudo chown -R _mysql:admin <your mysql directory>

```

For a thorough breakdown of the chown command, you can check out the [man page](https://linux.die.net/man/1/chown). In short though, we’re changing the owner of the directory (eg: `/usr/local/mysql`) to the `_mysql` user and `admin` group. The `_mysql` user is a special user account created by the MySQL installer, which is the user assumed by the mysql service when it runs. See [this link](https://serverfault.com/questions/174498/how-does-mysql-run-as-user-mysql-on-mac) for more info on how that happens.

After running that, you should also run:

```
sudo chmod -R u+rwX,g+rwX,o-rwx <your mysql directory>

```

Once again, you can visit the [man page](https://linux.die.net/man/1/chmod) for a breakdown of the command, but long story short, we want to recursively set `read (r)`, `write (w)` and `execute (x)` permissions on files in the directory for both the `user who owns the file (u+)`, `the group associated with the file (g+)` and other users `o-`. After running the previous command, the files should be owned by the `_mysql` user, and associated with the `admin` group.

If you want to verify the permissions after running the above two commands (or you’re still getting errors), you could try navigating to your mysql directory and running `ls -l ./` to display all of the files in the directory, including their owners, groups and permissions.

Hope somebody finds this helpful someday - quite possibly future me!

Happy querying! Catch ya!