Can't install mysql2 gem on macOS Sierra

MysqlRubyMacosRubygemsMacos Sierra

Mysql Problem Overview


I'm setting up my development environment in the new macOS Sierra .

First of all, I installed Rbenv, Ruby (2.3.1), Homebrew and so the latest version of MySQL (5.7.15).

$ brew install mysql
$ mysql.server start

Ok, MySQL was initialized. Time to install the mysql2 gem...

$ gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config

But it didn't work. 


Building native extensions with: '--with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config'
This could take a while...
ERROR:  Error installing mysql2:
	ERROR: Failed to build gem native extension.

    current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
/Users/macuser/.rbenv/versions/2.3.1/bin/ruby -r ./siteconf20160921-16853-x1boio.rb extconf.rb --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
-----
Using mysql_config at /usr/local/Cellar/mysql/5.7.15/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Dont know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/Cellar/mysql/5.7.15/lib
-----
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0-static/mysql2-0.4.4/mkmf.log

current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2
make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
compiling statement.c
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4 for inspection.
Results logged to /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0-static/mysql2-0.4.4/gem_make.out

Mysql Solutions


Solution 1 - Mysql

I just had the same problem, tried all of the solutions listed above, then commenced to bang my head against they keyboard for a couple of hours.

I then thought to try and install/reinstall the Xcode Command Line Tools:

xcode-select --install

Once I did that the mysql2 gem installed w/ no problems. I hope that does the trick!

Solution 2 - Mysql

When you install openssl via brew, you should get the following message:

> Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

> Generally there are no consequences of this for you. If you build your own software and it requires this formula, you'll need to add to your build variables:

> LDFLAGS: -L/usr/local/opt/openssl/lib
> CPPFLAGS: -I/usr/local/opt/openssl/include
> PKG_CONFIG_PATH: /usr/local/opt/openssl/lib/pkgconfig

You can set these build flags (for the local application) by running the following:

bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"

This worked for me.

See bundler's documentation for more information.

Solution 3 - Mysql

Lots of great answers, I was able to combine them into this:

gem install mysql2 --source 'https://rubygems.org/' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

because I was not comfortable with bundle config

Solution 4 - Mysql

I am here to share my fix, since the other answers didn't work.

For my environment, I need MySQL 5.6 so I had to use:

brew install mysql56 instead of brew install mysql

Bundle installing the mysql2 gem kept failing, until:

brew link mysql56

I also ran afterwards:

mysql.server start

The last step might be unnecessary, but just in case.

Solution 5 - Mysql

With Mac OS 10.15 Catalina when I tried Alessandro's fix the gem and extensions could be installed correctly but bundle install failed. What worked was just:

bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"

without the cppflags part.

Solution 6 - Mysql

Here's what worked for me.

Originally I ran:

$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"

then

$ bundle install

I received an error in /Users/.../.bundle/ruby/2.5.0/extensions/x86_64-darwin-18/2.5.0/mysql2-0.5.3/mkmf.log :

clang: error: unsupported option '--with-cppflags=-I/usr/local/opt/openssl/include'

So I removed "--with-cppflags=-I/usr/local/opt/openssl/include"

Then ran:

$ bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"

followed by:

$ bundle install

Which worked.

Solution 7 - Mysql

Almost the same scenario as @Caio Tarifa, Ruby 2.3.3, mysql 5.6 and mysql2. Tried on couple of solutions above and finally make it work with @kylekeesling's approach.

First, tried on solution 1 by @spickermann:

brew reinstall openssl && brew link openssl --force

Nothing happened, same error shown.

Second, tried on solution by @Alessandro Berardi:

bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"

This got different but more errors since it overwrite gem extension's config so all gem extension installation failed.

Finally, tried on @kylekeesling solution:

xcode-select --install

It fix mysql gem issue as well as nikogiri. Since I already intall Xcode, in my case it's reinstall the Xcode Command Line Tools.

Solution 8 - Mysql

Try installing xcode-select --install

Solution 9 - Mysql

So I ran into this similar issue and for me it turned out to be a wrong ruby version and incompatible MySQL version. I use ruby 2.3 on most of my projects but inherited a 2.1 project. Changing to rvm to use 2.1 got me a little further.

Then I found this: https://github.com/brianmario/mysql2/issues/603 that said you had to use mysql2 gem version greater than 0.3.17 with MySQL version 5.7

Updated gem to 0.3.17 and it fired right up. Hope this helps someone.

Solution 10 - Mysql

If none of the above works .. like in my case, doing this solved the issue brew install openssl

FYI: i am using MacOS Catalina

Solution 11 - Mysql

So I tried everything here to no avail. Seems like a problem with ruby 2.6.0, I downgraded to 2.3.4p301 and everything worked fine (with bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include")

Solution 12 - Mysql

First, you should try 2 answer in here If you installed openssl but it still don't work. You should try to o refresh gems reference. A got the same issue and it worked for me.

gem source -r https://rubygems.org/

gem source -a https://rubygems.org/

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionCaio TarifaView Question on Stackoverflow
Solution 1 - MysqlkylekeeslingView Answer on Stackoverflow
Solution 2 - MysqlAlessandro BerardiView Answer on Stackoverflow
Solution 3 - MysqlYoav EpsteinView Answer on Stackoverflow
Solution 4 - MysqlStuart HannigView Answer on Stackoverflow
Solution 5 - MysqlFed CView Answer on Stackoverflow
Solution 6 - MysqlCodecodeView Answer on Stackoverflow
Solution 7 - MysqlB LiuView Answer on Stackoverflow
Solution 8 - MysqlBloombergView Answer on Stackoverflow
Solution 9 - MysqlPaulissimoView Answer on Stackoverflow
Solution 10 - MysqlEbram SherifView Answer on Stackoverflow
Solution 11 - MysqlGregory RayView Answer on Stackoverflow
Solution 12 - MysqlTakavostView Answer on Stackoverflow