MySQL Improperly Configured Reason: unsafe use of relative path

nonamorando picture nonamorando · Jul 10, 2015 · Viewed 11.7k times · Source

I'm using Django, and when I run python manage.py runserver I receive the following error:

ImproperlyConfigured: Error loading MySQLdb module: dlopen(/Library/Python/2.7/site-packages/_mysql.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Library/Python/2.7/site-packages/_mysql.so
  Reason: unsafe use of relative rpath libmysqlclient.18.dylib in /Library/Python/2.7/site-packages/_mysql.so with restricted binary

I'm not entirely sure how to fix this. I have installed MySQL-python via pip. And I followed this step earlier.

I want to also point out this is with El Capitan Beta 3.

Answer

Greg Glockner picture Greg Glockner · Aug 5, 2015

In OS X El Capitan (10.11), Apple added System Integrity Protection.

This prevents programs in protected locations like /usr from calling a shared library that uses a relative reference to another shared library. In the case of _mysql.so, it contains a relative reference to the shared library libmysqlclient.18.dylib.

In the future, the shared library _mysql.so may be updated. Until then, you can force it to use an absolute reference via the install_name_tool utility.

Assuming that libmysqlclient.18.dylib is in /usr/local/mysql/lib/, then run the command:

sudo install_name_tool -change libmysqlclient.18.dylib \
  /usr/local/mysql/lib/libmysqlclient.18.dylib \
  /Library/Python/2.7/site-packages/_mysql.so