How to use MySQL in Ruby on Rails on Ubuntu?


Ruby on rails uses sqlite3 as a default database which is good for small application. If your project size is big, i.e. you need to handle large data throughout your project then MySQL database is a better option.

If your machine already has a MySQL, then there is no need to install it again. In case, if MySQL is not present in your local machine, you can install it through the following procedure:

Command for installing MySQL:

  1. update apt-get first in your machine
    sudo apt-get update
  2. next install mysql and it libraries
    sudo apt-get install mysql-server mysql-client libmysqlclient-dev*** Note: Durring installation, your local machine may ask the password for the root user
  3. next, you should run 2 more command below
    sudo mysql_install_db
    sudo mysql_secure_installation
  4. and finally, in your gemfile
    gem install mysql2

If you have MySQL already, please skip the above 4 points.

Now, open the terminal and type
> rails new app -d mysql
rails setup is created in your local machine
> cd app

open the database.yml
> nano config/database.yml

You will see the below code in your editor

# MySQL. Versions 5.1.10 and up are supported.
# Install the MySQL driver
# gem install mysql2
# Ensure the MySQL gem is defined in your Gemfile
# gem ‘mysql2’
# And be sure to use new-style password hashing:
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch(“RAILS_MAX_THREADS”) { 5 } %>
socket: /var/run/mysqld/mysqld.sockdevelopment:
<<: *default
database: activeadmin_development# Warning: The database defined as “test” will be erased and
# re-generated from your development database when you run “rake”.
# Do not set this db to the same as development or production.
<<: *default
database: activeadmin_test

# As with config/secrets.yml, you never want to store sensitive information,
# like your database password, in your source code. If your source code is
# ever seen by anyone, they now have access to your database.
# Instead, provide the password as a unix environment variable when you boot
# the app. Read
# for a full rundown on how to provide these environment variables in a
# production deployment.
# On Heroku and other platform providers, you may have a full connection URL
# available as an environment variable. For example:
# DATABASE_URL=”mysql2://myuser:mypass@localhost/somedatabase”
# You can use this database configuration with:
# production:
# url: <%= ENV[‘DATABASE_URL’] %>
<<: *default
database: activeadmin_production
username: activeadmin


Change the username and password and save the database.yml file.

> rake db:create

Open your phpmyadmin, you can see the database which is newly created.

Santanu Aich
Senior Software Engineer
Openweb Solutions