ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【MySQL】Ubuntu 保姆级安装实操手册:从软件源配置到登录与 UTF8 编码,一篇搞定

【MySQL】Ubuntu 保姆级安装实操手册:从软件源配置到登录与 UTF8 编码,一篇搞定


🎬 个人主页:MSTcheng · CSDN
🌱代码仓库:MSTcheng · Gitee

🔥 精选专栏:
《C语言》《数据结构》 《算法学习》
《C++由浅入深》
《Linux操作系统》
《Mysql数据库》 《白话大模型》
💬座右铭:路虽远行则将至,事虽难做则必成!

文章目录

    • 引言:
  • 一、安装MySQL官方软件源
    • 2.1 确认Ubuntu版本
    • 2.2 更新软件源(验证是否生效)
    • 2.3 验证软件源是否配置正确
  • 第二步:正式安装MySQL 8.0
    • 2.1 开始安装
    • 2.2 安装后验证
  • 第三步:启动MySQL服务
    • 3.1 启动MySQL服务
    • 3.2 设置开机启动(可选)
  • 第五步:登录MySQL 8.0(Ubuntu)
    • 5.1 方案一:sudo 免密登录(推荐,最常用)
    • 5.2 方案二:给 root 设置密码,改用 `mysql -u root -p` 登录
    • 5.3 方案三:忘记 root 密码时重置(跳过权限表)
  • 第六步:配置MySQL编码(统一使用UTF8)
    • 5.1 编辑配置文件
    • 5.2 添加编码配置
    • 5.3 重启服务使配置生效
    • 5.4 验证编码配置是否生效
  • 日常常用命令速查
  • 总结

引言:

在数据驱动的时代,数据存储几乎是所有应用系统的核心需求。MySQL作为全球最流行的开源关系型数据库之一,凭借稳定、高效、跨平台、生态成熟等优势,被广泛用于网站、电商、企业级系统等各类场景。学会了MySQL,就等于掌握了与数据打交道的基础能力,也是后端开发、数据分析等方向的重要技能。
因此,本文将带领大家正式迈进 MySQL 的大门——从最基础的环境搭建开始,先完成 MySQL 的安装与配置,为后续学习打下坚实根基。

一、安装MySQL官方软件源

目的:让系统知道可以从哪里下载MySQL

2.1 确认Ubuntu版本

cat/etc/os-release# 或lsb_release# 示例:Ubuntu 22.04 对应代号 jammyammy`### 2.2 下载MySQL 8.0官方软件源方软件源1. 访问 MySQL官方官网:https://dev.mysql.com/downloads/repo/2. 选择 **Ubuntu**3. 选择 **MySQL Community Server8.0**84. 下载对应的`mysql-apt-config`DEB包(注意:Ubuntu需要DEB包,系统会自动转换)动转### 2.3 上传DEB包到Ubuntu系统tu系统```bash# 上传到 /tmp# 假设下载的DEB文件名为:mysql-apt-config_0.8.24-1_all.debsudodpkg-imysql-apt-config_*.deb.rpm# 安装过程中会出现配置界面,选择 OK 即可

2.2 更新软件源(验证是否生效)

# 查看安装后的源列表ls/etc/apt/sources.list.d/# 应该能看到 mysql-apt-config.list 或类似文件cat/etc/apt/sources.list.d/mysql-apt-config.list

2.3 验证软件源是否配置正确

# 更新APT缓存sudoapt-getupda# 检查能否看到 mysql 8.0 相关包7相关包apt-cachesearch mysql|head-20

第二步:正式安装MySQL 8.0

目的:安装MySQL服务端

2.1 开始安装

# 安装MySQL社区版服务器(会自动安装客户端、服务端、库等)sudoapt-getinstallmysql-community-server-y# 如果提示密钥过期问题(常见错误):# 错误信息类似:GPG key expired# 解决方法:# 1. 导入新的GPG密钥# 2. 重新安装sudoapt-key adv --fetch-keys'https://repo.mysql.com/RPM-GPG-KEY-mysql-2022'sudoapt-getupdatesudoapt-getinstallmysql-community-server-y

2.2 安装后验证

# 检查3个关键文件/程序是否存在:ls/etc/mysql/my.cnf# ✅ 配置文件whichmysqladmin# ✅ 服务端管理程序whichmysql# ✅ 客户端程序

第三步:启动MySQL服务

3.1 启动MySQL服务

# 启动MySQL服务sudosystemctl start mysql# 查看服务是否运行ps-ef|grepmysql# 应该看到 mysqld 进程# 查看监听端口(MySQL默认3306)sudonetstat-tlnp|grep3306# 或sudoss-tlnp|grep3306
//我当前的mysql服务已经启动了所以能直接看到3306的端口已经在监听了! mstcheng@ubuntu-dev:~/117/code/test1$ sudo netstat -tlnp | grep 3306 tcp6 0 0 :::33060 :::* LISTEN 1602/mysqld tcp6 0 0 :::3306 :::* LISTEN 1602/mysqld

也可以通过ps ajx命令去查看mysqld这个服务是否启动了!

3.2 设置开机启动(可选)

# 设置MySQL开机自启动sudosystemctlenablemysql# 查看开机启动状态sudosystemctl is-enabled mysql

第五步:登录MySQL 8.0(Ubuntu)

