最近、MariaDBが人気です。 mysqlからの派生で、mysqlに比べてパフォーマンスが良いとかなんとか。

詳しくはこちらなどを参考に。 MariaDBとは

githubでも公開されてます。 github - MariaDB

さてさて、homesteadを使った開発環境構築で、MariaDB使うにはどうしたらいいかと言いますと、 公式サイトにやり方が書いてあるので、それに沿って設定してupするだけです。

Laravel 5.4 Laravel Homestead

前提条件

vagrantなどはインストールしてあるものとします。 筆者はmacOSで環境構築をしました。

vagrant

構築手順

構築手順は、過去記事のこちらなども参考にしてください。 laravel + homestead + xdebugの開発環境構築手順

プロジェクトディレクトリ作成

$ mkdir sample_project
$ cd sample_project

ダウンロード&初期化

$ vagrant box add laravel/homestead
$ git clone https://github.com/laravel/homestead.git ./
$ bash init.sh

Homestead.yamlの編集

---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
mariadb: true

authorize: ~/.ssh/id_rsa.pub

mariadbをtrueにします。

起動

$ vagrant up

mariadbへログインしてみる。

$ vagrant ssh
vagrant@homestead:~/code$ mysql -u homestead -p homestead
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 44
Server version: 10.2.15-MariaDB-10.2.15+maria~xenial-log mariadb.org binary distribution

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [homestead]>

ログインできました! .envのDB設定を同じにして、laravelのmigrateもいけます。

環境構築時、こんなエラーにひかかってしまいました。

migrateを実行したら、

エラー画面

vagrant@homestead:~/code$ php artisan migrate
   Illuminate\Database\QueryException  : SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution (SQL: create table `migrations` (`id` int unsigned not null auto_increment primary key, `migration` varchar(255) not null, `batch` int not null) default character set utf8mb4 collate 'utf8mb4_unicode_ci')

  at /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Database/Connection.php:664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("PDO::__construct(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution")
      /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68

  2   PDO::__construct("mysql:host=mariadb;port=3306;dbname=homestead", "homestead", "secret", [])
      /home/vagrant/code/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:68

  Please use the argument -v to see more details.
vagrant@homestead:~/code$

対策

単純に.envの設定が違ったので、正しい値に修正。

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=XXXXXXXXXXXX

再度実行

vagrant@homestead:~/code$ php artisan config:cache
Configuration cache cleared!
Configuration cached successfully!
vagrant@homestead:~/code$ php artisan migrat
Migration table created successfully.
vagrant@homestead:~/code$

通った、よかった。