覆盖artisan migrate命令的默认Laravel数据库配置

时间:2014-10-20 15:29:20

标签: php laravel migration artisan

对于我的数据库(MySQL),我有两个用户帐户,一个(mydbuser)用于一般应用程序访问,对所有表具有select / inset / update / delete权限,另一个(mydbadmin)有权管理表等

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'@'%';

我的Laravel应用程序配置为使用mydbuser用户,而mydbadmin当前用于手动设置表格等。

现在,我想开始使用Artisan migrationsseeding来处理为应用程序的新实例创建数据库,但是使用标准应用程序配置,migrate只能访问权限较低的帐户,因此根本无法创建/删除表。

当我运行

时,有没有办法覆盖database.php中配置的数据库用户/密码
php artisan migrate:install

和其他迁移命令?也许某些命令行切换,这将允许我指定mydbadmin用户和密码?或者甚至只是指向不同的数据库配置设置?

2 个答案:

答案 0 :(得分:8)

您可以使用:

php artisan migrate:install --database=seconddb

但您需要在seconddb配置文件中定义此database.php连接。当然,运行此命令只会创建migrations表,所以如果你想进行标准迁移,你需要使用:

php artisan migrate --database=seconddb

和播种:

php artisan db:seed --database=seconddb

示例database.php文件配置:

'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'    => '',
),

如果您需要有关参数的其他信息,您可以始终运行--help参数,例如:

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

答案 1 :(得分:2)

在设置文件中添加新数据库会有帮助吗?也许:

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

然后在CLI中指定该数据库,例如

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