Connecting to MySQL from Python in MacOS is a very problematic and painful process. In this post, we are going to see how to install MySQL and connect a Python application to it using mysqlclient.
You need to install Homebrew in you local machine. You can do it by:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Using Homebrew you can install mysql simply by:
brew install mysql
Then setup the credentials in MySQL server using the following command:
Finally if you want to start at login and as a background service, run this:
brew services start mysql
For connecting any other application to MySQL, you need to install a connector. You can do it like this:
brew install mysql-connector-c
You can do this by:
Please run the following command:
brew install openssl
Then add its path to environment using following line:
You need to unlink mysql and link mysql-connector-c:
brew unlink mysql brew link --overwrite mysql-connector-c --force
You should be able to use
pip install mysqlclient without any errors.
Now, you need to do the opposite of Step six:
brew unlink mysql-connector-c brew link --overwrite mysql
mysqlclient should work fine and will have no problem connecting your application from mysql to python.
if you have mysqlclient installed in the system, then you can use
--system-site-packages when creating virtual environment:
python3 -m venv venv_name --system-site-packages
virtualenv venv_name --system-site-packages
But, if you do not want to include all the system packages, and you still face error installing
mysqlclient in virtual environment, then try following steps:
source venv/bin/activate brew unlink mysql brew link --overwrite mysql-connector-c pip install mysqlclient brew unlink mysql-connector-c brew link --overwrite mysql
In this article, we have seen installing MySQL from Homebrew. I never used MySQL installed from Oracle website, so don’t know how to fix it. Better if you uninstall that and install MySQL from scratch using Homebrew.
If you like this article, you can buy me a coffee. Thanks!
Last updated: Aug 30, 2023