Laravel 迁移命令不适用于远程数据库

Laravel migrate command is not working for remote database

我正在使用 Laravel 4.2 框架开发一个项目。我想执行命令 php artisan migrate 但是当我 运行 这个命令时它显示错误:

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1142 CREATE command denied to user 'abc'@'10.1.1.27' for table 'migrations'

我想我已经将项目文件和数据库放在了不同的服务器上,所以这就是我收到此错误的原因。

数据库服务器:10.1.1.56

项目服务器:10.1.1.27(本地主机)

此错误表明远程 MySQL 数据库未配置为允许用户 abc 从 IP 地址 10.1.1.27[=35= 执行某些操作].在许多情况下,MySQL 用户被设置为允许从 与数据库服务器相同的 主机访问,但我们需要明确 GRANT access 客户端连接到来自远程主机的数据库。

我们可以使用以下命令授予用户 abc 从远程主机访问的权限。我们必须运行这些命令作为能够授予其他用户权限的用户(例如数据库的root用户):

GRANT ALL PRIVILEGES ON database.* TO 'abc'@'%';
FLUSH PRIVILEGES;

database替换为在.envconfig/database.php[中配置的应用程序数据库的名称=35=]。 'username'@'%' 中的通配符 '%' 表示我们要向来自 any IP 地址的用户授予权限。如果我们不想让用户从 任何 IP 地址访问,我们可以通过将通配符替换为允许的地址来限制对特定 IP 地址的访问(10.1 .1.27 在这种情况下)。

根据项目的需要,我们可能不需要授予用户对数据库的所有权限。请参阅 documentation 以获取我们可以分配的可用权限列表。

1142 CREATE command denied to user 'abc'@'10.1.1.27' for table 'migrations'

以上命令只是表示用户对连接的数据库没有CREATE权限。因此,首先您必须向该用户授予数据库权限,然后 运行 迁移。

解释:当你运行migrate时,在数据库中创建了一个名为migration的table保持迁移离子的状态,并且您没有 CREATE 权限,这就是它显示错误的原因。