PHP无法连接MySQL8.0数据库问题处理 报错如下:SQLSTATE[HY000] [2054]

我记得上次在内部调试一个旧项目时,我不断遇到连接数据库的问题。
看到屏幕上的 SQLSTATE[HY000][2 05 4 ] 行让我很头疼。
当时,系统运行的是MySQL 8 .0,开发机器运行的是PHP 5 .6 我一连接,就报告了一个错误,表明客户端不明白如何验证密码。
我检查了日志,发现一个新插件 caching_sha2 _password 导致了该问题。

虽然方法一确实简单易行,但是升级PHP并不是一朝一夕就能完成的事情。
我们团队的生产环境必须使用PHP5 .6 ,因为老客户拒绝升级。
于是,方法2 就成了救命稻草。
在服务器上工作时,我记得首先将 default-authentication-plugin=mysql_native_password 添加到 /etc/my.cnf 中,然后输入 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'new_strong_password';在 MySQL 命令行窗口中。
输入回车并等待几秒钟后,数据库服务重新启动,并且使用旧版本的 PHP 连接顺利。

等等,还有一件事。
当我更换插件时,我发现MySQL8 的密码策略也被改变了。
以前使用PHPMyAdmin修改密码时,只需输入1 2 3 4 5 6 ,但现在直接报错。
我记得在测试时我收到一条消息说“密码不符合强度要求”,我在添加一些大写字母和数字后第一次就通过了。
这提醒我们,将插件恢复到旧的方式可能会暂时解决问题,但从长远来看我们仍然需要适应MySQL8 的新规则。

看来目前的PHP7 .4 已经支持caching_sha2 _password了,但是升级旧系统是一个很大的工程。
您遇到过类似的情况吗?自从更换插件后,您有没有注意到任何奇怪的现象?

初学mysql,哪个版本比较好

如果直接使用mariadb,它是免费且稳定的。
使用方式和mysql一样,不需要分3 2 位和6 4 位。
我选择这个项目是因为我上周在做这个项目。
你选择什么并不重要。
无论如何,它是免费的。

MySQL for Windows 安装指南

哈,你问如何在Windows上安装MySQL?上次我帮同事做了,我带你完成步骤,但是你需要注意版本和细节,不要出错。

2 02 3 年我帮朋友在北京成立的时候,主要遵循了以下流程:
1 .下载安装包 首先,进入MySQL官方下载页面:[此页面](https://dev.mysql.com/downloads/file/?id=4 9 4 9 9 3 )。
不要拐弯抹角,只需单击“不,谢谢,开始下载”。
我当时选择的是mysql-8 .0.2 0-winx6 4 .zip,也就是选择的Windows 6 4 位系统。
对于3 2 位系统,选择对应的。
不要弄错版本。

2 解压并配置文件 将下载的包解压到你想要的位置,如D:\develop_study MySQL\mysql-8 .0.2 0-winx6 4 解压后,在根目录下新建my.ini文件。
这里面的内容比较难(记得把路径改成你的安装目录); 在 [mysqld] 端口=3 3 06 basedir=D:\develop_study MySQL\mysql-8 .0.2 0-winx6 4 datadir=D:\develop_study\MySQL\mysql-8 .0.2 0-winx6 4 \data 最大连接数=2 00 最大连接错误数 = 1 0 服务器字符集 = utf8 默认存储机器=INNODB default_authentication_plugin=mysql_native_password
[mysql] 默认字符集=utf8
[客户端] 端口=3 3 06 默认行为集 = utf8 这是一个重要的部分。
如果途中出错,以后就无法开始。

3 设置重要变量 这很容易被原谅。
右键单击“此电脑”→“属性”→“高级系统选项”→“环境变量”。
在“系统变量”中找到该路径,单击“编辑”,并将路径添加到您的MySQL bin目录(例如D:\develop_study MySQL\mysql-8 .0.2 0-winx6 4 \bin)。
除了这些之外,最好重新启动电脑或者重新启动CMD才能生效。

4 初始化服务和安装 此步骤需要以管理员身份打开CMD。
执行这两个命令(我推荐第一个,忽略初始化); 羞愧 mysqld --initialize-insecure --user = mysql 如果正常,将显示服务安装成功。
注意!不要使用 mysqld --initialize --console,这会生成随机密码并导致以后难以打开。
我就陷入了这个陷阱,花了半天时间才找到票。

5 启动MySQL服务 CMD中的判断: 羞愧 启动 mysql 网络 如果看到MySQL服务starting...,然后变为MySQL service running.,则说明启动成功。

6 登录MySQL 打开另一个 CMD(或新终端)并执行以下操作: 羞愧 mysql u root -p * 只需按 Enter 键即可。
如果没有报错,就可以进入mysql>提示符,则说明登录成功。

7 更改root密码 在mysql中判断>; sql 更改用户“roots”@“localhost”,由“1 2 3 4 5 6 ”标识; 注意! MySQL 8 .0+只能使用ALTER USER,老版本不能使用SIGN。
我用SET SIGNAL,结果报错。
我很困惑。
后来我才知道,政府文件被注入了。

8 密码是什么? 退出MySQL(输入quit)并再次输入。
这次输入新密码(例如1 2 3 4 5 6 )。
如果可以的话,这意味着一个很好的改变。

9 退出并靠近服务 退出MySQL:退出。
关闭服务:net stop mysql。

---
注意事项和遇到的常见问题:
错误 mysqld-install 安装/删除服务被拒绝 原因:CMD管理员未运行。
解决方案:右键单击CMD,选择“以管理员身份运行”。
服务初始化后启动失败 检查:确认datadir路径是否存在,是否存在权限问题。
解决方案:直接删除data文件夹,再次执行mysqld --initialize-insecure。
我之前通过删除许可证设置所在的数据目录解决了这个问题。
不管怎样,只要按照这些步骤去做,基本上就不会有什么大问题了。
如果你不需要它即单击路径和权限,或者删除并重新开始。