4

对于我的数据库 (MySQL),我有两个用户帐户,一个 ( mydbuser) 用于一般应用程序访问,对所有表具有选择/插入/更新/删除权限,另一个 ( 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当前用于手动设置表等。

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

有没有办法在我运行时覆盖在 database.php 中配置的数据库用户/密码

php artisan migrate:install

和其他迁移命令?也许是一些命令行开关,可以让我指定mydbadmin用户和密码?甚至只是指向不同的数据库配置设置?

4

2 回答 2

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
于 2014-10-20T15:40:16.470 回答
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']
于 2014-10-20T15:39:54.153 回答