news 2026/9/7 20:02:03

Windows与Linux下MySQL安装全攻略:从zip到Docker的多种实操

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Windows与Linux下MySQL安装全攻略:从zip到Docker的多种实操

把 MySQL 装明白:Windows 和 Linux 下的几种实操方式

你有没有遇到过这种情况:在 Windows 上装 MySQL 装到一半,发现配置文件怎么改都不生效,服务起不来又找不到日志;到了 Linux 上,用包管理器一路 Next,装完却发现版本老得掉渣,还跟系统自带的库冲突。这些年我在两台电脑上来回折腾 MySQL,踩过的坑加起来能写个小册子。这篇就把 Windows 和 Linux 上常见的几种安装方法串一遍,把我自己实操下来的经验、每个方案背后的道理、以及装完必做的几项设置一次说清楚。

如果你是刚接触 MySQL 的新手,或者正在做本地开发环境搭建,又或者要给服务器部署数据库,这篇内容都适用。文章不会推荐什么“唯一正确”的方案,而是把几种常见路线的优劣摆出来,帮你按场景选,同时把每一条路的关键步骤拆开讲,省得你在网上到处拼教程。

1. 安装前的思路:方案选型比敲命令更重要

很多人一上来就搜“mysql 安装教程”,跟着敲了一堆命令,装完能用就算完事。但真正干过几年活的人都会告诉你,选哪种安装方式,往往决定了你后面要花多少精力去维护。

1.1 不同安装方式的核心差异

以 Windows 平台为例,常用的就有三四条路:用 MySQL Installer 图形化安装、直接下载 zip 压缩包手动部署、用 Docker 跑容器、还有通过 Windows 包管理器(winget)自动安装。Linux 那边更复杂,按发行版分成 Debian/Ubuntu 系的 apt、Red Hat/CentOS 系的 yum/dnf、通用性极强的通用二进制包、源码编译,以及跟 Windows 一样的 Docker 方式。

这些方式的本质区别有几点:

  • 包管理器管理 vs 手动部署:前者由系统统一管理软件生命周期,升级和卸载都不用手动清理文件;后者的所有文件都在自己的目录里,控制力强,升级时不会受系统仓库版本限制。
  • 默认配置 vs 自定配置:包管理器安装的 MySQL 会带一套发行版维护的默认配置(通常是/etc/mysql/my.cnf),对新手友好,但你想改数据目录、端口这类参数时得搞清楚配置文件的加载顺序;手动部署则一切从零开始,配置文件路径、内容都由你掌控。
  • 版本新旧差异:操作系统官方源里的 MySQL 版本往往比官方仓库要旧。比如某些 LTS 版本的 apt 源里可能还是 MySQL 5.7 或 8.0 的老版本,而你用 MySQL 官方 Yum/Apt 仓库则可以装到当前最新的 8.x。
  • 环境隔离与资源占用:Docker 方式带来的环境隔离是双刃剑,干净、易迁移,但数据库文件在容器里,备份和性能调优多了一层复杂性。

1.2 我平时怎么选

如果你是在自己的 Windows 电脑上做开发,追求省心,我建议用 zip 包手动安装。听起来好像比 exe 麻烦,实际上不用注册系统服务也能跑,还能控制 MySQL 的版本。如果你在公司给的受管 Windows 服务器上装,可能要优先考虑 MSI 安装包,因为它能自动注册 Windows 服务,统一走服务管理器。Linux 服务器上,Ubuntu 系优先配置官方 apt 源,用 apt 安装,这是我认为均衡性最好的选择。CentOS 系则配官方 yum 源。至于源码编译,除非你要定制存储引擎或者做特定平台的交叉编译,否则我个人不推荐在生产环境用,编译耗时长,后续升级也是负担。

2. Windows 平台安装:zip 包与 MSI 安装包详解

Windows 下最容易出问题的不是软件本身,而是版本不匹配和环境变量。下面两种方式我每个月都要用至少一次,把关键点都标出来。

2.1 通过 zip 压缩包手动部署(最可控)