目的:掌握 MySQL 8.0 在 Ubuntu 环境下的正确登录方式

MySQL 8.0 在 Ubuntu 上通过 APT 安装后,默认登录机制和 mysql5.7 有明显区别:

  • 5.7 通常会生成一个temporary password,写在/var/log/mysql/error.log里。
  • 8.0(Ubuntu 版)默认让root使用auth_socket认证插件,也就是“系统当前用户是 root 时,可以直接免密进入 MySQL”。

所以,MySQL 8.0 的 root 免密登录,指的是sudo mysql免密,而不是mysql -u root -p空密码。

5.1 方案一:sudo 免密登录(推荐,最常用)

# 直接以系统管理员身份进入 MySQLsudomysql# 正常会出现 mysql> 提示符,无需输入密码

进入后可以顺便查看root的认证方式:

SELECTuser,host,pluginFROMmysql.userWHEREuser='root';

如果plugin列显示为auth_socket,就说明当前 root 走的是“本机免密”认证。(注意,上面涉及到一些sql的语法,这里只是演示,后面会重点介绍!)。

5.2 方案二:给 root 设置密码,改用mysql -u root -p登录

如果你希望像 5.7 那样,用mysql -u root -p输入密码登录,需要先把root的认证插件从auth_socket改成密码认证:

# 先通过 sudo 免密进入sudomysql
-- 8.0 默认推荐 caching_sha2_passwordALTERUSER'root'@'localhost'IDENTIFIEDWITHcaching_sha2_passwordBY'你的新密码';FLUSHPRIVILEGES;EXIT;

设置完成后,就可以使用密码登录:

mysql-uroot-p# 输入刚才设置的密码即可

提示:如果你的数据库客户端比较老,提示无法使用caching_sha2_password,可以临时改用mysql_native_password:

ALTERUSER'root'@'localhost'IDENTIFIEDWITHmysql_native_passwordBY'你的新密码';

5.3 方案三:忘记 root 密码时重置(跳过权限表)

一般只有当你设置过密码又忘记时才需要用到,日常登录优先用方案一、方案二。

# 1. 停止 MySQL 服务sudosystemctl stop mysql# 2. 创建运行目录(部分环境需要)sudomkdir-p/var/run/mysqldsudochownmysql:mysql /var/run/mysqld# 3. 跳过权限表启动 MySQLsudomysqld --skip-grant-tables--user=mysql&# 4. 另开一个终端,无密码登录mysql-uroot

登录成功后执行:

-- 先刷新生效FLUSHPRIVILEGES;-- 重新设置 root 密码ALTERUSER'root'@'localhost'IDENTIFIEDBY'你的新密码';FLUSHPRIVILEGES;EXIT;

最后恢复正常启动:

# 结束跳过权限表启动的进程sudopkillmysqld# 正常启动 MySQL 服务sudosystemctl start mysql

关于用户密码,创建用户,删除用户,root账号更改普通账号密码的问题,会在后面的用户管理篇详细介绍,这里略微了解一下即可!

⚠️重要提醒:无论当前是在内网测试环境,还是即将部署到真正的生产环境,都一定要给root账号设置强密码,并妥善保管、定期更换。因为root拥有数据库的最高权限,一旦 MySQL 端口可被网络访问或被他人登录,攻击者就可能直接获得对整个数据库的控制权,进而造成数据泄露、篡改甚至删库。

第六步:配置MySQL编码(统一使用UTF8)

目的:避免中文乱码

5.1 编辑配置文件

sudovim/etc/mysql/my.cnf

5.2 添加编码配置

在[mysqld]段中(如果没有该段就创建),添加以下内容:

[mysqld] # 端口(默认3306,不改也可以) port = 3306 # 数据目录(默认,通常不用改) datadir = /var/lib/mysql # 错误日志文件(默认) # error_log = /var/log/mysql/error.log # 设置编码为UTF8(关键配置!) character-set-server = utf8 init_connect='SET NAMES utf8' # 设置默认存储引擎为InnoDB storage_engine = innodb

5.3 重启服务使配置生效

sudosystemctl restart mysql

5.4 验证编码配置是否生效

# 登录MySQL后执行:mysql-uroot-pSHOW VARIABLES LIKE'character_set%';SHOW VARIABLES LIKE'collation%';# 应该看到:# character_set_server: utf8# collation_server: utf8_general_ci

日常常用命令速查

功能命令
启动MySQLsudo systemctl start mysql
停止MySQLsudo systemctl stop mysql
重启MySQLsudo systemctl restart mysql
查看MySQL状态sudo systemctl status mysql
查看MySQL进程ps -ef | grep mysql
查看端口sudo netstat -tlnp | grep 3306
登录MySQL(带密码)mysql -u root -p
登录MySQL(指定端口)mysql -u root -P 3306 -p
退出MySQLexit或quit
设置开机启动sudo systemctl enable mysql
取消开机启动sudo systemctl disable mysql

总结

本文以 Ubuntu 为例,介绍了 MySQL 8.0 的完整安装与配置流程:先配置官方软件源,再安装 MySQL服务端;随后启动服务并设置开机自启。登录部分重点说明了 8.0 的sudo mysql免密登录、为root设置密码,以及忘记密码时的重置方法。最后统一配置 UTF8 编码,避免中文乱码,并整理了日常常用命令。掌握这些内容后,MySQL环境准备就算完成了。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进