对于我的数据库(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
目前用于手动设置表格等。
现在,我想开始使用Artisan migrations
和seeding
来处理为应用程序的新实例创建数据库,但使用标准应用程序配置,migrate
只能访问权限较小的帐户,因此根本无法创建/删除表。
当我运行时,有没有一种方法可以覆盖database.php中配置的数据库用户/密码
php artisan migrate:install
以及其他迁移命令?也许是一些命令行开关,允许我指定mydbadmin
用户和密码?或者仅仅指向不同的数据库配置设置?
您可以使用:
php artisan migrate:install --database=seconddb
但您需要在database.php
配置文件中定义此seconddb
连接。当然,运行这个命令只会创建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
在设置文件中添加一个新的DB会有帮助吗?也许:
# 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']