5

The MySQL server won't start and is reporting the following error:

/usr/local/mysql/bin/mysqld: Can't create/write to file '/usr/local/mysql/data/James-Barnhills-Mac-Pro.local.pid' (Errcode: 13)
Can't start server: can't create PID file: Permission denied

All the permissions are set recursively as:

lrwxr-xr-x 1 _mysql wheel 27 Nov 22 09:25 mysql -> mysql-5.5.18-osx10.6-x86_64

but it won't start. I've tried reinstalling several times to no avail.

I'm running as root on Mac OS, and MySQL has read, write, and execute permissions on the "data" folder.

random
  • 450
  • 1
  • 9
  • 16
James Barnhill
  • 53
  • 1
  • 1
  • 4
  • `ls -ld /usr/local/mysql/data/`? – quanta Nov 24 '11 at 02:35
  • `drwxr-xr-x 13 _mysql wheel 442 Nov 24 09:04 mysql/data/` – James Barnhill Nov 24 '11 at 15:11
  • `ls -ld /usr/local/mysql-5.5.18-osx10.6-x86_64/`? – slillibri Dec 05 '11 at 01:27
  • @JamesBarnhill To expand on my earlier comment, make sure `_mysql` has `x` permissions to `/usr/local/mysql-5.5.18-osx10.6-x86_64/`, not just `/usr/local/mysql` as that is just a symlink. If you `chmod +x /usr/local/mysql-5.5.18-osx10.6-x86_64/` it should start (at least that would match the working perms on my MBP). – slillibri Dec 05 '11 at 01:54
  • 1
    I resolved this issue by running `sudo chmod -R 0771 /usr/local/mysql-*`, giving `/usr/local/mysql-5.5.18-osx10.6-x86_64/` the permissions `drwxrwx--x 18 _mysql wheel`. – James Barnhill Dec 05 '11 at 08:09
  • Referenced in Stack Overflow question *[MySQL server startup error 'The server quit without updating PID file'](https://stackoverflow.com/questions/4963171/mysql-server-startup-error-the-server-quit-without-updating-pid-file/14571445#14571445)*. – Peter Mortensen Oct 28 '21 at 01:49

2 Answers2

4

The permission errors are because you have the directory set to the Octal Permission 0751. This means the User can read write and execute but everyone else can't. Since you aren't the user _mysql you don't have permissions. You can do two things to fix this.

  • You could start it by putting sudo in front of the command you use to start the mysqld service.

    sudo service mysqld start

  • You could set the permissions recursively to 0771. This will allow the wheel (administrator) group to write to the directory.

Hunter Dolan
  • 284
  • 2
  • 7
  • I'm am already running the command `mysqld_safe` as root. Permissions set to 0771, I ran the command again; still the same error code, reverted permissions back. – James Barnhill Nov 24 '11 at 15:12
0

Its not because you start mysql as root that its actuality started as that user. Check /etc/my.cnf and compare whether the owner of the mysql data dir is the same as specified by the parameter user=mysql_owner.

If its for example "mysql", then root switches to that user (behind the scenes) before starting mysql