这种方式是我个人在 Windows 上最常用的,过程简单,而且便于随时切换版本做测试。

步骤拆开是这样的:

第一步,下载对应版本。打开 MySQL 官网下载页,找到 “MySQL Community Server” 的 ZIP Archive 版本。注意区分两个包:带debug字样的是调试版,我们普通使用不用选;带minimal的是精简版,很多组件缺失,也不选。选那个完整的、几百 MB 的压缩包。

第二步,解压并规划目录。我不建议解压到C:\Program Files这类带空格的路径,后面在命令行操作容易踩引号的坑。我一般解压到C:\mysql或者D:\mysql,路径短且没有空格。解压后会在目录下看到binincludelibshare等子目录。

第三步,创建配置文件。这是 zip 安装的精髓。MySQL 在 Windows 下默认会按顺序找my.ini,如果找不到就按编译时的默认参数运行,而默认的数据目录往往是C:\Program Files\MySQL\MySQL Server 8.0\data这种跟你实际路径对不上的地方,导致初始化失败。所以解压后第一件事,在根目录手工创建my.ini,写入基础配置:

[mysqld] # 端口号,默认3306,如果被占用可修改 port=3306 # 安装目录,改成你自己的实际路径 basedir=C:/mysql # 数据目录,首次初始化后会自动生成 datadir=C:/mysql/data # 字符集设置 character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci [client] default-character-set=utf8mb4

注意一个细节:路径里的斜杠用正斜杠/或双反斜杠\\都可以,但不要用单个反斜杠\,否则会被当成转义字符。这个坑我踩过好多次,配置写错了 MySQL 会直接忽略整个 my.ini,然后用默认路径初始化,产生一堆难以排查的报错。

第四步,初始化数据目录。用管理员身份打开命令行,切换到bin目录,执行:

mysqld --initialize-insecure

这个命令会在datadir指定的位置生成系统数据库和初始数据文件。--initialize-insecure表示 root 用户初始密码为空,适合本地开发环境;如果用--initialize,则会生成一个随机临时密码,打印在初始化日志里,那个密码难找又难记,我第一次用时找了半天才发现日志里那串字符就是密码。

第五步,启动服务。测试时不想注册系统服务的话,可以直接前台运行:

mysqld --console

看到ready for connections日志后就说明启动成功。正式使用建议注册成 Windows 服务:

mysqld --install MySQL net start MySQL

注册服务的好处是开机自启,而且意外宕机时 Windows 服务管理器会自动尝试重启。我最初图省事一直前台跑,结果一次蓝屏后 MySQL 没起来,接手的同事一脸茫然,后来才老实注册成服务。

第六步,登录验证。新开一个命令行窗口:

mysql -u root -p

密码为空直接回车就能进。进入后先改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY '你的新密码'; FLUSH PRIVILEGES;

2.2 通过 MySQL Installer(MSI)安装

官网下载页里那个几百 MB 的mysql-installer-community-8.0.x.msi就是图形化安装包。这种方式对不常敲命令行的人最友好,安装过程可以选组件(MySQL Server、Workbench、Shell、Router 等),还能自动检测依赖项。

流程我就不一步步截图了,重点讲几个容易忽略的选择:

  • Setup Type 选 Custom,不要选 Full。Full 会装一堆你用不到的组件,比如 Visual Studio 集成、ODBC 驱动,白白占空间还拖慢安装速度。Custom 模式下你只要勾选 MySQL Server 和 MySQL Workbench,另外我建议勾上 MySQL Shell,命令行管理时会用到。
  • 配置类型选 Development Computer。它会给出一个相对保守的内存占用预设值。选 Server Machine 后 MySQL 会占用更多内存做缓存,对小内存机器不友好。
  • 认证方式选 Use Legacy Authentication(仅当你有老项目要兼容时)。MySQL 8.0 默认的caching_sha2_password插件很新,一些老版本客户端和编程语言的驱动不支持。如果你要连的是老系统,先选 Legacy,否则就保持默认。

