MySQL8 创建新用户 改密码

最近新配置了一台新服务器用于生产环境,为了使整个系统生命周期长一些,我在配置环境时候安装的都是最新版的稳定系统/软件,比如操作系统选的Debian10, PHP和MySQL选的都是版本8。在安装MySQL时候遇到了之前类似的问题,就是默认root用户不知为何在预配置阶段密码设置无效,在安装后经过测试是空密码。我之前在5.7时候由于遇到过root账户不能远程登录的问题,当时记录了一些解决方法,可是其中的某些步骤提示语法错误,经过查询得知在MySQL8之后之前设置密码的语法已经被淘汰了,现在给空root账户设置密码步骤如下:

首先通过如下命令用root用户名和空密码登录数据库:

sudo mysql -u root

然后通过下边命令给root账户修改密码:

use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
flush privileges;
exit;

命令成功执行后可以查看一下是否可以用新密码登陆:

sudo mysql -u root -p

理论上现在已经可以通过sudo结合root用户名和密码在BASH里边登录数据库了。当时此时root账户可能不能通过phpMyAdmin或者外部工具登录(修正:这是由于root 用户使用 unix_socket 身份验证插件,只有在以系统 root 身份调用 mysql 命令或将 sudo 添加到命令时,才能以 root 身份连接到数据库,如果验证插件是其他比如我现在的Caching sha2 authentication,也是可以在phpmyadmin使用root登录的),这是从MySQL 5.7开始的安全策略原因,详细介绍以及解决方案可以看刚刚提到的那篇博文记录。

另外 Debian 10 的默认软件源中并不包含 MySQL 软件包,它已被 MariaDB 替代。我这次安装参考了不少教程,列在这里以表感谢:

 

Reference:

https://blog.shuspieler.com/1090/

https://www.digitalocean.com/community/tutorials/how-to-install-the-latest-mysql-on-debian-10

https://www.jianshu.com/p/59a9bcc136c2

https://stackoverflow.com/questions/50691977/how-to-reset-the-root-password-in-mysql-8-0-11

https://linux265.com/news/3770.html

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.