We'll setup MySQL so our application can connect to it. We need the following:
- A user
- A database
- To ensure the new user can connect to MySQL
Install
We'll first install MySQL, version 5.7, which comes out of the box on Ubuntu 16.04.
sudo apt-get install -y mysql-server
Then we can, optionally, run the following to help secure the installation of MySQL:
sudo mysql_secure_installation
Database and User
We are then ready to create a new database, a user, and setup the user's privileges on that database:
create database myapp charset utf8mb4;
create user myuser@'localhost' identified by 'secret';
grant all privileges on myapp.* to myuser@'localhost';
flush privileges;
This creates a new database with the utf8mb4
character set. Then it creates a new user who can only connect over localhost
, gives it a password of secret
and sets those user's privileges to be able to use and change database myapp
.
Finally we flush privileges to tell MySQL to re-cache its record of users and permissions in-memory.
Configure Laravel
All we need to do for Laravel is to edit the .env
file:
DB_CONNECTION=localhost
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=myapp
DB_USERNAME=myuser
DB_PASSWORD=secret
We can test that these work by setting up Laravel's auth scaffolding:
php artisan make:auth
php artisan migrate
If the migration works, then we're all set. We can test registering a user and ensure there's a new user in our database.
localhost vs 127.0.0.1, and users
The last part of the video shows the difference between logging in over localhost
and 127.0.0.1
- a Unix socket vs a TCP socket.
We then change MySQL's bind-address
to the local private network and see we can still log in over host localhost
but not 127.0.0.1
, since MySQL is no longer listening on the loopback interface network (127.0.0.1).