关于修改root的密码有很多笔记了,但是在mysql5.7下面无效,后来找到同样是5.7的笔记,才真正修改好。现在记录下来。
第一步,修改mysql配置文件让Mysql跳过认证
我的mysql是通过apt install mysql-server 安装的
配置文件目录/etc/mysql/mysql.conf.d/mysql.cnf
编辑mysql.cnf,找到[mysqld] (带英文的中括号),在下面添加一行
skip-grant-tables
保存退出
【提醒】默认的/etc/mysql/mysql.cnf是一个导入文件,一般不建议直接修改,如果你编辑这个文件也可以,需要先输入[mysqld],再换行输入skip-grant-tables
备用方法:使用debian的账号登录,可以不修改mysql.cnf登录
sudo vim /etc/mysql/debian.cnf # 找到password一行,复制密码
第二步,重启mysql,然后免密登录
sudo service mysql restart
然后msyql -u root -p 回车,再回车,就进入mysql了
第三步,修改root密码
mysql> use mysql; mysql> update user set authentication_string=PASSWORD("你的密码") where user=‘root‘; mysql> update user set plugin="mysql_native_password"; # 不用修改, 直接执行 重点 mysql> flush privileges; mysql> quit;
之前的教程,都知道更新了authentication_string这个表,没有第3行的操作,所以,退出重启mysql,还是无法用root登录
这应该是5.7更新安全规则的原因,一定要执行第3条和第4条哦
第四步,重新修改mysql.cnf
在skip-grant-tables前面,加一个#号,注释掉,如果是生产环境,一定要修改哦,不然很危险哈
再重启mysql服务sudo service mysql restart
再 mysql -u root -p #回车
输入密码,登录Mysql