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

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


在这里插入图片描述


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

🔥 精选专栏:
《C语言》《数据结构》 《算法学习》
《C++由浅入深》
《Linux操作系统》
《Mysql数据库》 《白话大模型》

💬座右铭: 路虽远行则将至,事虽难做则必成!

引言:

在数据驱动的时代,数据存储几乎是所有应用系统的核心需求。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 Server 8.0**84. 下载对应的 `mysql-apt-config` DEB包(注意:Ubuntu需要DEB包,系统会自动转换)动转### 2.3 上传DEB包到Ubuntu系统tu系统

```bash
# 上传到 /tmp# 假设下载的DEB文件名为:mysql-apt-config_0.8.24-1_all.deb
sudo dpkg -i mysql-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缓存
sudo apt-get upda# 检查能否看到 mysql 8.0 相关包7相关包
apt-cache search mysql | head -20

第二步:正式安装MySQL 8.0

目的:安装MySQL服务端

2.1 开始安装

# 安装MySQL社区版服务器(会自动安装客户端、服务端、库等)
sudo apt-get install mysql-community-server -y

# 如果提示密钥过期问题(常见错误):
# 错误信息类似:GPG key expired
# 解决方法:
# 1. 导入新的GPG密钥
# 2. 重新安装
sudo apt-key adv --fetch-keys 'https://repo.mysql.com/RPM-GPG-KEY-mysql-2022'
sudo apt-get update
sudo apt-get install mysql-community-server -y

2.2 安装后验证

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

第三步:启动MySQL服务

3.1 启动MySQL服务

# 启动MySQL服务
sudo systemctl start mysql

# 查看服务是否运行
ps -ef | grep mysql
# 应该看到 mysqld 进程

# 查看监听端口(MySQL默认3306)
sudo netstat -tlnp | grep 3306
# 或
sudo ss -tlnp | grep 3306
//我当前的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开机自启动
sudo systemctl enable mysql

# 查看开机启动状态
sudo systemctl 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 免密登录(推荐,最常用)

# 直接以系统管理员身份进入 MySQL
sudo mysql

# 正常会出现 mysql> 提示符,无需输入密码

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

# 先通过 sudo 免密进入
sudo mysql
-- 8.0 默认推荐 caching_sha2_password
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '你的新密码';
FLUSH PRIVILEGES;
EXIT;

在这里插入图片描述

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

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

在这里插入图片描述

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

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

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

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

# 1. 停止 MySQL 服务
sudo systemctl stop mysql

# 2. 创建运行目录(部分环境需要)
sudo mkdir -p /var/run/mysqld
sudo chown mysql:mysql /var/run/mysqld

# 3. 跳过权限表启动 MySQL
sudo mysqld --skip-grant-tables --user=mysql &

# 4. 另开一个终端,无密码登录
mysql -u root

登录成功后执行:

-- 先刷新生效
FLUSH PRIVILEGES;

-- 重新设置 root 密码
ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码';
FLUSH PRIVILEGES;
EXIT;

最后恢复正常启动:

# 结束跳过权限表启动的进程
sudo pkill mysqld

# 正常启动 MySQL 服务
sudo systemctl start mysql

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

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

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

目的:避免中文乱码

5.1 编辑配置文件

sudo vim /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 重启服务使配置生效

sudo systemctl restart mysql

5.4 验证编码配置是否生效

# 登录MySQL后执行:
mysql -u root -p
SHOW 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环境准备就算完成了。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/2403_86779341/article/details/167587257

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--