MySQL——在ubuntu环境下安装MySQL

💁‍♂️个人主页:进击的荆棘

👇作者其它专栏:

《数据结构与算法》《算法》《C++起始之路》《Linux》


目录

1.卸载不要的环境

2.检查系统安装包

3. 卸载这些默认安装包并备份

4. 获取 MySQL 官方源

5. 安装源,对比前后源目录

6. 看看能不能正常工作

7. 安装 MySQL 服务

8. 查看配置文件和数据存储位置

9.启动服务&查看启动服务

10.登录与修改密码

11.设置开机启动

12.配置my.cnf(修改字符集等)

13.常见问题:密钥过期


说明:

●安装与卸载中,切换成root身份,一旦安装,普通用户能使用

1.卸载不要的环境

bash 复制代码
# 检查是否有 mariadb 或 mysql 进程
ps ajx | grep -E "mysql|mariadb"

# 停止服务(如果有)
sudo systemctl stop mariadb
sudo systemctl stop mysql

# 卸载默认安装包(彻底清理)
sudo apt purge mysql-server mysql-client mysql-common mariadb-server mariadb-client -y
sudo apt autoremove -y

2.检查系统安装包

bash 复制代码
dpkg -l | grep -i mysql
dpkg -l | grep -i mariadb

3. 卸载这些默认安装包并备份

bash 复制代码
# 备份配置文件和数据(对应文档的 /etc/my.cnf 和 /var/lib/mysql)
sudo tar -zcvf /root/mysql_backup.tar.gz /etc/mysql /var/lib/mysql

# 彻底删除目录(极其重要:如果不删干净,重装会报错)
sudo rm -rf /etc/mysql /var/lib/mysql /var/log/mysql

4. 获取 MySQL 官方源

注: 如果你的 Ubuntu 是 22.04 及以上,系统默认源里就有 MySQL 8.0/8.4,你可以直接跳过第4、5步去第6步

bash 复制代码
# 去官网下载最新的 apt-config 包
wget https://dev.mysql.com/get/mysql-apt-config_0.8.36-1_all.deb

5. 安装源,对比前后源目录

bash 复制代码
# 查看安装前
ls -al /etc/apt/sources.list.d/

# 安装配置包(注意:弹出的界面里选择需要的 MySQL 版本)
sudo dpkg -i mysql-apt-config_0.8.36-1_all.deb

# 更新源
sudo apt update

# 查看安装后,会多出一个 mysql.list
ls -al /etc/apt/sources.list.d/

6. 看看能不能正常工作

bash 复制代码
apt-cache search mysql-server

7. 安装 MySQL 服务

bash 复制代码
sudo apt install -y mysql-server

8. 查看配置文件和数据存储位置

配置文件在/etc/mysql/mysql.conf.d/mysqld.cnf,数据在/var/lib/mysql

bash 复制代码
ls /etc/mysql/mysql.conf.d/mysqld.cnf
sudo ls /var/lib/mysql

9.启动服务&查看启动服务

Ubuntu中MySQL的服务名通常叫mysql(不像CentOS叫mysqld)

bash 复制代码
# 启动
sudo systemctl start mysql

# 查看进程
ps axj | grep mysql

10.登录与修改密码

Ubuntu(MySQL 8.0+):默认使用auth_socket插件,**root用户默认没有密码,**且只允许系统root身份登录

登录方法一:

bash 复制代码
# 直接加 sudo 登录,不需要输入密码
sudo mysql

若想设置密码并允许密码登录:

进入sudo mysql后,执行以下SQL语句:

sql 复制代码
# 修改认证方式并设置密码(把 '你的密码' 换成实际密码)
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '你的密码';
FLUSH PRIVILEGES;
EXIT;

退出后,就可以用mysql -u root -p加密码登录了

登录方式三:

若在Ubuntu下忘记了密码,可以修改/etc/mysql/mysql.conf.d/mysql.cnf

bash 复制代码
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf
# 在 [mysqld] 下面加入一行:
skip-grant-tables
# 重启服务
sudo systemctl restart mysql
# 输入 mysql 即可免密进入,然后修改密码

11.设置开机启动

bash 复制代码
sudo systemctl enable mysql

12.配置my.cnf(修改字符集等)

bash 复制代码
sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf

在mysqld标签下添加或修改:

bash 复制代码
[mysqld]
port = 3306
datadir = /var/lib/mysql
socket = /var/run/mysqld/mysqld.sock
character-set-server = utf8mb4
default-storage-engine = innodb

13.常见问题:密钥过期

若在apt update时遇到MySQL的GPG错误:

bash 复制代码
# 导入最新的公钥(现代 Ubuntu 推荐方式)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C

若是非常新的系统,apt-key被弃用,可改用:

bash 复制代码
curl -fsSL https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 | sudo gpg --dearmor -o /usr/share/keyrings/mysql.gpg
相关推荐
hey you~1 小时前
云呼叫中心坐席自动分配实战:ACD 策略、Redis+Lua 实现与排查清单
数据库·redis·lua·云呼叫中心·acd·坐席分配·坐席状态机
夜雪一千1 小时前
MySQL 数据字典如何获得
数据库·mysql
系统集成-鹰翔1 小时前
ERP推单数据库怎么备份:SQLite WAL模式下只复制db文件为什么可能漏任务
javascript·数据库·经验分享·后端
QianhangQianping1 小时前
撤销重做不是「存快照」:一个可视化编辑器的Operation 设计
java·前端·数据库·typescript·编辑器·前端架构·撤销重做
honsor1 小时前
用 Grafana 做温湿度异常检测:从阈值告警到趋势预测
数据库·mysql·php
赵渝强老师2 小时前
【赵渝强老师】YashanDB Developer Center(YDC,崖山数据库开发者中心)
数据库·国产数据库·yashandb·崖山数据库
lusklusklusk2 小时前
SQL Server 为什么普通 SELECT 会阻塞 UPDATE?——行级 S 锁到表级 S 锁的锁升级原理与实验验证
数据库·mysql·oracle
Leo.yuan2 小时前
企业业务人员如何独立完成数据分析?2026年自助BI工具选型与应用指南
大数据·数据库·人工智能
roman_日积跬步-终至千里2 小时前
数仓开发的三层责任:业务定义、模型设计与 SQL 实现
数据库·数据仓库·sql·数据建模