我正在使用php mysqli_connect
用于登录mysql数据库(全部在localhost上)
<?php
//DEFINE ('DB_USER', 'user2');
//DEFINE ('DB_PASSWORD', 'pass2');
DEFINE ('DB_USER', 'user1');
DEFINE ('DB_PASSWORD', 'pass1');
DEFINE ('DB_HOST', '127.0.0.1');
DEFINE ('DB_NAME', 'dbname');
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if(!$dbc){
die('error connecting to database');
}
?>
这是mysql.user表:
mysql服务器ini文件:
[mysqld]
# The default authentication plugin to be used when connecting to the server
default_authentication_plugin=caching_sha2_password
# default_authentication_plugin=mysql_native_password
与 caching_sha2_password
在mysql服务器ini文件中,根本不可能使用user1或user2登录;
错误:mysqli \u connect():服务器请求的身份验证方法对客户端[缓存\u sha2 \u密码]未知。。。
与 mysql_native_password
在mysql server ini文件中,可以使用user1登录,但是使用user2,同样的错误;
如何使用登录 caching_sha2_password
在mysql服务器上?
11条答案
按热度按时间9vw9lbht1#
像许多人一样,我也有同样的问题。虽然用户被设置为使用mysql\u native\u密码,并且我可以从命令行连接,但是我要让mysqli()连接的唯一方法是添加
默认身份验证插件=mysql\u native\u password
在我的ubuntu 19.10安装程序中,/etc/mysql/mysql.conf.d/mysqld.cnf的[mysqld]部分
oxcyiej72#
它为我工作(PHP5.6+pdo/mysql server 8.0/Windows7 64位)
编辑文件
C:\ProgramData\MySQL\MySQL Server 8.0\my.ini
:在windows和mysql shell中重置mysql服务。。。
qij5mzcb3#
如果你用的是mac电脑,下面是解决方法。这是经过无数次的尝试和错误之后。希望这对其他人有帮助。。
调试:
分辨率:nano/usr/local/etc/my.cnf
添加:default authentication plugin=mysql\u native\u password
最后运行:brew服务重新启动mysql
jq6vz3qz4#
删除后面的引号(')
ALTER USER
并在后面加引号(')mysql_native_password BY
它对我也很有用。62lalag45#
从php7.4开始,这不再是一个问题。支持
caching_sha2
身份验证方法已添加到mysqlnd。目前,php mysqli扩展不支持新的缓存sha2身份验证特性。你必须等到他们发布更新。
查看mysql开发者的相关帖子:https://mysqlserverteam.com/upgrading-to-mysql-8-0-default-authentication-plugin-considerations/
他们没有提到pdo,也许你应该试着和pdo联系。
w41d8nur6#
我在Ubuntu18.04中尝试过这一点,这是唯一对我有效的解决方案:
svdrlsy47#
我执行了以下命令
ALTER USER 'root' @ 'localhost' identified with mysql_native_password BY 'root123';
最后在本地服务中重新启动mysql。uurity8g8#
现在您可以升级到php7.4,mysql也将随之升级
caching_sha2_password
默认情况下,默认mysql安装将与mysqli_connect
不需要配置。bprjcwpo9#
我通过sql命令解决这个问题:
引用的https://dev.mysql.com/doc/refman/8.0/en/alter-user.html
如果您正在创建新用户
引用的https://dev.mysql.com/doc/refman/8.0/en/create-user.html
这对我有用
pbpqsu0x10#
我觉得配置mysql服务器没有缓存sha2密码加密是没有用的,我们要想办法通过网络发布、发送或者获取安全的信息。正如您在下面的代码中看到的,我没有使用变量$db\u name,我使用的是mysql服务器中的一个用户的standar配置密码。只需创建一个标准用户密码并配置所有权限。它是有效的,但是我说的不严肃。
30byixjq11#
如果你在windows上,无法使用
caching_sha2_password
总之,您可以执行以下操作:重新运行mysql安装程序
选择mysql服务器旁边的“重新配置”(最上面的项)
单击“下一步”直到进入“身份验证方法”
将“use strong password encryption for authentication(recommended)”更改为“use legacy authentication method(retain MySQL5.x compatibility)”
单击“下一步”
在“帐户和角色”中输入根帐户密码,然后单击“检查”
单击“下一步”
一直单击“下一步”,直到进入“应用配置”
点击“执行”
安装程序将为您进行所需的所有配置更改。