🌱代码仓库: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.list2.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-y2.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.cnf5.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 = innodb5.3 重启服务使配置生效
sudosystemctl restart mysql5.4 验证编码配置是否生效
# 登录MySQL后执行:mysql-uroot-pSHOW VARIABLES LIKE'character_set%';SHOW VARIABLES LIKE'collation%';# 应该看到:# character_set_server: utf8# collation_server: utf8_general_ci日常常用命令速查
| 功能 | 命令 |
|---|---|
| 启动MySQL | sudo systemctl start mysql |
| 停止MySQL | sudo systemctl stop mysql |
| 重启MySQL | sudo 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 |
| 退出MySQL | exit或quit |
| 设置开机启动 | sudo systemctl enable mysql |
| 取消开机启动 | sudo systemctl disable mysql |
总结
本文以 Ubuntu 为例,介绍了 MySQL 8.0 的完整安装与配置流程:先配置官方软件源,再安装 MySQL服务端;随后启动服务并设置开机自启。登录部分重点说明了 8.0 的
sudo mysql免密登录、为root设置密码,以及忘记密码时的重置方法。最后统一配置 UTF8 编码,避免中文乱码,并整理了日常常用命令。掌握这些内容后,MySQL环境准备就算完成了。