MySQL

MySQL is a very common database server. You can easily add it to your Lando app by adding an entry to the services key in your app's .lando.yml.

Supported versions

Be Careful Switching Database type, version or credentials

You should be careful switching database types, versions or credentials. In the case of type and version the underlying database files between these things may not be compatible. Ignoring this warning can cause your database service to not start correctly!!! In the case of credentials, these are set when the container is initially created so in order to change them you need to lando destroy && lando start. Note that lando destroy will delete all the data in your database.

You can read more about this here

Using patch versions

While Lando does not "officially" support specifying a patch version of this service you can try specifying one using overrides if you need to. This is not guaranteed to work so use at your own risk and take some care to make sure you are using a debian flavored patch version that also matches up with the major and minor versions of the service that we indicate above in "Supported versions".

Here are all the tags that are available for this service.

Here is an example of overriding the nginx service to use a patched version.

# The name of my app
name: patchversion

# Give me http://patchversion.lndo.site and https://patchversion.lndo.site
proxy:
  appserver:
    - patchversion.lndo.site

# Configure my services
services:

  # Create an nginx service called "appserver"
  appserver:

    # Set this to custom so we can override down the stream
    type: nginx:custom

    # SSL
    ssl: true

    # Override the image with the patch version
    # Note that this needs to be a correct namespace on the docker hub
    overrides:
      services:
        image: nginx:1.12.1

# Quick comamnd to check the nginx version
tooling:
  nginx:
    service: appserver

You can check out the full code for this example over here.

Example

# The name of the app
name: mysql

# Give me http://mysql.lndo.site and https://mysql.lndo.site
proxy:
  appserver:
    - mysql.lndo.site

# Set up my services
services:

  # Set up a basic webserver running the latest nginx with ssl turned on
  appserver:
    type: nginx
    ssl: true
    webroot: www

  # Spin up a mariadb container called "database"
  # NOTE: "database" is arbitrary, you could just as well call this "db" or "kanye"
  database:

    # Use the latest version of mysql
    type: mysql

    # Optionally forward out our port so we can access it at `localhost:someport`.
    # This port will change every time you restart this app
    #
    # You can also set this to a static port you want to use `portforward:3311`.
    # You will need to make sure the port is open and available
    portforward: true

    # Optionally change the default db credentials
    #
    # Note: You will need to `lando destroy && lando start` to change these if you've
    # already started your app
    # See: https://docs.devwithlando.io/tutorials/lando-info.html
    # creds:
      # user: mysql
      # password: mysql
      # database: mysql

    # Optionally load in all the mysql config files in the config directory
    # This is relative to the app root
    # NOTE: these files need to end in .cnf
    # config:
    #  confd: config

You will need to rebuild your app with lando rebuild to apply the changes to this file. You can check out the full code for this example over here.

Getting information

You can get connection and credential information about your database by running lando info from inside your app.

# Navigate to the app
cd /path/to/app

# Get info (app needs to be running to get this)
lando info

{
  "appserver": {
    "type": "nginx",
    "version": "latest",
    "urls": [
      "https://localhost:32808",
      "http://localhost:32809",
      "http://mysql.lndo.site",
      "https://mysql.lndo.site"
    ]
  },
  "db": {
    "type": "mysql",
    "version": "latest",
    "creds": {
      "user": "mysql",
      "password": "password",
      "database": "database"
    },
    "internal_connection": {
      "host": "db",
      "port": 3306
    },
    "external_connection": {
      "host": "localhost",
      "port": true
    }
  }
}

results matching ""

    No results matching ""