数据库未在生产环境上连接

时间:2019-10-26 07:50:52

标签: php mysql nginx production-environment

在生产服务器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

这可以登录到本地主机

我的网站有什么问题,请问有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

您必须在数据库中为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守护程序。

希望对您有帮助!