【问题标题】:Database doesn't connected on production environment数据库未连接到生产环境
【发布时间】:2019-10-26 07:50:52
【问题描述】:

在生产服务器digitalocean的Ubuntu 18.04上设置

生产构建-dist
php fpm php7.2 , mysql-server 5.7 , nginx , root@prod

首先我根据这个网站在 Ubuntu droplet 上安装了 mysql-server。 https://support.rackspace.com/how-to/installing-mysql-server-on-ubuntu/

root 是我的 droplet 用户名,每当我在终端上键入 mysql 时,它只会提示而不询问任何密码到 mysql shell

在我的 env.php 文件中,我提到了这样的数据库连接

<?php
    $mysql_hostname = "localhost";
    $mysql_user = "root";
    $mysql_password = "123qwer";
    $mysql_database = "xp";
    $mysql_port="3306"; 


 $conn = mysqli_connect($mysql_hostname, $mysql_user,
    $mysql_password, $mysql_database,$mysql_port);


if (mysqli_connect_errno()) {
    echo "Failed to connect to database: " . mysqli_connect_error();
}

之后,我将我的生产版本部署到适当的 nginx 服务根目录,它正在为我的网站提供服务,但是当我在检查浏览器下检查我的数据库连接时,我可以看到这个错误

Failed to connect to database: Access denied for user 'root'@'localhost'

但是当我在我的 Ubuntu 服务器上尝试这个时

ssh root@localhost , 密码 - 123qwer

这样就可以登录localhost了

我的网站有什么问题,谁能帮帮我?

【问题讨论】:

    标签: php mysql nginx production-environment


    【解决方案1】:

    您必须在您的数据库中为 root@localhost 创建用户并为其添加读/写访问权限。

    在您的服务器上使用 mysql shell。 sudo 应该被使用。 登录:

    mysql -u root -p
    

    如果会要求输入密码。

    命令: 如果用户不存在,您可以创建或替换。如果您不知道其密码,也可以更改它(如果存在)。我猜它存在,所以你可以跳过这一步。

    CREATE OR REPLACE USER 'root'@'localhost'
      IDENTIFIED BY 'password';
    

    为所有数据库添加权限。您也可以添加一个特定的。

    GRANT ALL ON *.* TO 'root'@'localhost' WITH GRANT OPTION;
    

    我有 Mariadb,可能有点不同。如果上述方法不起作用,您可以将其用于 mysql。

    GRANT ALL PRIVILEGES ON database_name.* TO 'root'@'localhost';
    

    我不记得是否应该重新启动 mysql 守护进程。

    希望对你有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      • 2013-04-04
      • 2023-02-08
      相关资源
      最近更新 更多