困扰我数小时的一个小问题,本来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';
是的 好文 更新后第一次我也懵逼
技术日新月异上次我安的时候也入过坑
这是网上说的:
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用户的密码。
非常好,快速地解决了这个问题