知识学习

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5571|回复: 0

宝塔数据库任意操作提示“数据库管理密码错误!”

[复制链接]

升级   100%

152

主题

0

回帖

752

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
752
发表于 2022-6-1 16:41:59 | 显示全部楼层 |阅读模式
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

[color=rgb(32, 165, 58) !important]复制代码


命令行中登录MySQL数据库:
  • mysql  -uroot -p数据库密码

[color=rgb(32, 165, 58) !important]复制代码


进入后是这样的

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



大致处理方法:
1.使用MySQL的root账户密码登录时已经提示密码或登录失败提示,此处需要跳过密码登录。
MySQL配置内的[mysqld]参数下添加skip-grant-tables参数,并重启MySQL。
2.服务器命令行执行mysql回车,然后执行命令切换到mysql表内。具体操作命令如下:
  • use mysql;
  • select user,host,password from mysql.user;
  • delete from mysql.user where password='';
  • flush privileges;
  • quit;

[color=rgb(32, 165, 58) !important]复制代码



操作完成后,记得将skip-grant-tables参数去除,同时如果有开启外网的话,记得将3306端口或指定IP访问。
去除密码登录后,风险会很大,这里需要切记切记!!



  • USE  mysql;
  • Delete FROM user Where User=''  and Host='localhost';
  • FLUSH  PRIVILEGES;

[color=rgb(32, 165, 58) !important]复制代码


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

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


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


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

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

[color=rgb(32, 165, 58) !important]复制代码



3.1、MySQL 5.6版本以及以下的更改root权限:
  • UPDATE  mysql.user set password=password('root 用户密码')  WHERE user='root' AND host='localhost';
  • FLUSH  PRIVILEGES;

[color=rgb(32, 165, 58) !important]复制代码

3.2、MySQL5.7版本以及以上的更改root密码和权限:小知识点:在MySQL5.7.9版本后废弃了password字段和password()函数,所以先将authentication_string设置为空然后在修改密码和权限,密码必须包含大写字母、数字、特殊符号这样才安全。
1、将authentication_string 字段设置为空
  • update user set authentication_string='' where user='root';

[color=rgb(32, 165, 58) !important]复制代码

2、然后退出MySQL命令行,删除/etc/my.cnf 中的 skip-grant-tables ,重启MySQL服务(/etc/init.d/mysqld restart)
  • ALTER user 'root'@'localhost' IDENTIFIED BY '大写字母、数字、特殊符号';
  • FLUSH PRIVILEGES;

[color=rgb(32, 165, 58) !important]复制代码



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


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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|知识学习 ( 鲁ICP备20015483号 )

GMT+8, 2026-5-13 21:56 , Processed in 0.101065 second(s), 27 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表