当前位置:论坛首页 > Linux面板 > Linux面板教程

MySQL 报 1045 错误解决方法

发表在 Linux面板2019-11-18 15:58 [复制链接] 37 38642

MySQL在使用root密码登陆报  1045  
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
======2020年7月30日更新======
1、修改密码:
登录到面板上修改mysql数据库root用户的密码:
mysql修改密码.jpg

如果修改后还不行,请根据下面的操作一步一步来。
=====2020年7月16日更新======
1、必须提前准备下面操作方可执行免密钥登录(否则会出现数据丢失)
原因:为了安全  为了安全  为了安全(重要事情说三遍)

操作方式:
1、打开面板安装系统防火墙:

系统防火墙.jpg
2、设置放行仅仅允许本机ip访问3306
仅仅允许本机访问.jpg
错误可能原因:
1、有空用户的现象,MySQL官方的BUG,优先匹配到空用户
2、权限错误
一、空用户问题解决方法
先修改下mysql的配置文件,设置免密钥登陆:

修改为免密码登录.png
skip-grant-tables

然后重新启动mysql,
  1. /etc/init.d/mysqld restart
复制代码

命令行中登录MySQL数据库:
  1. mysql  -uroot -p数据库密码
复制代码

进入后是这样的
mysql进入命令行.png
在mysql命令行中逐行执行下面命令(手敲命令的话,记得修改输入法是英文半角):
命令行中执行.png
  1. USE  mysql;
  2. Delete FROM user Where User=''  and Host='localhost';
  3. FLUSH  PRIVILEGES;
复制代码

执行完后将刚才添加的
skip-grant-tables 注释 然后重新启动mysql

现在再用账号密码登陆就可以登陆进去了。


二、MySQL  root权限导致的无法登录


1、同样是修改成免密码登录的方式:

2、重启数据库:
  1. /etc/init.d/mysqld restart
复制代码


3.1、MySQL 5.6版本以及以下的更改root权限:
  1. UPDATE  mysql.user set password=password('root 用户密码')  WHERE user='root' AND host='localhost';
  2. FLUSH  PRIVILEGES;
复制代码
3.2、MySQL5.7版本以及以上的更改root密码和权限:小知识点:在MySQL5.7.9版本后废弃了password字段和password()函数,所以先将authentication_string设置为空然后在修改密码和权限,密码必须包含大写字母、数字、特殊符号这样才安全。
1、将authentication_string 字段设置为空
  1. update user set authentication_string='' where user='root';
复制代码
2、然后退出MySQL命令行,删除/etc/my.cnf 中的 skip-grant-tables ,重启MySQL服务(/etc/init.d/mysqld restart)
  1. ALTER user 'root'@'localhost' IDENTIFIED BY '大写字母、数字、特殊符号';
  2. FLUSH PRIVILEGES;
复制代码


4、注销跳过密码登录的配置,删除系统防火墙中指定ip访问的配置(不要忘记这个步骤)
然后重启mysql数据库,使用root登录就正常了


说明:
root用户使用localhost权限在linux默认中走的是Unix域套接字,在登录时候直接套接字进行通信,无需使用其他通信,127.0.0.1这个是使用的tcp/ip协议进行登录数据库的,所以在使用过程中,如果不在登录命令中加上 -h,默认是unix套接字。这也是   有些情况下使用远程登录工具可以正常登录,但是使用面板上的备份、计划任务中备份数据库  使用mysql -uroot -proot密码登录时候报1045 的原因









使用道具 举报 只看该作者 回复
发表于 2022-12-20 21:08:03 | 显示全部楼层

rpmdb错误.png
您好,您的这个是rpmdb错误导致的
您到服务器SSH终端里执行
  1. 1进入到rpm包管理目录
  2. cd /var/lib/rpm
  3. 2删掉坏了的rpm
  4. rm -rf __db*
  5. 3.重新生成新的数据
  6. rpm --rebuilddb
复制代码


使用道具 举报 回复 支持 1 反对 0
发表于 2019-11-18 16:37:40 | 显示全部楼层
大佬大佬,恰冰阔落
使用道具 举报 回复 支持 1 反对 0
发表于 2023-8-18 08:53:24 | 显示全部楼层
UPDATE  mysql.user set password=password('root 用户密码')  WHERE user='root' AND host='localhost';
使用道具 举报 回复 支持 反对
发表于 2023-6-6 16:10:40 | 显示全部楼层
1045 - Access denied for user 'root'

