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

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

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

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