MacOS – MySQL fails to start after update

homebrewmacosMySQL

I am on Yosemite 10.10.5 and just now I updated my outdated MySQL to the latest version. I made a copy of my existing databases /usr/local/mysql/data/ somewhere safe.

I have tried to setup MySQL both via brew & via the package installer, but seems I managed to mess up with both ways.

There is a new icon in preferences panel that was created via the package installer but it doesn't seem to start MySQL.

I tried running mysql.server start on terminal but i received the following error:

Starting MySQL
. ERROR! The server quit without updating PID file (/usr/local/var/mysql/myname.local.pid).

I tried brew services start mysql and I get:

==> Successfully started `mysql` (label: homebrew.mxcl.mysql)

But I can't access to it via Sequel Pro or via Terminal. Since brew services starts mysql, I try mysql but I get:

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

I have the following logs at /usr/local/var/mysql/myname.local.err

2016-03-30T21:58:53.6NZ mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
2016-03-30T21:58:53.791807Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
2016-03-30T21:58:53.792478Z 0 [Warning] 'NO_ZERO_DATE', 'NO_ZERO_IN_DATE' and 'ERROR_FOR_DIVISION_BY_ZERO' sql modes should be used with strict mode. They will be merged with strict mode in a future release.
2016-03-30T21:58:53.792493Z 0 [Warning] 'NO_AUTO_CREATE_USER' sql mode was not set.
2016-03-30T21:58:53.792573Z 0 [Warning] Insecure configuration for --secure-file-priv: Current value does not restrict location of generated files. Consider setting it to a valid, non-empty path.
2016-03-30T21:58:53.793639Z 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.7.11) starting as process 5922 ...
2016-03-30T21:58:53.807159Z 0 [Warning] Setting lower_case_table_names=2 because file system for /usr/local/mysql/data/ is case insensitive
2016-03-30T21:58:53.829847Z 0 [ERROR] Plugin keyring_file reported: 'keyring_file initialization failure. Please check if the keyring_file_data points to readable keyring file or keyring file can be created in the specified location. The keyring_file will stay unusable until correct path to the keyring file gets provided'
2016-03-30T21:58:53.834848Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
...
2016-03-30T21:58:54.063594Z 0 [Note] InnoDB: Loading buffer pool(s) from /usr/local/mysql-5.7.11-osx10.9-x86_64/data/ib_buffer_pool
2016-03-30T21:58:54.065139Z 0 [Note] Plugin 'FEDERATED' is disabled.
2016-03-30T21:58:54.066443Z 0 [Note] InnoDB: Buffer pool(s) load completed at 160331  0:58:54
2016-03-30T21:58:54.073134Z 0 [Warning] System table 'plugin' is expected to be transactional.
2016-03-30T21:58:54.081061Z 0 [Warning] Gtid table is not ready to be used. Table 'mysql.gtid_executed' cannot be opened.
2016-03-30T21:58:54.083246Z 0 [Warning] Failed to set up SSL because of the following SSL library error: SSL context is not usable without certificate and private key
2016-03-30T21:58:54.090221Z 0 [Note] Server hostname (bind-address): '*'; port: 3306
2016-03-30T21:58:54.090273Z 0 [Note] IPv6 is available.
2016-03-30T21:58:54.090299Z 0 [Note]   - '::' resolves to '::';
2016-03-30T21:58:54.090310Z 0 [Note] Server socket created on IP: '::'.
2016-03-30T21:58:54.091554Z 0 [Warning] Failed to open optimizer cost constant tables

2016-03-30T21:58:54.099383Z 0 [ERROR] Fatal error: mysql.user table is damaged. Please run mysql_upgrade.
2016-03-30T21:58:54.099725Z 0 [ERROR] Aborting

2016-03-30T21:58:54.099763Z 0 [Note] Binlog end
2016-03-30T21:58:54.100531Z 0 [Note] Shutting down plugin 'ngram'
...
2016-03-30T21:58:55.476257Z 0 [Note] Shutting down plugin 'binlog'
2016-03-30T21:58:55.476370Z 0 [Note] /usr/local/mysql/bin/mysqld: Shutdown complete

2016-03-30T21:58:55.6NZ mysqld_safe mysqld from pid file /usr/local/mysql/data/myuser.local.pid ended

Best Answer

Realized all this mess has been created because mysql has been installed via brew and via package from mysql site.

Solution for me was to remove mysql completely & reinstalled it via brew.

The new database data i created are located in /usr/local/var/mysql/

Running where mysql returns /usr/local/bin/mysql

Running mysql.server start|stop|restart seems to function ok. Also accessing db via sequel pro works ok but when i tried to setup my rails projects i run rake db:create but i received

rake aborted! LoadError: dlopen(/Users/myuser/.rvm/gems/ruby-2.2.4/extensions/x86_64-darwin-14/2.2.0/mysql2-0.4.3/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/Cellar/mysql/5.5.19/lib/libmysqlclient.18.dylib Referenced from: /Users/myuser/.rvm/gems/ruby-2.2.4/extensions/x86_64-darwin-14/2.2.0/mysql2-0.4.3/mysql2/mysql2.bundle Reason: image not found - /Users/myuser/.rvm/gems/ruby-2.2.4/extensions/x86_64-darwin-14/2.2.0/mysql2-0.4.3/mysql2/mysql2.bundle

  • libmysqlclient.18.dylib doesnt exist in my setup, nor the directory ..Cellar/mysql/5.5.19/..
  • There is usr/local/Cellar/mysql/5.7.11/lib/
  • And there is libmysqlclient.dylib -> libmysqlclient.20.dylib but no ../libmysqlclient.18.dylib in my system.

In ~/.bash_profile there is export PATH=/usr/local/bin:$PATH

In ~/.bash_rc there

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting

and in ~/.zshrc there is

export PATH="/usr/local/sbin:$PATH"

Seems like i have messed up with my systems paths?