# [le-store-sequelize][1] > A database-driven Greenlock storage plugin with wildcard support. ## Usage To use, provide this Greenlock storage plugin as the `store` attribute when you invoke `create`. ```js var store = require('le-store-sequelize'); var gl = greenlock.create({ store, approveDomains, ... }); ``` ## Wildcards & AltNames Working with wildcards and multiple altnames requires Greenlock `>= v2.7`. To do so you must set `opts.subject` and `opts.domains` within the `approvedomains()` callback. `subject` refers to "the subject of the ssl certificate" as opposed to `domain` which indicates "the domain servername used in the current request". For single-domain certificates they're always the same, but for multiple-domain certificates `subject` must be the name no matter what `domain` is receiving a request. `subject` is used as part of the name of the file storage path where the certificate will be saved (or retrieved). `domains` should be the list of "altnames" on the certificate, which should include the `subject`. ## Example ```javascript function approveDomains() { } ``` ## Out of the box... it just works ```javascript // TODO ``` ## Sequelize Options Without `config.dbOptions`, the baked-in sequelize object uses sqlite3 with default options. If `config.dbOptions` is provided, you can configure the database connection per the Sequelize documentation. ```javascript var store = require('le-store-sequelize')({ dbConfig: { username: 'mysqluser', password: 'mysqlpassword', database: 'mysqldatabase, host: '127.0.0.1', dialect: 'mysql' } }); greenlock.create({ store ... }); ``` The database can also be configured using an env variable. ```javascript var store = require('le-store-sequelize')({ dbConfig: { use_env_variable: 'DB_URL' } }); ``` ## Provide Your Own Database Object You can provide your own database object if you wish. It might not even need to be Sequelize as long as it supports the same methods and argument objects as are used. [1]: https://www.npmjs.com/package/le-store-sequelize