ubuntu 安装mysql8遇到的问题

遇到问题:

Mysql版本
mysql Ver 8.0.28-0ubuntu0.20.04.3 for Linux on x86_64 ((Ubuntu))
以下是我重新卸载安装过几次mysql都会报的错误,不管如何按照网上的教程改配置文件,最终都还是报拒绝本地链接,我的报错如下:

root@ubuntu:/etc/mysql/mysql.conf.d# mysql
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)这种情况是没有输入密码
或者
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)这种情况是输入了密码,但是没有输对

我根据网上教程,mysql8安装成功之后有一个默认用户和密码,具体查看方式如下:

sudo  cat /etc/mysql/debian.cnf

输入指令后,会提示输入当前ubuntu用户密码,输入后我的内容显示如下:

# Automatically generated for Debian scripts. DO NOT TOUCH!
[client]
host     = localhost
user     = debian-sys-maint(这个就是默认用户)
password = X4k1p11iFNCzUGQn (这个就是密码)
socket   = /var/run/mysqld/mysqld.sock
[mysql_upgrade]
host     = localhost
user     = debian-sys-maint
password = X4k1p11iFNCzUGQn
socket   = /var/run/mysqld/mysqld.sock

我登录的方式如下:

 mysql -udebian-sys-maint -pX4k1p11iFNCzUGQn

就是这样按照顺序执行下来,还是提示无法登录。我为这个烦恼了很久,找了很多办法,都解决不了,还尝试重装。最后经过是要彻底的卸载,然后重启系统,再次安装后才可以使用默认用户登录。


mysql8 安装

一定要更新源

sudo apt-get update  #更新源
sudo apt-get install mysql-server #安装

验证安装

systemctl status mysql

提示以下内容就说明安装成功
在这里插入图片描述
使用mysql 默认用户登录,使用下面命令,查看root用户

use mysql
select User,Host,plugin,authentication_string from user;

打印结果如下,可以看到root用户对应authentication_string字段是空的,也是还没有初始化密码

