• MySQL 安装难?开玩笑!这份攻略让你五分钟搞定

MySQL 安装难?开玩笑!这份攻略让你五分钟搞定

2025-08-16 12:33:55 栏目:宝塔面板 0 阅读

  • 适用人群:Linux小白、Ubuntu初学者、第一次接触MySQL的同学
  • 系统版本:Ubuntu 20.04 LTS
  • 预计用时:5-10分钟

你是不是也遇到过这样的困扰:看着网上各种MySQL安装教程,要么步骤不全,要么版本太老,要么就是一堆专业术语看得云里雾里?

别慌!今天这篇教程专门为小白量身定制,保证你跟着做一遍就能成功!我们用最简单的APT包管理器来安装,就像在手机上装APP一样简单。

一、安装前的准备工作

第一步:确认你的Ubuntu版本

首先,让我们确认一下系统版本。打开终端(按Ctrl + Alt + T),输入:

lsb_release -a

你应该看到类似这样的输出:

Distributor ID: Ubuntu
Description:    Ubuntu 20.04.x LTS
Release:        20.04
Codename:       focal

如果看到20.04,那就对了!

第二步:更新系统包列表

这一步很重要,就像给你的"软件商店"刷新一下最新的软件列表:

sudo apt update

小贴士:输入这个命令后,系统可能会要求你输入密码,这是正常的。输入时屏幕上不会显示密码字符,直接输入完按回车就行。

二、开始安装MySQL

第三步:安装MySQL服务器

现在是关键时刻!输入这个"魔法咒语":

sudo apt install mysql-server

系统会问你是否继续安装(Do you want to continue? [Y/n]),直接按回车或者输入Y然后回车。

这里会发生什么?

  • 系统开始下载MySQL相关文件
  • 自动安装和配置
  • 你会看到一堆滚动的文字,这是正常的,耐心等待

第四步:检查MySQL是否安装成功

安装完成后,让我们检查一下MySQL服务是否正在运行:

sudo systemctl status mysql

如果看到绿色的active (running)字样,恭喜你,安装成功了!

如果没有自动启动,可以手动启动:

sudo systemctl start mysql

第四步补充:安装MySQL开发库(重要)

如果你后续需要开发MySQL相关的程序(比如用C/C++、Python等语言连接MySQL),建议现在就安装MySQL的开发库:

sudo apt install libmysqlclient-dev -y

这个库的作用:

  • 提供MySQL的C语言头文件和库文件
  • 支持多种编程语言的MySQL连接器编译
  • C/C++程序连接MySQL必备

什么时候需要:

  • 编写C/C++程序连接MySQL
  • 安装一些Python包(如mysqlclient)时需要
  • 编译其他需要MySQL支持的软件

安装很快,现在装上以后就不用担心了,避免后续开发时再去找这个依赖。

三、MySQL安全配置(重要!)

第五步:运行安全配置脚本

MySQL安装后默认设置比较宽松,我们需要加强一下安全性。MySQL 8.0的安全配置脚本运行起来很简单:

sudo mysql_secure_installation

运行过程说明:

  • MySQL 8.0会自动检测当前的认证方式
  • 如果root用户使用auth_socket认证,脚本会正常运行
  • 直接按回车通常不会有问题

这个命令会启动一个交互式的配置过程,跟着我的步骤来:

配置过程详解:

① 是否安装密码验证插件?

Would you like to setup VALIDATE PASSWORD plugin? (Press y|Y for Yes, any other key for No):
  • 新手建议:输入n(不安装)
  • 为什么:这个插件会强制要求复杂密码,对新手来说可能比较麻烦

② 删除匿名用户?

Remove anonymous users? (Press y|Y for Yes, any other key for No):

建议:输入y(删除匿名用户,提高安全性)

③ 禁止root远程登录?

Disallow root login remotely? (Press y|Y for Yes, any other key for No):

建议:输入y(禁止远程登录,提高安全性)

④ 删除test数据库?

Remove test database and access to it? (Press y|Y for Yes, any other key for No):

建议:输入y(删除测试数据库)

⑤ 重新加载权限表?

Reload privilege tables now? (Press y|Y for Yes, any other key for No):

建议:输入y(立即生效配置)

四、测试MySQL安装

第六步:登录MySQL并配置root用户认证方式

(1) 首次登录MySQL

MySQL 8.0安装后,root用户默认使用auth_socket认证方式,这意味着你可以直接用sudo登录,无需密码:

sudo mysql

成功的标志:你会看到类似这样的欢迎信息:

Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 8
Server version: 8.0.xx-Ubuntu

mysql>

(2) 查看当前root用户认证方式

在MySQL命令行中,输入以下命令查看root用户的认证信息:

SELECT user, host, plugin, authentication_string FROM mysql.user WHERE user='root';

你会看到类似这样的输出:

+------+-----------+-------------+-----------------------+
| user | host      | plugin      | authentication_string |
+------+-----------+-------------+-----------------------+
| root | localhost | auth_socket |                       |
+------+-----------+-------------+-----------------------+

