mysql报错:1045 access denied for user ‘root‘@‘localhost‘ using password yes
发布日期:2021-06-29 01:31:13 浏览次数:2 分类:技术文章

本文共 1873 字,大约阅读时间需要 6 分钟。

1、报错与原因

今天,使用 Navicat 远程登录一台 PC 机的 mysql(linux 系统),结果报错如下:

在这里插入图片描述

从报错信息来看,是用户 sdt 登录 100.10.51.32 被否决了,但是使用密码是正确的,其错误原因可能有两个:

  • 用户名错误
  • 该 PC 机拒绝远程访问,即本地所在 IP 没有访问权限

第一个原因很快被我否决了,尝试根据第二个可能错误原因去解决。

本地所在的 ip 没有访问权限,被拒绝访问,需要我们在数据库为我们的本地 ip 添加访问权限。

2、解决方案

第一步:登录 PC 机 mysql

打开 PC 机的命令行,输入:

mysql -u root -p

然后输入密码,即可登录 mysql。

不过,输入上面命令可能会遇到如下问题。

问题一

-bash: mysql: command not found

这是由于系统默认会查找的/usr/bin 中下的命令,如果这个命令不在这个目录下,当然会找不到命令。

我们需要做的就是映射一个链接到的/usr/仓目录下,相当于建立一个链接文件,比如我的 mysql 文件在/usr/local/mysql/bin/mysql,则需要执行命令如下:

ln -s  /usr/local/mysql/bin/mysql   /usr/bin

注意:此时可能会遇到权限问题:ln: failed to create symbolic link ‘/usr/bin/mysql’: Permission denied

此时使用如下命令切换到 root 用户,再执行上面命令即可:

sudo su

如何找到 linux 系统上,mysql 的安装路径和可运行路径:

# mysql安装路径whereis mysql# mysql可运行路径which mysql

在这里插入图片描述

问题二

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

错误原因可能有两个:

  • mysql 登录命令输入错误
  • 密码输入错误

我遇到这个问题是第一个原因,我输入的 mysql 登录命令如下:

# 错误输入命令,p前面少了-,这就略过了输入密码的步骤mysql -u root p

第二步:修改数据库访问权限

有两种修改方案:

# 第一种:所有的ip都有资格访问该数据库GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;# 第二种:为指定的ip开放访问权限GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.12.1' IDENTIFIED BY ‘password' WITH GRANT OPTION;

注意:要将上面的 password 修改为你自己的登录密码,root 账户也可以修改

第三步:刷新权限,重启 mysql

继续 mysql 登录状态,输入如下命令:

flush privileges;

执行成功后,退出 mysql(输入 quit 或者 exit)。

重启 mysql 即可成功连接。

这里重点说一下重启 mysql 命令,这个命令会根据你的 mysql 配置不同而不同,比如我使用的重启命令为:

service mysql restart

有的 service 重启命令为:

service mysqld restartservice mysql.server restart

三者的区别在于,你在/etc/init.d/(这个目录是 service 的相关目录)目录下的配置,比如我的是:

在这里插入图片描述

可以看到,该目录存在 mysql.service,那我要重启 mysql,可以有下面三种方法:

# 使用service命令service mysql restart# 使用service命令,不过mysql用全称service mysql.server restart# 使用脚本命令/etc/init.d/mysql.server restart

你也可以将 mysql.server 重名为 mysqld,那么重启命令就要将 mysql 或者 mysql.server 修改为 mysqld:

# 使用service命令service mysqld restart# 使用脚本命令/etc/init.d/mysqld restart

转载地址:https://blog.csdn.net/yuangan1529/article/details/117014908 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:网关详细解释
下一篇:python关于在DOS界面pip安装第三方库失败的解决方法

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2024年04月23日 17时33分56秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章