大炮运维V587 发表于 2019-11-18 15:58:06

MySQL 报 1045 错误解决方法

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


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

2、设置放行仅仅允许本机ip访问3306

错误可能原因:
1、有空用户的现象,MySQL官方的BUG,优先匹配到空用户
2、权限错误
一、空用户问题解决方法
先修改下mysql的配置文件,设置免密钥登陆:


skip-grant-tables

然后重新启动mysql,
/etc/init.d/mysqld restart
命令行中登录MySQL数据库:
mysql-uroot -p数据库密码
进入后是这样的

在mysql命令行中逐行执行下面命令(手敲命令的话,记得修改输入法是英文半角):

USEmysql;
Delete FROM user Where User=''and Host='localhost';
FLUSHPRIVILEGES;
执行完后将刚才添加的
skip-grant-tables 注释 然后重新启动mysql

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


二、MySQLroot权限导致的无法登录


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

2、重启数据库:
/etc/init.d/mysqld restart

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

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


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









大炮运维V587 发表于 2022-12-20 21:08:03

宝塔用户_yelniw 发表于 2022-12-20 15:31
您好,求助


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

谢花郎 发表于 2019-11-18 16:37:40

大佬大佬,恰冰阔落{:4_101:}

大炮运维V587 发表于 2019-11-18 16:01:53

一般是第二种方式导致的,我最先遇到的是第一种情况

mrwu888 发表于 2019-11-18 16:24:37

:)学习下

凹凸凹 发表于 2020-1-14 09:54:11

您好,按照您的操作,第一种方法操作后无反应。第二种方法操作后出现了这样的情况

大炮运维V587 发表于 2020-1-14 11:40:40

宝塔用户_slhtsu 发表于 2020-1-14 09:54
您好,按照您的操作,第一种方法操作后无反应。第二种方法操作后出现了这样的情况

...

那么密码正确么?

凹凸凹 发表于 2020-1-15 10:23:58

大炮运维V587 发表于 2020-1-14 11:40
那么密码正确么?

不正确,按照第二种方法改了之后也不正确:'(

大炮运维V587 发表于 2020-1-15 14:37:08

宝塔用户_slhtsu 发表于 2020-1-15 10:23
不正确,按照第二种方法改了之后也不正确

QQ私聊我

god00099 发表于 2020-3-24 20:06:30

最后一步的完整命令是什么呀?复制的命令,执行老是出错

宝塔用户_eezwxe 发表于 2020-4-3 14:27:35

描述一下我的问题,数据库配置文件变成了空,然后任务计划备份数据库20b,手动点击备份是20b,通过终端备份正常,然后参考上述内容,删除了host为localhost且user空的数据,然后重新填上配置文件内容,增加了一条免密skip-grant-tables,然后重启数据库后,执行了FLUSHPRIVILEGES;已经恢复正常,谢谢

宝塔用户_eezwxe 发表于 2020-4-3 14:32:39

宝塔用户_eezwxe 发表于 2020-4-3 14:27
描述一下我的问题,数据库配置文件变成了空,然后任务计划备份数据库20b,手动点击备份是20b,通过终端备份正常 ...

只是就怕每几天来这么一次,不知道为啥配置文件会变成空的

大炮运维V587 发表于 2020-7-16 11:58:30

god00099 发表于 2020-3-24 20:06
最后一步的完整命令是什么呀?复制的命令,执行老是出错

大佬,已经更新

大炮运维V587 发表于 2020-7-16 11:59:08

宝塔用户_eezwxe 发表于 2020-4-3 14:27
描述一下我的问题,数据库配置文件变成了空,然后任务计划备份数据库20b,手动点击备份是20b,通过终端备份正常 ...

数据库配置为空,可以重启下mysql服务,会重新生成一份配置的

Panacea 发表于 2020-7-24 18:54:37

ou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATEmysql.user set password=password('xxxxx')WHERE user='ro' at line 1

我输入命令行后怎么就gg惹

大炮运维V587 发表于 2020-7-30 17:25:19

Panacea 发表于 2020-7-24 18:54
ou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version...

语法错误哦,'UPDATEmysql.user set password=password('xxxxx')WHERE user='ro' at line 1user是root哦
页: [1] 2 3
查看完整版本: MySQL 报 1045 错误解决方法