【问题标题】:Laravel 4 - MySQL User Configuration for ProductionLaravel 4 - 用于生产的 MySQL 用户配置
【发布时间】:2015-01-30 03:37:56
【问题描述】:

我一直在对 Laravel 4 框架进行大量研究,想知道人们如何为生产应用程序配置数据库用户权限。

在我阅读的所有文档中,都显示使用具有 root 权限的 root。生产应用程序是否使用他们的 mySQL root 登录?如果没有,该用户被授予什么权限?

我尝试创建一个数据库用户“dev-app”,该用户对应用程序使用的数据库具有架构权限,允许所有对象和 DDL 权限。不幸的是,当我运行“php artisan migrate”时,我收到“拒绝用户访问”错误消息。

在我简单地将所有权限授予该用户并继续编码之前,我只想知道如何在数据库中正确设置这些用户。

谢谢

【问题讨论】:

  • 你是FLUSH PRIVILEGES还是重启mysql更好?
  • 请参阅 MySQL 的 "Causes of Access-Denied Errors" 了解潜在原因的完整列表。 Laravel 的 CLI 可能需要它正在修改的数据库的 ALL 权限。
  • @tacone 我没有FLUSH PRIVILEGES 或重启mysql。每次添加或更改用户时都需要这样做吗?
  • 是的,据我所知,您总是需要FLUSH PRIVILEGES
  • @tacone 我正在使用 MySQL Workbench 进行数据库管理,所以我猜测该工具会在更改用户权限时自动运行刷新。

标签: php mysql database laravel-4


【解决方案1】:

这是一个适合修改和粘贴到 MySQL 5 命令提示符的命令行。

GRANT CREATE TEMPORARY TABLES, DELETE, EXECUTE, INSERT, LOCK TABLES, SELECT, UPDATE ON databasename.* TO 'username'@'localhost' IDENTIFIED BY 'password'

对于迁移用户,稍微大一点的网站: GRANT ALTER, CREATE, CREATE TEMPORARY TABLES, DELETE, DROP, INDEX, INSERT, LOCK TABLES, REFERENCES, SELECT, UPDATE ON databasename.* TO 'username'@'localhost' IDENTIFIED BY 'password'

修改位置:

'databasename' 是您的数据库的名称 'username' 是您的 MySQL 帐户的用户名 'localhost' 是安装 Laravel 的服务器主机 'password' 是该用户名所需的密码

在 MySQL 8 上,这必须分为 2 个步骤,一个用于创建用户,一个用于授予权限。

一般来说,最好限制允许的权限,所以这个列表比以前的一些答案要小。如果/当我发现需要更多功能的 Laravel 代码时,我计划更新它。

【讨论】:

    【解决方案2】:

    我通常在 Laravel 配置中有两个用户帐户和对应的两个数据库连接。

    第一个(默认)帐户具有最小权限:

    第二个账号用于迁移,配置如下:

    并在迁移期间使用如下:

      php artisan migrate --database=migrateconn
    

    因此,出于安全原因,您的 Web 应用程序用户将拥有最低权限,并且仅对于部署任务,您应该使用提升的用户帐户。

    【讨论】:

      【解决方案3】:

      我重新创建了用户并添加了 Laravel 数据库可用的所有权限,一切似乎都可以正常工作。感谢所有提示和 cmets。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-04
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多