mysql root密码 linux_Linux下mysql的root密码修改方法

前言

在服务部署在mysql上应该有好几个月了,因为现在的工作基本都在终端,因此很少登陆,今天要修改个东西,忽然发现我竟然已经彻底忘记了mysql的密码,去代码里面爬终于找到了业务数据库的密码,但是root密码还是没有找到,权限没法改呀,于是开始爬坑之旅,估计以后还会遇到,就整理记录一下。需要的朋友们一起来看看吧。

系统参数

服务器

$ cat /proc/version

Linux version 4.8.3-x86_64-linode76 (maker@build) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Thu Oct 20 19:05:39 EDT 2016

$ lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 16.04.1 LTS

Release: 16.04

Codename: xenial

mysql

mysql> show variables like "%version%";

+-------------------------+-------------------------+

| Variable_name | Value |

+-------------------------+-------------------------+

| innodb_version | 5.7.16 |

| protocol_version | 10 |

| slave_type_conversions | |

| tls_version | TLSv1,TLSv1.1 |

| version | 5.7.16-0ubuntu0.16.04.1 |

| version_comment | (Ubuntu) |

| version_compile_machine | x86_64 |

| version_compile_os | Linux |

+-------------------------+-------------------------+

解决方案

以安全模式启动mysql,可以直接以root身份登录,然后重设密码。下面是具体步骤

停掉在运行的MySQL服务:

sudo service mysql stop

以安全模式启动mysql:

sudo mysqld_safe --skip-grant-tables --skip-networking &

直接用root登录,无需密码:

mysql -u root

重设密码:

mysql> use mysql;

mysql> update user set authentication_string=password('password') where user='root';

mysql> flush privileges;

退出mysql

mysql > quit

重启mysql

sudo service mysql restart

密码登录:

mysql -u root -p

异常处理

修改密码报错,提示ERROR 1054 (42S22)

在修改密码的时候,网上比较多的文档都是提示输入一下命令修改:

mysql> update user set password=PASSWORD("password") where User='root';

结果使用这个命令的时候报错:

ERROR 1054 (42S22): Unknown column 'password' in 'field list'

原因是从mysql 5.7开始,password字段被替换为了authentication_string,可以使用下面的命令来修改

update user set authentication_string=password('password') where user='root';

修改密码后登录mysql失败,提示ERROR 2002 (HY000)

在修改密码并重启以后,登录mysql的时候竟然登录不了,提示

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

搜索以后反馈是因为我安装了多个版本的mysql,顺序执行下面的命令即可解决。

查看运行的mysql

ps -A|grep mysql

kill运行的mysql

sudo pkill mysql

查看运行的mysqld

ps -A|grep mysqld

kill运行的mysqld

sudo pkill mysqld

重启mysql

service mysql restart

登录mysql

mysql -u root -p

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值