资讯详情

Linux下MySQL 8.0安装与MySQL Workbench连接实战全指南

📅 2026/10/21 17:46:04 | 华诺云谱 👁 阅读
Linux下MySQL 8.0安装与MySQL Workbench连接实战全指南
想在 Linux 上把 MySQL 8.0 从零装好再用 MySQL Workbench 连上去做图形化管理这几乎是每个后端开发、运维和刚入门的数据库学习者都要过一遍的基础流程。尤其是第一次接触 Linux 服务器命令不熟、权限不清楚很容易在“安装后连不上”“密码没设置对”“Workbench 提示认证失败”这些环节卡住好几个小时。这篇内容就是我完整跑通这套流程的记录从系统环境检查、MySQL 8.0 安装方式选择、初始化与安全配置到 Workbench 的安装、连接、建库建表再到实际踩过的坑。不管你是第一次接触 Linux 数据库环境搭建还是想在 8.0 版本上快速把工具链跑顺都可以直接照着操作。1. 内容整体设计与思路拆解1.1 task1 的目标是什么这个 task1 的核心目标非常明确在一台 Linux 服务器上完成 MySQL 8.0 的下载安装并在本机安装 MySQL Workbench最终实现从 Workbench 成功连接到 MySQL 服务端。表面看这就是“装两个软件、连一下”但真正落到项目里它其实包含了四个需要掌握的能力点Linux 包管理工具的使用。无论你用 APT 还是 YUM都要知道怎么搜索、安装、卸载软件包。MySQL 服务的启动、停止、查看状态和开机自启配置。MySQL 初始化流程尤其是 root 密码的设定方式这直接影响后续能不能登录。图形化客户端连接数据库的参数配置包括主机、端口、用户名、密码和协议类型。把这几个能力点拆开看你会发现“下载安装”只是最浅的一层真正的难点在于环境适配和连接配置。比如系统用的是 Debian 系还是 Red Hat 系软件源里的 MySQL 版本是 5.7 还是 8.0安装过程中有没有自动弹密码设置这些细节都会影响你的操作路径。所以我把这篇文章的组织方式定为“先设计、再实操、后排错”尽量把每一步背后的逻辑讲清楚而不是只甩给你一串命令。1.2 为什么选 MySQL 8.0 和 MySQL Workbench不少人在这一步会犹豫MySQL 8.0 和 5.7 差得多吗为什么不用 MariaDB为什么非要用 Workbench命令行不行吗我的建议很直接如果你没有特殊的历史包袱直接用 MySQL 8.0。原因有三第一8.0 已经是目前软件源和官网提供的主流稳定版本网上能搜到的问题解决方案也最多第二8.0 默认字符集就是 utf8mb4对中文、表情符号这类多字节字符处理得比 5.7 省心很多不用像以前那样安装后还要手动改配置文件第三8.0 在 SQL 功能上加了窗口函数、公共表表达式等现代数据库特性这些在写复杂报表查询时非常有用早接触早受益。至于 MySQL Workbench它是 MySQL 官方的图形化管理工具既能写 SQL、看结果集也能做数据建模和数据库导入导出。对于新手来说最重要的价值是“可视化”三个字。列表查询结果、表结构、连接状态都是直接展示出来的比在终端里一行行敲命令更容易建立直觉。我见过不少人因为懒得装图形界面全程用命令行操作结果在排查连接问题时连最基本的“服务到底起没起、端口到底监不监听”都要搜半天命令。Workbench 配合命令行一起用效率会高很多。1.3 装之前先确认好这三样东西动手之前强烈建议先花两分钟确认三件事系统版本、 CPU 架构、当前用户的权限。系统版本决定了包管理器的使用方式。比如 Debian 和 Ubuntu 用apt命令CentOS、Rocky Linux 和 Fedora 用dnf或yum命令。我的实操环境以 Ubuntu 22.04 LTS 为主因为它是目前最常见的 Linux 桌面和服务器发行版之一资料多、坑也少。确认命令是cat /etc/os-releaseCPU 架构影响你选下载哪个安装包。绝大多数服务器是 x86_64但我也碰到过 ARM 架构的机器比如某些边缘网关和低成本云主机。用下面这条命令确认uname -m还有权限。安装软件、启动系统服务都需要 root 权限。我建议全程使用sudo提权而不是直接切换到 root这样能少很多操作失误的返工。如果你连sudo都用不了先联系系统管理员把用户加入 sudo 组。2. 核心细节解析与实操要点2.1 两种安装路径系统软件源与官方仓库在 Linux 上安装 MySQL 8.0最常用的是两条路一条是用系统自带的软件源安装一条是从 MySQL 官方仓库安装。系统软件源安装最大的优点是省事。比如 Ubuntu 22.04 的官方源里就有 mysql-server-8.0 这个包直接sudo apt install mysql-server-8.0就能装好。版本可能不是最新的小版本比如最新 8.0.4x 的时候源里还是 8.0.3x但这对绝大多数学习和开发场景完全够用。而且它和系统的依赖关系处理得最干净之后升级系统内核或系统库时冲突概率更低。官方仓库安装的好处是版本最新、和 MySQL 官方支持周期对齐。你需要在官网仓库页面下载对应的配置文件安装后用apt就能持续收到 MySQL 官方发布的更新。缺点是多了一步仓库配置流程实际操作时如果选错操作系统发行版和版本后面的安装步骤会出现依赖错乱。我的建议如果你的目标是把环境跑通先试试系统软件源安装。碰到“软件源里根本没有 mysql-server-8.0”这种情况时再切换到官方仓库。这也是我在“先方案后动手”里强调的先用最省力的方式跑通再谈追求最新版本。2.2 安装前必须理解的三个目录安装 MySQL 之前先了解它会把东西放在哪些地方。这能帮你在排查问题时快速定位而不是到处瞎翻。/etc/mysql配置文件目录。Ubuntu 上的 MySQL 配置不像 Windows 那样集中在my.ini而是拆成了多个文件。mysql.conf.d/mysqld.cnf是核心服务器配置端口号、监听地址、字符集、日志位置都在这里改。/var/lib/mysql数据目录。所有数据库的物理文件、表结构文件都在这里。如果你要做备份迁移这个目录是关键。/var/log/mysql日志目录。error.log是服务启动失败和崩溃时的第一排查依据。这三个目录还有个共性系统服务账户 mysql 是它们的所有者。你要是用普通用户直接去改/var/lib/mysql里的文件改完大概率会导致服务起不来后面的权限排查附件会专门讲到。2.3 MySQL 8.0 的认证插件与默认密码机制MySQL 8.0 有个和 5.7 明显不同的点默认身份认证插件从mysql_native_password换成了caching_sha2_password。这意味着密码在服务端存储和客户端认证过程中用的算法更强了但也带来一个直接后果如果你的应用程序驱动或者图形客户端版本太老只支持旧式认证就可能在连接阶段报“Authentication plugin caching_sha2_password cannot be loaded”之类的错误。MySQL Workbench 8.0 系列不存在这个问题它天然支持 caching_sha2_password。所以在“MySQL 8.0 Workbench”这个组合里认证插件一般不需要手动降级。真正需要你花心思的是另一个问题安装完 MySQL 后root 的密码到底是什么在 Ubuntu 的 mysql-server 安装中安装过程通常不会像 Windows 版本那样弹窗让你设置 root 密码。你会发现sudo mysql可以直接以 root 身份进入本地 MySQL这是因为默认用了 auth_socket 插件root 只能通过本地 socket 连接并且由系统用户身份校验。这时如果你想用 root 密码的方式连接 Workbench就必须主动为 root 设置密码并保留足够的安全性。3. 实操过程与核心环节实现3.1 在 Ubuntu 22.04 上用 APT 安装 MySQL 8.0我以 Ubuntu 22.04 LTS 为例完整步骤如下。先更新软件包缓存不要嫌这一步慢跳过它很容易导致安装时报“找不到包”sudo apt update然后用以下命令直接安装sudo apt install mysql-server-8.0 -y如果你用的是更老的发行版软件源里可能只叫mysql-server那也行apt会自动解决到具体的 8.0 版本。装完后先看一眼服务状态sudo systemctl status mysql正常情况下你会看到active (running)。如果没跑起来用sudo systemctl start mysql启动再用sudo systemctl enable mysql让它在机器重启后自动启动。确认服务运行后再确认它是否监听了 3306 端口sudo ss -tlnp | grep 3306这一步很关键。只要你看到类似LISTEN 0 ... *:3306的输出说明 mysql 进程已经在正常工作了。3.2 给 root 设置密码并完成安全初始化MySQL 8.0 装好后root 很可能并没有密码。你需要用最原始的本地 socket 方式先登录进去sudo mysql如果这条命令能进入mysql提示符说明确实走的是 auth_socket 认证。接着执行 SQL 语句为 root 设置一个密码并把认证方式改成密码认证ALTER USER rootlocalhost IDENTIFIED WITH caching_sha2_password BY 你的强密码; FLUSH PRIVILEGES;设置完成后退出 MySQLEXIT;此时再执行mysql -u root -p输入刚设置的密码能进入就可以确认密码生效了。接下来强烈推荐跑一遍官方安全初始化脚本sudo mysql_secure_installation这个脚本会提示你依次做几件事设置密码验证策略、是否修改 root 密码、移除匿名用户、限制 root 本地访问、移除 test 库、刷新权限表。我的习惯是全都选 yes。尤其是“移除匿名用户”和“禁止 root 远程登录”这两项对刚搭好的环境非常有必要。匿名用户的存在相当于给数据库留了一道缝隙而 root 远程登录一旦配上弱密码风险会成倍放大。3.3 创建业务账号并配置远程访问权限实际使用中我不建议任何应用程序直连 root。正确做法是单独建一个业务账号只给它需要的权限。这一步同时也是给 Workbench 优雅连接做准备——你在 Workbench 里不一定非要用 root 连。进入 MySQL 后创建账号CREATE USER app_userlocalhost IDENTIFIED BY AppUser2024;如果只是本机连接host 部分用localhost就行。但如果你想在局域网内另一台电脑上用 Workbench 连接这台 Linux 上的 MySQL就得创建允许远程访问的账号CREATE USER app_user% IDENTIFIED BY AppUser2024; GRANT ALL PRIVILEGES ON *.* TO app_user%; FLUSH PRIVILEGES;这里有两个容易踩的坑。第一个是%是通配符表示任意主机都能用这个账号连进来。除非你明确需要否则尽量把 host 限制为具体 IP比如192.168.1.100。第二个坑是 MySQL 8.0 默认认证方式下密码必须同时满足默认的密码策略要求太短、没有大小写和数字组合会直接报错。如果只是测试环境可以在 MySQL 里临时降低策略后面我在问题排查里展开说。还要检查 MySQL 的监听地址。默认配置下MySQL 通常只监听127.0.0.1这意味着外部机器无论如何都连不进来。你需要打开/etc/mysql/mysql.conf.d/mysqld.cnf找到bind-address 127.0.0.1把它改成bind-address 0.0.0.0然后重启服务sudo systemctl restart mysql改完之后再用sudo ss -tlnp | grep 3306确认监听地址变成了*:3306或0.0.0.0:3306。这一步是远程连接成功的前提之一。3.4 安装 MySQL Workbench 并建立第一个连接MySQL Workbench 的安装同样有两条路线。第一条是用包管理器直接安装。Ubuntu 22.04 的软件源里有mysql-workbench-community包sudo apt install mysql-workbench-community -y但这个包的版本未必很新如果你需要新版本我建议走第二条路线到 MySQL 官网下载 Workbench 对应 Linux 发行版的.deb或.rpm安装包。下载后Debian/Ubuntu 用dpkg安装sudo dpkg -i mysql-workbench-community_xxx_amd64.deb如果安装过程中提示缺少依赖用这个命令修复sudo apt -f install -y装完后在应用菜单里找到 MySQL Workbench 打开。首次启动时建立连接的操作路径是点击主界面MySQL Connections旁边的号打开连接配置窗口。关键参数主要有这几个Connection Name随便填一个容易识别的名字比如Linux-MySQL8。Connection Method默认是Standard (TCP/IP)本机和局域网远程连接都用这个。Hostname本机连接就填127.0.0.1远程连接就填 Linux 服务器的 IP。Port默认 3306。Username我建议先用刚才创建的app_user而不是 root如果还没建用户暂时用 root 也可以。Password点Store in Vault...把密码存进本机钥匙串避免每次连接都要重新输入。填完后点Test Connection。看到 “Successfully connected” 的绿色提示说明链路已经打通。此时再点保存并打开连接你就能在 Workbench 左侧看到app_user权限范围内可见的数据库列表。3.5 用 Workbench 完成建库、建表、插入和查询既然 Workbench 能连上了我顺手演示一个最常用的路径建一个库、建一张表、插几行数据再查出来。这套流程在很多项目里都是第一步。双击刚才建好的连接进入 SQL 编辑器执行建库语句CREATE DATABASE task1_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;指定utf8mb4和不区分大小写的utf8mb4_unicode_ci是为了让中文、表情和多种语言字符都能正常存储和排序避免后面出现乱码。切到新库并建表USE task1_db; CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP );插入几条数据INSERT INTO users (username, email) VALUES (alice, aliceexample.com), (bob, bobexample.com), (carol, carolexample.com);查询验证SELECT * FROM users;点执行后Workbench 下方结果区会直接展示三行数据。到这里一个完整的“Linux 安装 MySQL 8.0 → Workbench 连接 → 建库建表 → 读写数据”的最小闭环就完成了。后面你还可以在这个基础上继续扩展用 Workbench 的Database Forward Engineer做数据建模、用Data Import/Restore导入 SQL 文件、用Server Status看运行指标等这些能力都是锦上添花。4. 常见问题与排查技巧实录4.1 Workbench 连接不上先按这个顺序排查我遇到最多的问题是MySQL 服务明明在跑3306 端口也通了但 Workbench 就是连不上。这时候不要乱试按下面这个顺序排查第一步确认服务端监听地址。sudo ss -tlnp | grep 3306如果看到127.0.0.1:3306必然是外部连不进来的。按照 3.3 节的方法改bind-address。第二步确认账号 host 匹配。用app_user%创建的账号可以被任何主机连接用app_userlocalhost创建的账号只能本机连。如果你一直连不上登录 MySQL 后检查账号SELECT user, host FROM mysql.user;第三步确认防火墙。Ubuntu 自带 ufw查看状态sudo ufw status如果状态是 active需要放行 3306sudo ufw allow 3306/tcp如果你用的是云主机还得惦记一下云控制台里的安全组/防火墙规则这是个最容易忽略的环节。很多本地测试都通了唯独忘了安全组没放行 3306结果外部就是连不上。第四步看 Workbench 本身报什么错。像Access denied for user xxxxxx是用户密码问题Connection refused是服务没监听或防火墙拦截Cant connect to MySQL server on ... (10060)是网络层根本不通。把报错信息对应到 1、2、3 三步去处理会比盲试快得多。4.2 密码太简单导致创建用户失败创建业务账号时系统提示Your password does not satisfy the current policy requirements这是 MySQL 8.0 默认启用了 validate_password 插件的表现。如果是生产环境我的建议是直接换一个符合策略的复杂密码。但如果只是本地开发或学习你可以在 MySQL 会话里临时降低策略强度SET GLOBAL validate_password.policy LOW; SET GLOBAL validate_password.length 6;再把刚才没建成功的账号重新创建一次。这里要明确这个设置重启后可能恢复到默认值。如果你想持久化把这两行写入/etc/mysql/mysql.conf.d/mysqld.cnf的[mysqld]段下然后重启 MySQL。4.3 安装后 MySQL 服务启动不了日志怎么找如果你执行sudo systemctl start mysql后服务还是failed第一时间去翻日志sudo tail -100 /var/log/mysql/error.log常见的原因有三类。第一类是/var/lib/mysql目录权限不对比如你之前用 root 手动清理过数据文件。修复方式一般是sudo chown -R mysql:mysql /var/lib/mysql sudo systemctl restart mysql第二类是 MySQL 的my.cnf配置文件里写了无法识别的参数或者某项参数的值不合理。日志里通常会直接显示是哪一行出了问题把对应参数注释掉再重启即可。第三类是系统对服务进程有额外的安全限制。比如某些发行版的 SELinux 或者 AppArmor 配置可能导致 MySQL 无法读取某个自定义数据目录。这时候优先检查安全模块的日志而不是一直盯着 MySQL 自己的错误日志。我遇到过一位同事苦查 error.log 无果最后发现是自定义目录没有写入安全策略白名单把目录换回默认位置后瞬间恢复。4.4 MySQL 8.0 与老客户端兼容性如果你后续要用一些老版本的程序连接 MySQL 8.0可能会碰到认证插件不支持的问题。这是因为 8.0 默认使用caching_sha2_password而老客户端比如 5.x 时代的驱动只认识mysql_native_password。解决办法有两个。第一个是升级客户端驱动一劳永逸第二个是给特定账号指定旧认证方式CREATE USER legacy_user% IDENTIFIED WITH mysql_native_password BY LegacyPass;采用这种方式能保证老程序继续跑但我不建议当成长期默认方案。官方从 8.0 开始已经逐渐放弃对旧认证插件的支持以后遇到的场景会越来越少尽早升级驱动才是正路。4.5 几个值得养成的操作习惯最后列几个我自己在实际操作中养成的习惯不一定写进教科书但很顶用。第一每次都设置强密码哪怕只是测试机。我见过太多测试环境因为 root 密码过于简单被扫描器轻易撞库。测试机也会出问题这句话不是危言耸听。第二远程连接尽量用业务账号不要用 root。root 只留在服务器本机使用。第三删除或禁用匿名用户。刚装完 MySQL 时如果select user, host from mysql.user出现localhost这种匿名账号尽量删掉它。第四修改配置前先备份。改mysqld.cnf之前用sudo cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf.bak留个底后续改错还能快速回滚。第五善用日志。遇到任何异常先看日志别猜。这套 Linux MySQL 8.0 MySQL Workbench 接起来跑通其实就是把“环境、安装、配置、连接、排错”这一条线趟一遍。我在第一次实操时也在认证方式和远程访问上绕了很多弯尤其 bind-address 和 host 权限这两个地方几乎每次都有人问。如果你也正卡在某个环节照着你这个 task1 的链路逐步排摸大部分问题都能定位到具体原因。最后再分享一个小技巧可以先用本地 Linux 装好环境再用同一台机器的 Workbench 连127.0.0.1把基础的账号和授权逻辑玩透再切换到远程 IP 去连。这样你在排查“远程连不上”时就能确认到底是不是网络层的问题而不是一上来就怀疑 MySQL 配置。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