解释:

  • plugin显示为auth_socket,表示使用socket认证
  • authentication_string为空,表示没有设置密码

(3) 修改root用户认证方式(推荐)

为了方便日常使用和提高安全性,建议将root用户的认证方式改为传统的密码认证(mysql_native_password):

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

重要说明:

  • 将your_password替换为你想要设置的密码
  • 密码要足够强壮,建议包含大小写字母、数字和特殊字符

(4) 验证修改结果

再次查看root用户的认证信息:

SELECT user, host, plugin, authentication_string FROM mysql.user WHERE user='root';

现在你应该看到:

+------+-----------+-----------------------+-------------------------------------------+
| user | host      | plugin                | authentication_string                     |
+------+-----------+-----------------------+-------------------------------------------+
| root | localhost | mysql_native_password | *加密后的密码字符串*                      |
+------+-----------+-----------------------+-------------------------------------------+

(5) 退出并重新登录测试

退出MySQL:

EXIT;

现在用新的密码登录:

mysql -u root -p

系统会提示输入密码,输入你刚才设置的密码。

为什么要做这个修改?

  • 方便性:可以直接用密码登录,不需要sudo权限
  • 兼容性:某些应用程序可能不支持auth_socket认证
  • 安全性:明确的密码认证更符合数据库安全规范

看到mysql>这个提示符,说明你已经成功进入MySQL了!

第七步:创建普通用户(推荐)

在实际项目中,我们通常不直接使用root用户,而是创建专门的普通用户。这是一个好习惯!

(1) 创建新用户

在MySQL命令行中执行:

-- 创建新用户(将username和password替换为你想要的用户名和密码)
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

举个例子:

-- 创建一个名为myapp的用户,密码是myapp123
CREATE USER 'myapp'@'localhost' IDENTIFIED BY 'myapp123';

(2) 给用户授权

新创建的用户默认没有任何权限,我们需要给它分配权限:

-- 给用户授予某个数据库的所有权限
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'localhost';

-- 如果要给用户授予所有数据库的权限(谨慎使用)
GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';

实际例子:

-- 先创建一个测试数据库
CREATE DATABASE testdb;

-- 给myapp用户授予testdb数据库的所有权限
GRANT ALL PRIVILEGES ON testdb.* TO 'myapp'@'localhost';

-- 刷新权限
FLUSH PRIVILEGES;

(3) 测试新用户

退出当前连接:

EXIT;

用新用户登录:

mysql -u myapp -p

输入密码后,试试查看数据库:

SHOW DATABASES;

你应该能看到testdb数据库。

第八步:简单测试

在MySQL命令行中,试试这些基本命令:

-- 查看所有数据库
SHOW DATABASES;

-- 查看MySQL版本
SELECT VERSION();

-- 退出MySQL
EXIT;

注意:每个SQL命令后面要加分号;

五、设置MySQL开机自启动

让MySQL在每次开机时自动启动:

sudo systemctl enable mysql

检查是否设置成功:

sudo systemctl is-enabled mysql

如果返回enabled,就成功了!

六、常用MySQL管理命令

作为小白,记住这几个命令就够用了:

# 启动MySQL服务
sudo systemctl start mysql

# 停止MySQL服务
sudo systemctl stop mysql

# 重启MySQL服务
sudo systemctl restart mysql

# 查看MySQL服务状态
sudo systemctl status mysql

# 连接MySQL
mysql -u root -p

七、可能遇到的问题及解决方案

问题1:忘记root密码怎么办?

情况1:如果你使用的是默认的auth_socket认证 可以直接用sudo登录:

sudo mysql

然后重新设置密码:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
EXIT;

情况2:如果你已经设置了mysql_native_password认证但忘记密码 可以这样重置:

# 停止MySQL服务
sudo systemctl stop mysql

# 安全模式启动MySQL
sudo mysqld_safe --skip-grant-tables &

# 无密码登录
mysql -u root

# 在MySQL中执行
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密码';
FLUSH PRIVILEGES;
EXIT;

# 重启MySQL
sudo systemctl restart mysql

问题2:无法连接MySQL

如果遇到连接问题,检查服务是否运行:

sudo systemctl status mysql

如果服务没运行,启动它:

sudo systemctl start mysql

问题3:端口被占用

MySQL默认使用3306端口,检查端口是否被占用:

sudo netstat -tlnp | grep 3306

八、给初学者的小建议

  • 记住你的密码:MySQL的root密码一定要记住,建议写在安全的地方
  • 定期备份:养成备份数据库的好习惯
  • 学习基础SQL:安装只是第一步,学会基本的SQL语句才能真正使用MySQL
  • 使用图形化工具:推荐安装Navicat、DBeaver或MySQL Workbench,图形界面更友好

九、总结

