下面是完整攻略。
MySQL 8.0+版本1045错误的问题及解决办法
问题描述
在使用 MySQL 8.0+ 版本的时候,有时候会出现 1045 错误,提示无权访问 MySQL 服务器。如下图所示:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
这个问题通常是由于 MySQL 用户名或密码不正确所导致的,下面是解决这个问题的步骤。
解决方法
方法 1:检查用户名和密码
第一步,检查你的 MySQL 用户名和密码是否正确。可以使用以下命令来确认 MySQL 用户名和密码是否正确:
$ mysql -u root -p
这个命令将提示你输入密码。如果输入正确的密码,你将能够成功登录 MySQL 系统。
如果你不确定 MySQL 用户名和密码是否正确,可以尝试使用以下命令来重置 root 用户的密码:
$ mysql -u root
MariaDB> UPDATE mysql.user SET Password=PASSWORD('new-password') WHERE User='root';
MariaDB> FLUSH PRIVILEGES;
这个命令将把 root 用户的密码重置为 new-password。在输入这个命令之后,你将可以使用以下命令来登录 MySQL 系统:
$ mysql -u root -pnew-password
方法 2:检查 MySQL 服务是否启动
第二步,检查 MySQL 服务是否启动。你可以使用以下命令来检查 MySQL 服务是否正在运行:
$ sudo systemctl status mysql
如果 MySQL 服务没有启动,你可以使用以下命令来启动 MySQL 服务:
$ sudo systemctl start mysql
如果 MySQL 服务启动了但是仍然无法访问,你可以尝试重启 MySQL 服务:
$ sudo systemctl restart mysql
如果以上两种方法都无法解决问题,那么可能是 MySQL 的配置文件出了问题。你可以检查以下 MySQL 配置文件是否正确:
$ sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
在编辑这个文件之前,你应该备份该文件以防止错误。
示例说明
示例1:检查用户名和密码
假设你正在使用 MySQL root 用户登录,但是你忘记了密码,无法登录 MySQL 系统。你可以使用以下步骤来进行密码重置:
- 停止 MySQL 服务:
sudo systemctl stop mysql
- 启动 MySQL 不带验证:
sudo mysqld_safe --skip-grant-tables &
- 连接 MySQL:
mysql -uroot
- 更新密码信息:
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root'; FLUSH PRIVILEGES;
- 退出 MySQL,然后重启 MySQL 服务:
sudo systemctl restart mysql
- 使用新密码登录 MySQL 系统:
mysql -uroot -pnew_password
示例2:检查 MySQL 服务是否启动
假设你正在启动 MySQL 服务,但是出现错误提示,无法访问 MySQL 服务。你可以使用以下步骤来解决问题:
- 检查 MySQL 服务是否正在运行:
sudo systemctl status mysql
- 如果 MySQL 服务没有启动,启动 MySQL 服务:
sudo systemctl start mysql
- 如果 MySQL 服务已经启动,但是仍然无法访问,重启 MySQL 服务:
sudo systemctl restart mysql
总结
MySQL 8.0+ 版本的 1045 错误通常是由于用户名或密码不正确,或者 MySQL 服务没有正常启动所导致的。你可以使用以上步骤来解决这个问题。如果以上步骤都无法解决这个问题,你可以检查 MySQL 配置文件是否正确。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL8.0+版本1045错误的问题及解决办法 - Python技术站