对于我的数据库(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 migrations
和seeding
来处理为应用程序的新实例创建数据库,但是使用标准应用程序配置,migrate
只能访问权限较低的帐户,因此根本无法创建/删除表。
当我运行
时,有没有办法覆盖database.php中配置的数据库用户/密码php artisan migrate:install
和其他迁移命令?也许某些命令行切换,这将允许我指定mydbadmin
用户和密码?或者甚至只是指向不同的数据库配置设置?
答案 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']