在生产服务器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
这可以登录到本地主机
我的网站有什么问题,请问有人可以帮助我吗?
答案 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守护程序。
希望对您有帮助!