MSI 方式会自动创建 Windows 服务、自动生成my.ini(在C:\ProgramData\MySQL\MySQL Server 8.x\里)。ProgramData 目录默认是隐藏的,你要改配置时记得在文件管理器地址栏直接输入路径进去。

2.3 winget 一键安装(推荐给追求效率的人)

Windows 10/11 自带的 winget 也可以装 MySQL,适合快节奏的开发环境搭建:

winget search mysql winget install Oracle.MySQL

命令装完默认走的是 MSI 交互流程,其实还是要弹配置界面。这种方式适合你已经很清楚要装哪个版本,想省去浏览器下载的时间。但要注意,winget 装的是 MySQL 官方在 winget 仓库里发布的最新稳定版,不一定是你项目需要的特定版本。有版本洁癖的话还是手动下载 ZIP 更稳。

3. Linux 平台安装:从包管理器到 Docker 全覆盖

Linux 装 MySQL 比 Windows 要讲究发行版。同一个命令在 Ubuntu 上能跑,在 CentOS 上可能就是一团乱麻。这一节我把最常见的几种方式理一遍。

3.1 Debian/Ubuntu 系使用官方 Apt 源安装

Ubuntu 的默认源里有mysql-server包,但版本通常不是最新。想要拿到官方最新版,建议先配置 MySQL 官方 Apt 仓库。

第一步,添加仓库。到 MySQL 官网下载mysql-apt-config这个 deb 包,比如:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.29-1_all.deb sudo dpkg -i mysql-apt-config_0.8.29-1_all.deb

安装过程中会弹出蓝底界面,问你要选择哪个 MySQL 版本,默认就是 8.0,直接 OK 即可。这一步实质上是往/etc/apt/sources.list.d/下写入一个 mysql 官方源文件。

第二步,更新并安装:

sudo apt update sudo apt install mysql-server

依赖问题很少出现,因为源里会同时引入 mysql-client、mysql-common 等配套包。装完后服务默认自动启动。

第三步,检查状态并做安全设置:

sudo systemctl status mysql sudo mysql_secure_installation

mysql_secure_installation会引导你设置 root 密码、删除匿名用户、禁止 root 远程登录等。新版本 Ubuntu 上 Debian 系 MySQL 的 root 用户默认走auth_socket认证,也就是你在系统里用sudo mysql可以直接登录,密码无效。如果不跑一遍安全脚本,很多人会莫名其妙进不去数据库。

需要注意,Ubuntu 20.04 及更高版本默认源里的是 MySQL 8.0。如果你是老版本 Ubuntu 且不想加官方源,用默认源也能装,只是可能有 5.7 的老版本。查看具体版本用:

mysql --version

装完后配置文件在/etc/mysql/my.cnf,这个文件里通常只有几行 include 指令,真正的内容在/etc/mysql/mysql.conf.d/mysqld.cnf。改配置别在根 my.cnf 里瞎找,直接改后者就行。

3.2 CentOS/RHEL 系使用 Yum/Dnf 安装

CentOS 7 用的是 yum,CentOS 8/9 以及 Rocky Linux 用的是 dnf(dnf 命令基本兼容 yum)。CentOS 默认源里的 mysql 包其实是 MariaDB,这一点坑了无数人。想装 MySQL 必须先把官方 Yum 仓库配置好。

第一步,添加官方仓库。访问 MySQL 官网 Yum Repository 页面,下载对应发行版的 rpm 包:

wget https://dev.mysql.com/get/mysql80-community-release-el7-7.noarch.rpm sudo rpm -Uvh mysql80-community-release-el7-7.noarch.rpm

注意el7对应 CentOS 7,如果是 CentOS 8/9 要选el8el9的包。用错版本虽然能装,但 yum 解析依赖时可能出现诡异冲突。

第二步,安装:

sudo yum install mysql-server

这里有个常见坑:系统里如果已经装了 MariaDB 的库文件,yum 会提示冲突。先彻底卸载 MariaDB:

sudo yum remove mariadb-libs mariadb-server mariadb

卸载完再装 MySQL 基本就顺利了。成功后启动服务:

sudo systemctl start mysqld sudo systemctl enable mysqld

第三步,找临时密码。CentOS 系 MySQL 首次启动时会往日志里写入一个临时 root 密码:

sudo grep 'temporary password' /var/log/mysqld.log

用这个密码登录后,系统强制要求你修改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPass@123';

如果密码不符合复杂度要求(必须包含大小写、数字、特殊字符),会直接报错。本地开发图省事可以先把密码校验策略调低:

SET GLOBAL validate_password.policy = LOW;

CentOS 系 MySQL 的配置文件路径是/etc/my.cnf,这个文件是实打实的主配置,不像 Ubuntu 那样分目录。改完配置重启服务:

sudo systemctl restart mysqld

3.3 通用二进制包安装(不受发行版限制)

这种方式相当于 Linux 上的“zip 包手动部署”,原理和 2.1 节 Windows zip 包一样,只是文件格式换成了.tar.xz。适用于那些既不是 Debian 系也不是 RedHat 系的发行版,或者你想装一个完全隔离、不影响系统全局库的实例。

步骤:

# 下载并解压,假设放在 /usr/local 下 tar -xvf mysql-8.0.36-linux-glibc2.28-x86_64.tar.xz mv mysql-8.0.36-linux-glibc2.28-x86_64 /usr/local/mysql # 创建专用用户 useradd -r -s /bin/false mysql chown -R mysql:mysql /usr/local/mysql # 创建配置文件 vim /etc/my.cnf

/etc/my.cnf写入:

[mysqld] basedir=/usr/local/mysql datadir=/usr/local/mysql/data socket=/tmp/mysql.sock pid-file=/usr/local/mysql/data/mysql.pid port=3306

然后初始化:

/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql systemctl start mysqld

这种方式的好处是真的做到了“自己的目录自己管”,升级时直接替换整个目录(别忘了先备份数据)。缺点是服务管理、日志轮转等配套机制都要自己配,适合有一定 Linux 基础的人。

3.4 用 Docker 跑 MySQL(最省心的移植方案)

如果你已经装了 Docker,那我认为这是最省心的方式。不管宿主机是 Windows 还是 Linux,命令几乎一致。它的价值在于,数据库实例跟宿主机的依赖完全隔离,换机器迁移时不用重新排查环境变量、库依赖这些问题。

先拉镜像:

docker pull mysql:8.0

再跑一个带数据卷的容器:

docker run -d \ --name mysql-local \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ -e MYSQL_DATABASE=testdb \ -v mysql_data:/var/lib/mysql \ mysql:8.0

参数说明:

  • -e MYSQL_ROOT_PASSWORD:指定 root 初始密码。如果不指定,容器会随机生成一个密码并打到日志里,不推荐。
  • -v mysql_data:/var/lib/mysql:把容器内的数据目录挂载到宿主机的一个命名卷。没有这一句,容器一删你的数据全没。这个卷名是 Docker 管理的,你可以用docker volume inspect mysql_data看它在宿主机的实际位置。
  • -p 3306:3306:把容器内 3306 端口映射到宿主机。如果宿主机的 3306 被占了,可以改成-p 3307:3306,这样外部访问走 3307 端口。

进入容器操作数据库:

docker exec -it mysql-local mysql -u root -p

Docker 方式有一个重要限制:容器是临时性的。你做的自定义配置如果只是docker exec进去改了文件,容器重建就没了。持久化配置应该通过挂载配置文件来实现:

docker run -d \ --name mysql-local \ -p 3306:3306 \ -e MYSQL_ROOT_PASSWORD=123456 \ -v mysql_data:/var/lib/mysql \ -v /path/to/my.cnf:/etc/mysql/conf.d/my.cnf \ mysql:8.0

宿主机上的my.cnf会覆盖容器内的配置。很多人在 Docker 里装完 MySQL,改了my.cnf里的字符集却发现不生效,多半是挂载路径不对。MySQL 官方镜像会读取/etc/mysql/conf.d/目录下的所有.cnf文件,你把自定义配置放在这里最稳。

4. 装完必做的几项配置与验证

