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

时间:2017-11-17 10:09:21

标签: php mysql laravel-4.2

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

  

[PDOException]
      SQLSTATE [42000]:语法错误或访问冲突:1142 CREATE命令被拒绝给用户' abc' @' 10.1.1.27'表格'迁移'

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

数据库服务器:10.1.1.56

项目服务器:10.1.1.27(localhost)

2 个答案:

答案 0 :(得分:7)

此错误表示远程MySQL数据库未配置为允许用户import React from 'react'; // import {connect} from 'react-redux' export class Home extends React.Component { render(){ console.log(this.props) return ( <div>Working</div> ) } } import * as React from 'react' import * as ReactDOM from 'react-dom'; import {Home} from './Components/Home.component' class App extends React.Component<any,any>{ render(){ return( <Home value="abc" /> ) } } ReactDOM.render( <App />, window.document.getElementById("app")) 从IP地址 10.1.1.27 执行某些操作。在许多情况下,MySQL用户被设置为允许从相同的主机访问数据库服务器,但我们需要显式GRANT access用于从远程主机连接到数据库的客户端。

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

abc

GRANT ALL PRIVILEGES ON database.* TO 'abc'@'%'; FLUSH PRIVILEGES; 替换为在 .env config / database.php 中配置的应用程序数据库的名称。 database中的通配符'%'表示我们要从任何 IP地址向该用户授予权限。如果我们不想允许用户从任何 IP地址进行访问,我们可以通过将通配符替换为允许的地址来限制对特定IP地址的访问( 10.1.1.27 在这种情况下)。

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

答案 1 :(得分:0)

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

上述命令仅表示用户对连接的数据库没有CREATE权限。首先,您必须在数据库上为该用户授予权限,然后运行迁移。

说明:当您运行migrate时,会在数据库中创建一个名为migration的表,该表保持迁移状态,并且您不需要&# 39; r拥有CREATE权限,这就是显示错误的原因。