I recently set up a new Mac OS X Snow Leopard laptop for software development purposes. After going through my usual MacPorts installation and installed MySQL using the following steps
- sudo install mysql5-server
- sudo cp /opt/local/var/macports/software/mysql5/5.1.44_0/opt/local/share/mysql5/mysql/my-medium.cnf /opt/local/etc/mysql5/my.cnf
- sudo -u mysql mysql_install_db5
- sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
A few days past, and one day I notice that launchctl was loading the script, but `nmap localhost` did not show the the process listening on port 3306 as expected. I looked at the log file:
sudo tail -f /opt/local/var/db/mysql5/preston.local.err
..and noticed it was terminating with the following errors:
100331 12:05:30 [ERROR] /opt/local/libexec/mysqld: Can’t find file: ‘./mysql/host.frm’ (errno: 13)100331 12:05:30 [ERROR] Fatal error: Can’t open and lock privilege tables: Can’t find file: ‘./mysql/host.frm’ (errno: 13)100331 12:05:30 [ERROR] /opt/local/libexec/mysqld: Can’t find file: ‘./mysql/host.frm’ (errno: 13)100331 12:05:30 [ERROR] Fatal error: Can’t open and lock privilege tables: Can’t find file: ‘./mysql/host.frm’ (errno: 13)
After a considerable amount of grief I evertually discovered that the contents of /opt/local/var/db/mysql5/ need to be owned by the appropriate mysql user (in my case “_mysql”), but some files were being owned by the “root” user. After correcting all file ownership and restarting the service…
- sudo chown -R _mysql /opt/local/var/db/mysql5/
- sudo launchctl unload -w /Library/LaunchDaemons/org.macports.mysql5.plist
- sudo launchctl load -w /Library/LaunchDaemons/org.macports.mysql5.plist
Everything now seems to work fine again. Hope this helps!