安装只是第一步。我见过不少人 MySQL 装好了,却发现中文乱码、远程连不上、性能缓慢,其实都是安装完成后没做基础配置。

4.1 字符集问题:直接导致中文乱码

MySQL 8.0 默认字符集就是utf8mb4,但如果你装的是 5.7 或更早版本,默认可能是latin1。即使是 8.0,也要确认客户端连接的字符集设置。

在 Linux 端,用 MySQL 客户端执行:

SHOW VARIABLES LIKE 'character_set%';

重点关注三个值:character_set_server(服务端)、character_set_database(当前库)、character_set_connection(连接)。它们都应该是utf8mb4

如果不是,在配置文件里加:

[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci [client] default-character-set=utf8mb4 [mysql] default-character-set=utf8mb4

这里特别说明一下:网络上不少人建议用utf8mb4_general_ci排序规则,但 8.0 之后官方对utf8mb4_unicode_ci的排序算法做了大量优化,两者性能差距基本可以忽略。推荐utf8mb4_unicode_ci,它在多语言排序上更准确。改完配置要重启 MySQL 才生效。

4.2 确认服务是否随系统自启

Windows 上是看服务管理器里 MySQL 服务是否为“自动”启动,Linux 则是看 systemd 服务:

sudo systemctl is-enabled mysqld

如果输出disabled,执行:

sudo systemctl enable mysqld

注意不同发行版的服务名可能不同:Debian 系 MySQL 默认是mysql,CentOS 系是mysqld。记错名字会让你执行 systemctl 时报“Unit not found”。Docker 方式则要加--restart=always参数,或者对已有容器执行docker update --restart=always 容器名

4.3 创建一个日常使用的业务账号

不管你是本地开发还是生产环境,我不建议用 root 账号连接应用程序。root 权限过大,一旦应用被注入,数据库就裸奔了。建议创建一个最小权限的专属账号:

mysql -u root -p
-- 创建一个普通账号,仅允许本机连接 CREATE USER 'app_user'@'localhost' IDENTIFIED BY 'StrongPassword@123'; -- 授权某个库的增删改查权限 GRANT SELECT, INSERT, UPDATE, DELETE ON appdb.* TO 'app_user'@'localhost'; FLUSH PRIVILEGES;

如果应用跑在另一台服务器上,需要允许远程访问,则要把'localhost'换成应用的 IP。比如:

CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'StrongPassword@123';

这里192.168.1.%表示允许整个网段访问。如果要允许任意 IP(不建议生产环境),用'app_user'@'%'。改完以后记得检查 MySQL 配置里有没有bind-address = 127.0.0.1。如果配置了这行,MySQL 只会监听本机回环地址,外面的机器怎么都连不上。要远程访问,注释掉这行,或改成bind-address = 0.0.0.0

4.4 验证基本的增删改查

全部配置完以后,我喜欢快速跑一遍冒烟测试,确认服务真的能正常读写:

mysql -u app_user -p
USE appdb; CREATE TABLE test_connect (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50)); INSERT INTO test_connect (name) VALUES ('hello mysql'); SELECT * FROM test_connect;

能看到插入的中文正常显示没乱码、返回结果没有报错,那么这个实例基本可以放心用了。

5. 安装与使用过程中的高频问题和排查手段

5.1 临时密码找不到了怎么办

Linux 用 rpm 方式安装首次启动后会生成临时密码,有时你刚启动就急着登录,密码还没看仔细就过了时效,或者日志被清理了。

这时有两条路。一条是初始化数据目录的方式,适合还没有写入重要数据的新实例——直接整个数据目录干掉重新初始化。另一条是在 8.0 上跳过授权表来重置:

systemctl stop mysqld

然后在配置文件/etc/my.cnf[mysqld]段临时加一行:

skip-grant-tables

重启服务后无需密码就能登录:

mysql -u root

登录后先刷新授权表,再改密码:

FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword@123';

