一般的安装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密码: