MySQL无法修改root密码

By | 2019/04/20

困扰我数小时的一个小问题,本来MySQL装了没有100也有80次了,本以为做什么都轻车熟路,但随着版本日新月异,越来越多的特性实在让人防不胜防。

在最新的Ubunut 18.04 LTS上使用apt install mysql-server,安装好以后,意外发现没有让我输入root的密码,记得之前都会有prompt让给一个root的初始密码的。待装好了,发现确实不用密码就能登录,于是习惯性的使用ALTER USER USER() IDENTIFIED BY 'new-password'希望能重置密码,然而,没有反应,flush priviliges什么的就不用说了,使用UPDATE user SET authentication_string = PASSWORD('new-password')也是不行,反正我永远可以免密码登录。

奇了怪了,而我在修改mysql 的 datadir 的时候也发现了问题,新的路径mysqld无法写入,chmod, chown啥的也没有效果,后来在syslog中发现了端倪,apparmor阻止了读写,记得之前也没有默认启用这个啊,是阿里云帮我们启用的吗?本想把apparmor一关了事,但是想想为了安全,还是修改配置吧。

回到密码,最后还是在别人的blog上发现了问题 https://www.percona.com/blog/2016/03/16/change-user-password-in-mysql-5-7-with-plugin-auth_socket/

原来, 5.7之后起,如果安装mysql的时候没有给root指定密码,那么就会启用auto_socket的插件,这样只要你的系统账号是root,就可以免密登录了(通过unixsocket),修改密码的方式必须是这样:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new-password';

2 thoughts on “MySQL无法修改root密码

  1. YY

    技术日新月异上次我安的时候也入过坑

    这是网上说的:

    1.官网下载mysql,此处下载的是.zip文件
    2.解压下载的文件夹,并且配置环境变量:Path:E:mysql-8.0.15-winx64bin
    3.配置my.ini文件
    4.管理员身份运行cmd,进入到E:mysql-8.0.15-winx64bin,执行mysqld –initialize –console命令初始化数据库。成功后,会返回root用户的密码,记住该密码。
    5.进入到E:mysql-8.0.15-winx64bin,执行mysqld –install命令安装服务,安装成功后会返回Service successfully installed.
    6.安装成功后,在系统下执行net start mysql命令来启动服务。
    7.服务启动成功后,在系统下执行mysql -u root -p登录mysql,此时会提示输入密码,即第4步中出现的密码。
    8.成功进入mysql后,可通过ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘2019’; 来修改root用户的密码。
    ==============================================

    主要看这里

    1,bin下新建date目录
    2,mysqld –initialize –console #记住随机密码,关了就先删data目录在来一次这个命令
    3,mysqld –install
    4,C:\mysql\bin>mysql -h localhost -u root -p[随机密码]
    5,ALTER USER ‘root’@’localhost’ IDENTIFIED WITH mysql_native_password BY ‘2019’; 来修改root用户的密码。

    Reply

发表评论

电子邮件地址不会被公开。 必填项已用*标注