恭喜你!如果按照以上步骤操作,你现在已经:

  • 成功在Ubuntu 20.04上安装了MySQL
  • 完成了基本的安全配置
  • 学会了基本的MySQL管理命令
  • 知道了常见问题的解决方法

MySQL已经准备好为你的项目服务了!接下来你可以开始学习SQL语句,创建数据库和表,开始你的数据库之旅。

本文地址:https://www.yitenyun.com/346.html

搜索文章

Tags

数据库 API FastAPI Calcite 电商系统 MySQL Web 应用 异步数据库 数据同步 ACK 双主架构 循环复制 Deepseek 宝塔面板 Linux宝塔 Docker 生命周期 JumpServer JumpServer安装 堡垒机安装 Linux安装JumpServer 序列 核心机制 esxi esxi6 root密码不对 无法登录 web无法登录 SSL 堡垒机 跳板机 HTTPS Windows Windows server net3.5 .NET 安装出错 宝塔面板打不开 宝塔面板无法访问 查看硬件 Linux查看硬件 Linux查看CPU Linux查看内存 连接控制 机制 HTTPS加密 Windows宝塔 Mysql重置密码 无法访问宝塔面板 HexHub 运维 Oracle 处理机制 Serverless 无服务器 语言 Spring Redis 异步化 ES 协同 技术 group by 索引 InnoDB 数据库锁 监控 开源 PostgreSQL 存储引擎 高可用 SQL 动态查询 分页查询 响应模型 缓存方案 缓存架构 缓存穿透 R edis 线程 数据 主库 自定义序列化 服务器 管理口 scp Linux的scp怎么用 scp上传 scp下载 scp命令 日志文件 MIXED 3 查询 SVM Embedding 存储 OB 单机版 Linux 安全 工具 电商 系统 SQLark SQLite-Web SQLite 数据库管理工具 架构 Rsync Postgres OTel Iceberg RocketMQ 长轮询 配置 Recursive 云原生 流量 共享锁 • 索引 • 数据库 防火墙 黑客 修改DNS Centos7如何修改DNS 向量数据库 大模型 聚簇 非聚簇 sftp 服务器 参数 PG DBA 缓存 业务 AI 助手 Ftp ​Redis 机器学习 推荐模型 场景 GreatSQL 连接数 优化 万能公式 数据备份 MySQL 9.3 Netstat Linux 服务器 端口 数据分类 加密 同城 双活 信息化 智能运维 RDB AOF openHalo INSERT COMPACT 窗口 函数 人工智能 推荐系统 核心架构 订阅机制 事务 Java 开发 MVCC 磁盘架构 线上 库存 预扣 redo log 重做日志 网络架构 网络配置 Doris SeaTunnel prometheus Alert Redisson 锁芯 向量库 Milvus mini-redis INCR指令 Undo Log 高效统计 今天这篇文章就跟大家 Python 引擎 性能 网络故障 B+Tree ID 字段 模型 IT运维 Canal Web PostGIS 不宕机 数据脱敏 加密算法 R2DBC Redis 8.0 Hash 字段 分布式 集中式 崖山 新版本 自动重启 Pottery 微软 SQL Server AI功能 容器化 虚拟服务器 虚拟机 内存 OAuth2 Token JOIN Entity ZODB DBMS 管理系统 MongoDB 容器 数据类型 数据结构 读写 sqlmock 启动故障 分库 分表 LRU SpringAI 悲观锁 乐观锁 数据集成工具 分页 单点故障 QPS 高并发 传统数据库 向量化 数据页 StarRocks 数据仓库 Testcloud 云端自动化 Redka 工具链 排行榜 排序 发件箱模式 事务隔离 部署 聚簇索引 非聚簇索引 分页方案 排版 filelock 意向锁 记录锁 速度 服务器中毒 Web 接口 1 大表 业务场景 SSH 池化技术 连接池 Caffeine CP 仪表盘 分布式架构 分布式锁​ dbt 数据转换工具 日志 原子性 EasyExcel MySQL8 AIOPS MCP 开放协议 优化器 网络 InfluxDB Order IT 双引擎 RAG HelixDB 频繁 Codis Go 数据库迁移 字典 单线程 Ansible 对象 Crash 代码 LLM 事务同步 订单 线程安全 Pump List 类型 UUIDv7 主键 服务器性能 锁机制 ReadView 国产数据库 Next-Key 国产 用户 RR 互联网 数据字典 兼容性 算法 GitHub Git 语句 播客 慢SQL优化 拦截器 动态代理 TIME_WAIT 负载均衡 矢量存储 数据库类型 AI代理 千万级 MGR 失效 行业 趋势 多线程 Weaviate 分布式集群 并发控制 恢复机制 闪回 产业链 快照读 当前读 视图 关系数据库 编程 主从复制 代理 count(*) count(主键) 行数 UUID ID 神经系统 表空间 Valkey Valkey8.0 查询规划 恢复数据 分布式锁 CAS 技巧 Zookeeper 解锁 调优