Mysql用正确的帐号密码突然无法登录的原因及解决办法

今天使用了将近一年的数据库突然连接不上了,昨天还好好的,今天就提示我:

Access denied for user 'root'@'localhost'(using password YES)

我确定我使用的密码是正确的,这就很奇怪了;

那怎么办呢?只能现在Mysql的配置文件中加入

skip-grant-tables

进行免密登录了,我的电脑是ubuntu的,mysql配置文件在/etc/mysql/mysql.conf.d/mysqld.cnf;

修改保存好配置文件后,重启下mysql服务:

sudo service mysql restart

然后登录用mysql -uroot -p登录mysql,不需要输入密码;

但是我程序调用免密登录的时候,发现已久无法登录,报错:

connect ECONNREFUSED 127.0.0.1:3306

这又有点奇怪了,我命令直接连数据库是可以的,说明端口3306是正常的,没有被防火墙关掉;

那排除法我觉得可能是这个127.0.0.1的问题,所以我又将配置文件中的bind-address=127.0.0.1给注掉了;

重启数据库程序调用数据库服务,发现已久报上面这个错,简直蒙圈;后来查找资料发现:

在mysql的用户表中,

即使root的host包含了主机名,127.0.0.1那么依然是无法正常登录的,这里必须要有localhost的host才行

所以还是回到命令行工具,登录数据库后使用以下命令新增root的localhost并设定密码:

use mysql;

alter user 'root'@'localhost' IDENTIFIED BY 'xxxx密码';

grant all on *.* to root@'localhost' identified by 'xxxx密码' with grant option;

flush privileges;

完了之后再删掉数据库配置表中的skip-grant-tables并重启数据库服务

再登录数据库,发现用刚设置的密码能成功登录;

还是很困惑以前的密码为啥无法登录,查看mysql的user表,发现里面有个password_expired字段,

我想可能是我原先的这个root帐号的这个字段属性是Y,意思就是过期了吧;

那么怎么知道密码的有效期是多长呢?可以使用以下命令进行查看:

show viriables like 'default_password_lifetime';

默认系统的密码生命周期是360天;

如果要认密码永不过期的话,可以使用以下方法:

set global default_password_lifetime=0;

或者在配置文件中添加配置;[如果不做上面修改,可以直接修改配置文件,但是改完后要重启服务才生效]

[mysqld]

default_password_lifetime=0

修改root密码永不过期:

alter user 'root'@'localhost' password expire never;

修改后,可使用如下指令查看:

select user,host,password_lifetime,password_last_changed,password_expired from mysql.user;

可以看到的是password_lifetime的值变成0了;

如果要恢复默认策略,可进行如下操作:

alter user 'root'@'localhost' password expire default;

折腾了大半天,总算解决了,记录下希望能帮助有需要的人。

 

 

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
MySQL 5.7版本以上,MySQL的公司引入了一个初始密码登录MySQL。如果您遇到了无法使用初始密码登录的问题,可以按照以下步骤进行解决: 1. 首先,您需要找到MySQL的初始密码。您可以在MySQL的错误日志文件中找到该密码。在CentOS 7上,错误日志文件通常位于/var/log/mysqld.log。 2. 打开错误日志文件,搜索关键字"temporary password",可以找到初始密码。 3. 使用找到的初始密码登录MySQL。您可以在终端中使用以下命令: ``` mysql -u root -p ``` 然后输入初始密码进行登录。 4. 登录成功后,您可以修改初始密码为您自己的新密码。您可以使用以下命令: ``` ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ``` 将'新密码'替换为您自己的新密码。 5. 修改密码后,您可以重新启动MySQL服务,以确保修改后的密码生效。 ``` sudo systemctl restart mysqld ``` 现在,您应该可以使用新密码成功登录MySQL了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql第一次没法登陆的问题](https://blog.csdn.net/make__It/article/details/78701251)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [MYSQL 5.7 默认生成的密码不能正常登陆(解决办法)](https://blog.csdn.net/qq_23077403/article/details/85093705)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值