问题点
1:免登录模式,能进去但是,关闭免登录模式后就出现问题了
使用道具 举报 回复 支持 反对
发表于 2022-12-21 10:07:40 | 显示全部楼层
大炮运维V587 发表于 2022-12-20 21:08
您好,您的这个是rpmdb错误导致的
您到服务器SSH终端里执行

讲解清晰到位,一把就成功了,感谢感谢!!
使用道具 举报 回复 支持 反对
发表于 2022-12-20 15:31:39 | 显示全部楼层
大炮运维V587 发表于 2021-10-21 10:00
您好,请根据我写的教程对应的mysql的版本找到修改数据库root帐号的密码

您好,求助
捕获.PNG
使用道具 举报 回复 支持 反对
发表于 2022-12-20 15:27:18 | 显示全部楼层
第一次发帖,感觉真是跋山涉水啊
捕获.PNG
使用道具 举报 回复 支持 反对
发表于 2022-11-26 15:50:44 | 显示全部楼层
1.教程里面的第一步数据库root密码我更新提交了,然后守护进程里面需要用这个更新的root密码还是用我自己原来添加的数据库密码?
2.指定IP下的地址是填我的主机IP地址吗?
我操作到mysql里面修改没有skip-grant-tables
使用道具 举报 回复 支持 反对
发表于 2022-9-23 16:31:13 | 显示全部楼层
beihaoping 发表于 2022-9-23 16:20
老大,我按那种方法操作,都是提示-bash: update: command not found

您好!建议您这边重新发帖截图发一下MySQL报错的信息以及您后面都做了哪些操作,以便这边更好的协助您排查问题所在。
使用道具 举报 回复 支持 反对
发表于 2022-9-23 16:20:17 | 显示全部楼层
老大,我按那种方法操作,都是提示-bash: update: command not found
使用道具 举报 回复 支持 反对
发表于 2021-11-8 13:47:51 | 显示全部楼层
操作了,手动备份数据库没问题,计划任务备份数据有问题,使用的是 AliSQL有影响吗?
使用道具 举报 回复 支持 反对
发表于 2021-10-21 10:00:53 | 显示全部楼层
宝塔用户_egnadb 发表于 2021-10-20 21:24
mysql> UPDATE  mysql.user set password=password('rootABC123456')  WHERE user='root' AND host='localh ...

您好,请根据我写的教程对应的mysql的版本找到修改数据库root帐号的密码
使用道具 举报 回复 支持 反对
发表于 2021-10-20 21:24:07 | 显示全部楼层
mysql> UPDATE  mysql.user set password=password('rootABC123456')  WHERE user='root' AND host='localhost';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE  mysql.user set password=password('rootABC123456')  WHERE user='root'' at line 1

到3.1步骤报错了,帮帮我
使用道具 举报 回复 支持 反对
发表于 2021-1-25 10:41:20 | 显示全部楼层
宝塔用户_ltnxib 发表于 2021-1-24 11:53
1.root 本机可以登录;
2.本机使用mysqldump可以成功导出;
3.数据库页面使用备份,还是20b;

看私信,加我QQ
使用道具 举报 回复 支持 反对
发表于 2021-1-24 11:53:39 | 显示全部楼层
大炮运维V587 发表于 2021-1-23 19:22
默认面板的mysqlroot账号是localhost权限,你可以尝试使用root账号在本机登陆,看下能否登陆。或者手动使 ...

1.root 本机可以登录;
2.本机使用mysqldump可以成功导出;
3.数据库页面使用备份,还是20b;
使用道具 举报 回复 支持 反对
发表于 2021-1-23 19:22:54 | 显示全部楼层
宝塔用户_ltnxib 发表于 2021-1-23 18:51
重新添加了,执行之后还是一样的结果

默认面板的mysqlroot账号是localhost权限,你可以尝试使用root账号在本机登陆,看下能否登陆。或者手动使用mysqldump命令备份数据库能否备份
使用道具 举报 回复 支持 反对
123下一页
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

企业版年付运维跟进群

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急问题处理

论坛响应时间:10分钟

问题处理方式:1对1处理(优先)

工作时间:白班:9:00 - 18:00

工作时间:晚班:18:00 - 24:00

立即付费处理
快速回复 返回顶部 返回列表