改完后退出,把配置文件里那行skip-grant-tables删掉,再重启服务。不加回那行的话,你的 MySQL 就相当于大门敞开,任何人都可以无密码登录,这在生产环境是致命的。这个方法在 Windows 的 zip 安装中同样适用,改my.ini加同样的参数。

5.2 报错 ERROR 2003 (HY000): Can't connect to MySQL server

这个报错十有八九是服务没起,或者端口不对。先用命令确认服务状态:

# Linux sudo systemctl status mysql # Windows net start | findstr MySQL

服务如果在跑,再看监听端口:

netstat -tlnp | grep 3306

如果 IP 是127.0.0.1:3306,说明只监听了本地。要远程连接,改掉bind-address配置后重启。还有可能是防火墙没放行 3306 端口:

# Linux (防火请按发行版命令,比如 ufw 或 firewall-cmd) sudo ufw allow 3306

5.3 登录报错 Access denied for user

这个原因很直接:用户名/密码不对,或者该账号不允许从当前主机连接。

我遇到过一种隐蔽情况:MySQL 里存在两个同名用户,一个限制为'root'@'localhost',一个允许为'root'@'%'。MySQL 做用户匹配时会选更精确的那条,如果你从远程登录,它匹配的是'root'@'%';如果该用户密码跟本机上的不一样,就报 Access denied。要查看用户和允许的来源主机:

SELECT user, host, plugin FROM mysql.user;

这个命令能帮你确认登录来源和认证插件。还要检查程序连库时用的账号确实是user@host对应的密码,而不是你以为的那一套。

5.4 中文显示问号或乱码

如果你确认数据库表都建好了,插入中文却显示?,这通常不是数据库的问题,而是客户端连接时的字符集没对上。可以临时设置:

SET NAMES utf8mb4;

再插入测试数据验证。如果问题还在,检查连接字符串里是否指定了字符集。Java 的 JDBC 要加characterEncoding=utf8,Python 的 pymysql 要加charset='utf8mb4',PHP 的 PDO 要加charset=utf8mb4。程序连接串和 MySQL 服务端的字符集必须两端一致,任何一端不对都可能出现乱码。

5.5 安装包与系统位数不匹配导致启动失败

Windows 下解压完执行mysqld --install报错“系统找不到指定的路径”,多半是 my.ini 里的basedir路径写错了,或者路径含有中文/空格。务必确认basedir指向的是你解压出的根目录,而不是bin目录。还有一个小细节:64 位系统装 32 位 MySQL 也是能运行的,但性能会受明显影响,官网下载时注意选x64还是x86的包。

5.6 字符集配置不生效的隐蔽原因

很多人修改了配置文件里的字符集,重启后查看仍然是默认值。我排查过多次发现,原因不外乎三处:

一是改错了文件。前面说过 Windows 上用 MSI 安装时配置在 ProgramData 目录下,Linux 的 Ubuntu 系配置分散在/etc/mysql/下多个子文件里。如果同一个参数在多个配置文件中出现,MySQL 读配置是后面的覆盖前面的。你改了一个文件,但另一个文件在更晚的位置又设置了一遍,导致结果不变。

二是参数名写错。常见的有character-set-server写成charset-server,或者default-character-set放在[mysqld]段而不是[client]/[mysql]段。default-character-set这个参数在[mysqld]段是无效的。

还有一种是连接工具自身覆盖了字符集。比如同一个命令行工具,它自己的默认字体和请求的字符集不一致,导致看到的输出是乱码,实际数据在库里是好的。这时换 Workbench 或调整终端编码验证就清楚了。

5.7 升级版本时的保留数据问题

跨大版本升级(比如 5.7 升 8.0)不能简单用旧数据目录直接启动新版本。MySQL 8.0 的数据字典和 5.7 差异很大,直接替换 bin 启动会报错提示需要 upgrade。官方流程是用mysql_upgrade工具(8.0 以后的版本在启动时多数会自动检测版本并执行升级流程,但手工执行更可控):

mysqld --upgrade=FORCE

在升级前,务必先做物理备份——直接拷贝整个数据目录文件,或者用mysqldump导出全库 SQL。不要信任“应该没事”这种侥幸心理,我认识的朋友就有升级时没备份、升级到一半磁盘写满的,最后只能从旧的物理备份恢复。