+------------------+-----------+-----------------------+------------------------------------------------------------------------+
| User             | Host      | plugin                | authentication_string                                                  |
+------------------+-----------+-----------------------+------------------------------------------------------------------------+
| debian-sys-maint | localhost | caching_sha2_password | $A$005$%n(ds3wwI8J,"ff3AsLC578..CIRj9ll0.Wqf3AGoE5YAfDAfI.uv3qD |
| mysql.infoschema | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.session    | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| mysql.sys        | localhost | caching_sha2_password | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED |
| root             | localhost | auth_socket           |                                                                        |
+------------------+-----------+-----------------------+------------------------------------------------------------------------+
5 rows in set (0.00 sec)

接下来就是给root用户初始化密码

alter user 'root'@'localhost' identified by '123456';

刷新mysql权限

flush privileges;

当执行

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';

会报错

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

是因为密码设置不符合要求,使用下面的命令查看密码设置要求:

SHOW VARIABLES LIKE 'validate_password%';

±-------------------------------------±-------+
| Variable_name | Value |
±-------------------------------------±-------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
±-------------------------------------±-------+
7 rows in set (0.02 sec)

可以看到validate_password.length是8,即密码的长度为8个字符,validate_password.policy 为MEDIUM 密码的等级为中级,可以修改validate_password.policy 字段为LOW等级,即可,命令如下:

set global validate_password.policy=0;

执行成功后,重新执行修改root密码的sql语句,记得再次执行 flush privileges,退出来,然后执行以下命令,重启mysql服务。

service mysql restart

设置root 的host 允许远程访问,同样执行结束后要运行flush privileges

update mysql.user set Host ='%' where User = 'root';

user的Host字段是%说明是任何地址可以链接,一般这个字段都默认localhost,只允许本地连接。

完全卸载mysql:

查看mysql依赖

dpkg --list | grep mysql

删除指令

sudo apt-get remove mysql-common

sudo apt-get autoremove --purge mysql-server

然后再用下面指令查看是否还有依赖没有卸载

dpkg --list | grep mysql 

最后用下面命令清除残留数据

dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

dpkg -P是完全删除文件,可以在网上搜到相关的使用教程

查看从MySQL APT安装的软件列表, 执行后没有显示列表, 证明MySQL服务已完全卸载

dpkg -l | grep mysql | grep i
<think>好的,我现在需要帮用户解决在Ubuntu安装MySQL 8问题。首先,用户提到了参考的引用链接,一个是关于安装MySQL 5.7或8Ubuntu不同版本上的,另一个是关于在Ubuntu 16.04安装MySQL 5.7的教程。不过用户现在需要的是MySQL 8安装步骤,所以我得确保提供的指南适用于最新的MySQL 8Ubuntu的常见版本,比如18.04、20.04、22.04等。 首先,我应该回忆一下MySQL官方的安装方法。通常,在Ubuntu安装最新版本的软件,最可靠的方式是通过添加官方仓库。因为默认的Ubuntu仓库可能不包含最新版的MySQL,所以需要从MySQL的APT仓库安装。这应该包括下载.deb包,配置仓库,然后使用apt安装。 接下来,步骤大概分为以下几个部分: 1. 更新系统包:确保系统是最新的,这可以避免依赖问题。 2. 下载MySQL的APT仓库包:从MySQL官网获取最新的仓库配置文件。 3. 安装仓库包:使用dpkg安装,可能会需要更新apt缓存。 4. 安装MySQL服务器:通过apt安装mysql-server。 5. 安全配置:运行mysql_secure_installation来设置root密码和其他安全选项。 6. 验证安装:登录MySQL并检查版本。 需要确认每一步的具体命令是否正确。例如,下载.deb包时,最新的URL可能已经变化,需要检查是否正确。同时,安装过程中可能会提示设置密码,或者使用默认的空密码,然后在安全配置时设置。此外,安装完成后,可能需要调整身份验证插件,特别是如果用户需要使用旧版的密码验证方式的话,可能需要修改配置文件。 另外,用户可能关心安装后的基本操作,比如如何启动、启用服务,以及如何远程访问等,是否需要包含这些内容?根据用户的问题,他们可能只需要安装步骤,但适当提供一些常用命令(如启动服务、检查状态)可能更有帮助。 还需要注意,不同的Ubuntu版本可能有不同的兼容性问题,但MySQL 8的APT仓库通常支持多个Ubuntu版本。因此,步骤应该是通用的,但需要提醒用户如果遇到依赖问题,可能需要调整仓库或安装其他依赖包。 最后,确保引用的参考资料正确,尽管用户提供的引用似乎更多是关于MySQL 5.7的,但步骤应该是根据MySQL官方文档整理的最新方法,因此可能需要指出参考了官方指南,并替换正确的引用链接(如果用户提供的引用中有相关的内容的话,但根据用户给出的引用,可能没有直接提到MySQL 8,所以可能需要注意这一点,避免误导)。 总结下来,安装步骤应该清晰、详细,并且每个命令都正确无误。同时,要提醒用户注意安全设置,比如设置强密码和关闭不必要的远程访问。可能还需要提到UFW防火墙的设置,如果用户需要远程连接的话,但可能超出安装步骤的范围,可以放在相关问题里。</think>以下是在Ubuntu系统上安装MySQL 8的详细步骤指南,支持Ubuntu 18.04/20.04/22.04等版本: --- ### **步骤1:更新系统包** ```bash sudo apt update && sudo apt upgrade -y ``` --- ### **步骤2:添加MySQL官方APT仓库** 1. 下载MySQL仓库配置文件: ```bash wget https://dev.mysql.com/get/mysql-apt-config_0.8.28-1_all.deb ``` 2. 安装配置文件: ```bash sudo dpkg -i mysql-apt-config_0.8.28-1_all.deb ``` * 安装过程中选择`MySQL Server & Cluster` -> `mysql-8.0`,然后按`OK`[^1]。 --- ### **步骤3:安装MySQL 8** 1. 更新仓库并安装: ```bash sudo apt update sudo apt install mysql-server -y ``` --- ### **步骤4:安全配置** 1. 运行安全脚本: ```bash sudo mysql_secure_installation ``` * 根据提示设置root密码、移除匿名用户、禁止远程root登录等[^2]。 --- ### **步骤5:验证安装** ```bash mysql --version # 登录MySQL控制台 sudo mysql -u root -p ``` --- ### **常见问题处理** 1. **忘记root密码** 编辑配置文件: ```bash sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf ``` 在`[mysqld]`段落下添加: ``` skip-grant-tables ``` 重启服务后重置密码: ```bash sudo systemctl restart mysql mysql -u root ``` 2. **启用远程访问** 修改绑定地址: ```bash sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf # 将bind-address = 127.0.0.1改为0.0.0.0 ``` 重启服务: ```bash sudo systemctl restart mysql ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值