MySQL8修改重置root密码,远程连接权限设置
- 发表于
- 后端
MySQL8 修改重置root密码
这里要单独强调是MySQL8,因为在MySQL 8.04前,执行:SET PASSWORD=PASSWORD('[新密码]');
可行,但是MySQL8.0.4开始,这样默认是不行的。因为之前,MySQL的密码认证插件是“mysql_native_password
”,而现在使用的是“caching_sha2_password
”。
MySQL8修改root密码
1 2 3 4 |
# mysql -u root -p '原来的密码' mysql> use mysql; mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; mysql> FLUSH PRIVILEGES; |
MySQL8重置root密码
MySQL8忘记root密码如何重置?步骤:
编辑:/etc/my.cnf
,在最后加上如下语句 并保持退出文件;
1 |
skip-grant-tables |
重启mysql服务
1 |
service mysqld restart |
现在可以免密码登录到mysql上;直接在命令行上输入:
1 2 3 4 |
# mysql mysql> use mysql; mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码'; mysql> FLUSH PRIVILEGES; |
退出mysql,删除/etc/my.cnf文件最后的 skip-grant-tables 重启mysql服务。
MySQL8远程连接权限设置
登录mysql,你可以用ssh或GUI工具都行,我这里以命令行示例,首先查看当前root用户相关信息,在mysql数据库的user表中:
1 2 |
# mysql -u root -p ***** mysql> select host, user, authentication_string, plugin from user; |
- host:允许用户登录的ip‘位置’%表示可以远程;
- user:当前数据库的用户名;
- authentication_string:用户密码,在mysql 5.7.9以后废弃了password字段和password()函数;
- plugin:密码加密方式;
我们看host和user两列,host和user中root对应的值为localhost,即root用户的访问权限为localhost,想把该用户的访问权限设置可远程连接,我们只需要把localhost更改为通配的%就可以了。上面的权限操作语句没有走通,这里就直接使用update语句来更改吧。
1 |
update user set host = "%" where user = "root"; |
注意事项
有的时候我们设置了%但发现还是不能访问,请检查你的端口是否打开了,还有你连接的工具的密码加密方式是否选对了,再适当的进行调整就可以。
原文连接:MySQL8修改重置root密码,远程连接权限设置
所有媒体,可在保留署名、
原文连接
的情况下转载,若非则不得使用我方内容。