我的实操建议小结

从最早的 Windows 上一路 Next 的 MSI 安装,到现在主要用 Docker 和 apt 官方源,我最大的感受是:没有万能的安装方式,只有适不适合当前场景的取舍。

如果你只是想在 Windows 上快速体验一下 MySQL,而且系统是 Windows 10/11,优先考虑 zip 包方式,理由是对版本有完全掌控,出问题好排查;如果给生产环境装,再考虑 MSI 并且全程保持默认配置。Linux 上如果追求长期稳定和系统安全更新,建议用发行版官方源或 MySQL 官方源,而不是手工复制二进制包。项目要快速交付、环境要统一,那就上 Docker。

最后分享两件我在实际操作中的小事情:第一,每装好一次 MySQL,我习惯把配置文件、初始化命令和验证命令记到一个工作文档里,这里面的价值在你半年后再装一次时会体现出来。第二,决定好了用某个版本并开始往里写数据后,记得开启 MySQL 的 binlog,配置好定期备份。装好了不会出问题,出问题的永远是那些没备份也没开日志的环境。希望这篇内容能让你在 Windows 和 Linux 上装 MySQL 时少走几步弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/7 20:01:42

Claude Code完全指南:终端AI编程助手的安装、配置与实战

Claude Code最近在开发者圈子里热度确实高,我身边不少人都在用它。如果你还没搞明白这玩意到底是什么、怎么装、怎么配,这篇文章正好帮你一次性理清楚。它本质上是一个跑在终端里的AI编程助手,和你在网页上跟AI聊天完全是两回事,它…

作者头像 李华
网站建设 2026/9/7 20:00:42

车载以太网概念及协议架构介绍(一)

文章目录车载以太网概念及协议架构介绍前言1. 什么是车载以太网1.1 基本定义1.2 为什么汽车需要以太网2. 车载以太网发展历程3. 物理层:车载以太网的"地基"3.1 单对以太网(SPE)3.2 PHY 收发器3.3 MAC 控制器4. 网络拓扑架构4.1 域架…

作者头像 李华
网站建设 2026/9/7 19:59:08

5、 Kernel Trace分析:Ftrace原理、Tracepoint的使用、自定义Trace事件

5.1 Ftrace是什么?Ftrace是Linux内核内置的跟踪器。它几乎不占用额外资源,就能记录内核函数的调用过程。说白了,它就像内核里的黑匣子,记录着每一行代码的执行轨迹。它的核心优势有三个:零开销:不启用时&am…

作者头像 李华
网站建设 2026/9/7 19:59:03

公众号排版工具全解析:开源神器与高效工作流实战指南

公众号排版这件事,做内容的朋友应该都深有体会。用微信自带的编辑器排版,样式基础、操作繁琐,尤其是写过技术文章、用过Markdown的朋友,回去用公众号原生编辑器简直就是一种折磨。好在GitHub上一直有开发者在做开源免费的排版工具…

作者头像 李华
网站建设 2026/9/7 19:58:26

【AVDTP】规范精讲[11]: 吃透媒体传输服务接口,打通蓝牙音视频数据流的最后一公里

上一篇我们完整拆解了AVDTP的信令接口——它就像整个蓝牙音视频系统的调度中枢,负责通道建立、能力协商、流生命周期管理,所有状态流转都要通过信令接口完成。但很多开发者调试通了建流流程,却在真正的媒体数据传输上踩了无数坑:要么音频断断续续爆音,要么音画不同步,要么…

作者头像 李华
网站建设 2026/9/7 19:57:29

XTEA算法的各种密码分析方法全面盘点

XTEA算法的各种密码分析方法全面盘点针对XTEA算法的密码分析,学术界已发展出多种攻击方法。下面从单密钥攻击和相关密钥攻击两个大类进行盘点,并补充一些前沿探索。🔑 单密钥攻击 (Single-Key Attacks)这类攻击是最现实的威胁,假设…

作者头像 李华