Django MySQL Database Tutorial

With this tutorial, you will have a Django project connected and fully working with a MySQL database in just a few minutes.

 

Install MySQL

The first step is to install MySQL on your machine. If you are using Linux/Ubuntu use the following commands to update the system then install the mysql-server package:

 

sudo apt update
sudo apt install mysql-server

 

To install MySQL on macOS, use the Brew package manager like this:

 

brew install mysql

 

Then enable it like this:

 

brew services start mysql

 

The final step is to secure the MySQL installation:

 

mysql_secure_installation

 

Follow the instructions and select the level of security you want.

 

Note – the above step is optional but highly recommended.

 

Install Mysql Python Client

Python needs the mysqlclient package so that it can communicate with your MySQL server. Make sure you are using the same version of Python Django is using and use the pip package manager to install it like this:

 

pip install mysqlclient

 

If you get an error you might need to install libmysqlclient-dev which you can do with the following command:

 

sudo apt install libmysqlclient-dev

 

Configure a MySQL Database, User and Grant Privileges

Now login to MySQL as the root user like this, supplying the password created earlier when prompted:

 

mysql -u root -p

 

Now create a database with the following command, replacing exampledb with the name of the database to create:

 

CREATE DATABASE exampledb DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

 

Now create a new MySQL user with the following command, replacing newuser and user_password:

 

CREATE USER 'newuser'@'localhost' IDENTIFIED BY 'user_password';

 

Next, grant all privileges for the new user to the new database:

 

GRANT ALL PRIVILEGES ON database_name.* TO 'database_user'@'localhost';

 

Configure Django to Connect to MySQL

Open the settings.py file in the root of your project, locate to the DATABASES variable, comment it out and add the following code replacing the settings with the ones you just configured:

 

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',
       'NAME': 'you_db',
       'HOST': '127.0.0.1',
       'PORT': '3306',
       'USER': 'your_user',
       'PASSWORD': 'password',
   }
}

 

Migrate Django Tables

The next step is to migrate your Django tables to the MySQL database. cd to the root of your project and run the following command:

 

python manage.py migrate

 

Create Django Admin Superuser

The final step is to create a new superuser so that you can login to the Django admin panel

 

python manage.py createsuperuser

 

That's it! Your Django project is now running with an SQL database.

django mysql