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
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:
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
Finally we flush privileges to tell MySQL to re-cache its record of users and permissions in-memory.
All we need to do for Laravel is to edit the
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
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).