一般的安装mysql-server ,我们这么安装就好了

~$ sudo apt install mysql-server
~$ mysql -uroot -p
Enter password: 
ERROR 1698 (28000): Access denied for user 'root'@'localhost'

这里不能登录的原因在于:初始情况下 root 账户没有密码,这时普通用户并不能直接使用 mysql 命令直接控制台登录,更不能使用 mysql-workbench 直接连接登录。主要是由于 mysql.user 这张表中 root 用户的 plugin 字段值为 auth_socket,改为 mysql_native_password 即可。同时为了方便之后使用,我们在接下来的操作中顺带给 root 账户设置密码。

那么怎么解决这个问题呢?

修复开始,毕竟phpmyadmin 用起来还是比较高效率的。贴一段我终端中的log吧

~$ sudo mysql

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

mysql> use mysql

mysql> select user, host,plugin,authentication_string  from user;
+------------------+--------------+-----------------------+
| user | host    | plugin    | authentication_string |
+------+-----------+--------------+-----------------------+
| root | localhost | auth_socket  |                       |
+------+-----------+--------------+-----------------------+

mysql> update user set plugin="mysql_native_password",authentication_string=PASSWORD("12345678") where user="root";

mysql> flush privileges;

mysql> exit;
Bye
~$ sudo service mysql restart
~$ mysql -uroot -p

这样 就修复好了,总结如下:

超级用户执行 mysql,更改 user表中root行的相关信息,重启mysql服务,再测试

sudo mysql
mysql> update user set plugin="mysql_native_password", 
authentication_string=PASSWORD("12345678") where user="root";
~$ sudo service mysql restart
~$ mysql -uroot -p

需要注意的是  进入 mysql>后输入的命令记得用英文分号结束,密码不要照抄我的12345678,这是弱口令,只是演示用。


ubuntu 20.04 server mysql8.0.26 修改root密码

sudo cat /etc/mysql/debian.cnf

获取系统随机生成的用户名user和密码password 登录mysql

# mysql -u '你执行上面命令后看到的用户名' -p
# use mysql;
# flush privileges;
# ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
# flush privileges;

密码尽量弄复杂点。


在Ubuntu 22.04中更改MySQL root密码的方法

让我们开始吧。
在 Ubuntu 22.04 中更改 MySQL root 密码

要更改 Ubuntu 22.04 中的 MySQL root 密码,请按照给定的说明进行操作。

注意:给出的更改密码的方法仅适用于大于或等于“8”的MySQL版本。
第1步:检查MySQL版本
您需要做的第一件事是检查系统上安装的 MySQL 的版本:

$ mysql --version

我目前安装了 MySQL 版本“8.0.35”


第2步:停止MySQL服务,使用下面给出的命令来停止 MySQL 服务:

$ sudo systemctl stop mysql.service


第3步:检查MySQL状态:停止 MySQL 服务后,借助提供的命令验证其状态:

$ sudo systemctl status mysql.service

注意观察输出,预期 MySQL 当前在我们的系统上处于非活动状态:


第 4 步:跳过网络和授权表

MYSQL 服务器应该在没有网络检查和授予表的情况下启动。为此,请设置“MYSQLD_OPTS”的值:

$ sudo systemctl set-environment MYSQLD_OPTS="--skip-networking --skip-grant-tables"


第5步:启动MySQL服务

使用以下命令启动MySQL服务

$ sudo systemctl start mysql.service


MySQL 服务现已启动:


第6步:检查MySQL状态

再次检查 MySQL 服务的状态,确保它当前处于活动状态并在 Ubuntu 22.04 系统上运行:

$ sudo systemctl status mysql.service


第7步:登录MySQL

在终端中写出用于登录 MySQL 帐户的提供的命令:

(1)可以不用密码登录了

$ sudo mysql -u root


(2)刷新权限,要更改 MySQL root 密码,首先需要刷新所有权限:
    

mysql> flush privileges;


(3)选择MySQL数据库,继续在mysql>提示符后 输入
   

 mysql> USE mysql


(4)更改MySQL root密码
执行此操作后,使用“ALTER”命令并指定新密码:
    

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
###如果希望root用户可以远程登录则用下面的,
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';


(5)退出MySQL,最后,输入“quit”从活动的 MySQL shell 注销:
    

mysql> quit;


后续工作

第8 步:将数据库恢复到正常设置
为了以“正常”模式重新启动 MySQL 数据库,首先,通过取消设置环境变量的值来“恢复”添加的更改:

$ sudo systemctl unset-environment MYSQLD_OPTS


接下来,恢复“MySQL”以删除设置的系统配置:

$ sudo systemctl revert mysql


第9步:终止MySQL进程

执行以下“killall”命令来终止所有 MySQL 进程:

$ sudo killall -u mysql


第10步:重启MySQL服务
在最后一步中,重新启动 MySQL 服务,以便它可以从配置的设置中进行更改:

$ sudo systemctl restart mysql.service

第11步:用新密码登录MySQL
在 Ubuntu 22.04 终端中输入以下命令登录 MySQL,并使用“ALTER”命令指定您添加的密码:

$ sudo mysql -u root -p

12 如果你要远程使用root用户登录mysql-server服务器的话,还需要继续执行

mysql>update mysql.user set plugin='mysql_native_password' where user='root';
mysql> flush privileges;

如果远程 登录使用其它用户,那你就创建一个用于远程登录的用户。


就是这样。您已成功更改MySQL密码: