首次安装Magento 2时遭遇OpenSearch连接401验证错误的求助
嗨,我来帮你排查这个问题!你遇到的401错误是身份验证失败导致的,结合你的情况,主要有几个方向可以尝试修复:
1. 检查Elasticsearch的安全配置
Elasticsearch 8.x默认开启了安全认证(包括用户名密码验证、HTTPS),如果你的本地Elasticsearch没有关闭安全功能,Magento连接时就会因为缺少凭证而返回401错误。
你可以先确认Elasticsearch的安全状态:
- 打开Elasticsearch的配置文件(
config/elasticsearch.yml),查看以下参数:xpack.security.enabled:如果值是true,说明开启了安全验证xpack.security.transport.ssl.enabled:如果是true,说明启用了HTTPS
如果开启了安全验证,你需要在Magento的安装命令中添加Elasticsearch的用户名和密码参数:
php bin/magento setup:install --base-url="http://magento2.magento.com" --db-host="localhost" --db-name="magento2" --db-user="magento2" --db-password="magento2" --admin-firstname="admin" --admin-lastname="admin" --admin-email="user@example.com" --admin-user="admin" --admin-password="Admin@123456" --language="en_US" --currency="USD" --timezone="America/Chicago" --use-rewrites="1" --backend-frontname="admin" --search-engine=elasticsearch8 --elasticsearch-host="localhost" --elasticsearch-port=9200 --elasticsearch-username="elastic" --elasticsearch-password="你的Elasticsearch密码"
注:Elasticsearch 8.x默认的用户名是
elastic,初始密码在你首次启动Elasticsearch时会输出到控制台,也可以通过bin/elasticsearch-reset-password命令重置。
2. 修正Elasticsearch主机地址
你当前命令里写的是--elasticsearch-host="es1:9200",但你的Elasticsearch是本地安装的(和XAMPP同机器),应该把主机地址改成localhost或者127.0.0.1,否则Magento找不到对应的搜索服务。
3. 暂时关闭Elasticsearch安全验证(仅用于本地测试)
如果你只是在本地环境测试安装,不想配置安全认证,可以临时关闭Elasticsearch的安全功能:
- 编辑Elasticsearch的
config/elasticsearch.yml文件 - 修改或添加以下参数:
xpack.security.enabled: false xpack.security.transport.ssl.enabled: false - 重启Elasticsearch服务
- 重新运行Magento的安装命令(去掉用户名密码参数,主机改为localhost)
4. 确认Elasticsearch和Magento的版本兼容性
Magento 2对Elasticsearch版本有严格的兼容性要求,你用的是Elasticsearch 8.10.3,需要确认你安装的Magento版本是否支持这个版本的Elasticsearch。比如Magento 2.4.6及以上版本才支持Elasticsearch 8.x,如果你的Magento版本较低,可能需要降级Elasticsearch或者升级Magento。
尝试以上方法后,应该就能解决这个401验证错误了,如果还有问题可以再补充更多细节哦!
备注:内容来源于stack exchange,提问作者Prathima

