![无法使用 AWS 实例(LEMP)上的 php 脚本连接到 mysql 数据库](https://linux22.com/image/742173/%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%20AWS%20%E5%AE%9E%E4%BE%8B%EF%BC%88LEMP%EF%BC%89%E4%B8%8A%E7%9A%84%20php%20%E8%84%9A%E6%9C%AC%E8%BF%9E%E6%8E%A5%E5%88%B0%20mysql%20%E6%95%B0%E6%8D%AE%E5%BA%93.png)
我正在学习 AWS EC2 来托管基于 WordPress、Laravel 和自定义 PHP 脚本制作的网站。
我创建了一个 t2.small 实例,以 ubuntu 18.04 作为我的操作系统。
然后我阅读了教程并安装了最新版本的 Ngnix 服务器、MySQL 8 和 PHP 7.3。我能够配置它们,并且一切正常。
然后我创建了一个新的 MySQL 用户和数据库。授予该用户对数据库的所有权限,并通过 SSH 使用命令行对其进行检查。一切正常。
我在 nginx 中创建了一个新的服务器块并配置了我的域,迁移了网站(WordPress)。在 中更改了数据库用户名、密码(我创建的密码)wp-config.php
。但是当我访问我的域时,我得到了
Error establishing a database connection
我仔细检查了数据库详细信息和设置,一切正常。那么为什么 PHP 脚本无法连接数据库?我遗漏了什么吗?我想我不需要打开端口 3306?由于我的数据库主机是localhost
,我不需要打开它,对吗?
答案1
好的,问题似乎只出在MySQL 8
。
我能够通过参考以下答案来解决问题 -堆栈溢出
基本上,在为数据库创建用户时运行以下命令
CREATE USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
而不是这个
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
如果用户已经存在,运行以下命令
ALTER USER 'username'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
希望这对其他人有帮助。