Overriding Default Laravel database configuration for artisan migrate commands

断了今生、忘了曾经 提交于 2019-12-05 01:33:27

问题


For my database (MySQL), I have two user accounts, one (mydbuser) for general application access with select/inset/update/delete permissions on all tables, the other (mydbadmin) with privilege to manage tables, etc

CREATE USER 'mydbadmin'@'%' IDENTIFIED BY 'ultrasecret password';
GRANT ALL ON mydb.* TO 'mydbadmin'@'%';

CREATE USER 'mydbuser'@'%' IDENTIFIED BY 'not quite so secure password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'mydbuser'@'%';

My Laravel app is configured to use the mydbuser user, while mydbadmin is currently used for manually setting up the tables, etc.

Now, I want to start using Artisan migrations and seeding to handle creating the database for new instances of the application, but with the standard application configuration, migrate only has access to the lesser-privileged account, so can't actually create/drop the tables at all.

Is there a way of overriding the database user/password configured in database.php when I run

php artisan migrate:install

and other migrate commands? Some command line switch perhaps, that would allow me to specify the mydbadmin user and password? Or even just to point to a different database configuration setting?


回答1:


You may use:

php artisan migrate:install --database=seconddb

but you need to have defined this seconddb connection in your database.php config file. Of course running this command you will only create migrations table, nothing more, so if you want to make standard migration you need to use:

php artisan migrate --database=seconddb

and for seeding:

php artisan db:seed --database=seconddb

Example database.php file configuration:

'mysql' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'maindb',
    'username'  => 'root',
    'password'  => 'pass',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

'seconddb' => array(
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'otherdb',
    'username'  => 'user',
    'password'  => 'otherpass',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
),

And in case you need other information about paramters, you can always run --help argument for example:

php artisan migrate:install --help
php artisan migrate --help



回答2:


Would adding a new DB in the settings file help? Perhaps:

    # Slightly different database connection
    'mydbadmin' => array(
        'driver'    => 'mysql',
        'host'      => 'host1',
        'database'  => 'mydb',
        'username'  => 'mydbadmin',
        'password'  => 'ultrasecret password'
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
    ),

then specify that database within the CLI, e.g.

php artisan migrate:install --database['mydbadmin']


来源:https://stackoverflow.com/questions/26469370/overriding-default-laravel-database-configuration-for-artisan-migrate-commands

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!