资讯动态

MySQL 安装配置教程:从下载到连上

发布时间:2026/8/27 9:35:26 来源:尧图企业网站定制
MySQL 安装配置教程从下载到连上引言数据库领域新手遇到的第一道门槛往往不是 SQL 语法而是装不上。MySQL 安装流程里的问题一个接一个下载时版本选错、配置时服务起不来、root 密码设完忘了、设个简单密码还被策略拒绝。网上教程零散不成体系照着走完还是连不上数据库的大有人在。这篇文章以 Windows 为主线把 msi 安装包的每一步拆开讲另外补充 zip 免安装和 Docker 两种方式供选。初始化、密码策略、客户端验证、常用配置、高频报错一条龙讲完。照着做完你能在终端里看到mysql提示符就说明成了。文中版本号以官方文档为准。安装方式对比三种方案选一个安装方式优点缺点适合场景msi 安装包图形化向导自动注册服务排错较黑盒步骤依赖向导Windows 上大多数人首选zip 免安装解压即用配置透明可移植初始化、服务注册全手动想搞懂原理或想随身携带Docker 容器一条命令起服务环境隔离需先装 Docker数据要配卷开发环境、多版本、团队一致对大多数人来说msi 就够用了。想深入理解 MySQL 运行机制的人可以试 zip 方式本来就用 Docker 的开发流程直接选 Docker 更省心。下面重点讲 msi。msi 安装包详细步骤环境要求Windows 10 / 11 64 位至少 500MB 可用磁盘空间含日志安装建议以管理员身份运行下载与安装第一步去 MySQL 官网 dev.mysql.com/downloads/installer/ 下载 MySQL Installer。注意区分两个版本Web Installer 体积小、边下边装Full Installer 是完整离线包网络不稳定就选它。第二步运行安装程序第一次会要求选 Setup Type。新手若选 Developer Default会安装大量组件Workbench、Connectors、示例库等想要精简就选Server Only图形工具以后需要再单独装。第三步进入 MySQL Server 配置向导几个关键选项拆开说Config Type选 Development Computer内存占用最小本地开发够用。TCP/IP 端口默认 3306。除非确定端口被占否则别改。认证方式选 “Use Strong Password Encryption”推荐。如果老项目的旧驱动连不上再回去换成 “Use Legacy Authentication”这是新手常踩的坑。Root 密码设一个记得住的强密码大小写加数字符号。这就是以后的 root 账号密码忘了要进紧急模式重置麻烦得很。第四步注册 Windows 服务勾选 “Configure MySQL Server as a Windows Service”默认开机自启。点 Execute 执行等待全部打勾。验证服务状态# 管理员身份打开 PowerShell 或 cmdnet start|findstr MySQL# 预期输出服务名以安装时设定为准# MySQL80 Service is running# 也可以直接查服务sc query MySQL80【此处需补真实截图】补充zip 免安装方式可选想搞懂 MySQL 的目录结构zip 方式是很好的教材。去官网下载 MySQL Community Server 的 zip 压缩包解压到任意目录然后手动初始化# 解压后进入 bin 目录cdmysql-8.x-winx64/bin# 初始化数据目录--initialize-insecure 表示 root 初始无密码mysqld --initialize-insecure--datadir../data# 前台启动服务CtrlC 停止mysqld--console# 另开一个终端无密码登录mysql-uroot# 设置密码并建库ALTERUSERrootlocalhostIDENTIFIED BY你的密码;CREATE DATABASE testdb CHARACTER SET utf8mb4;这种方式的好处是目录、数据、配置全在自己掌控之下不注册 Windows 服务整目录拷走就能换机器跑。缺点是每次要手动启动不适合长期开发适合当学习素材。初始化与 root 密码密码策略是第一个坑validate_password 密码策略MySQL 8.0 默认装好就带 validate_password 组件以官方文档为准强制要求强密码至少 8 位大小写字母、数字、符号混合。装的时候设个 “123456”会被直接拒绝很多新手在这一步一脸懵。本地开发嫌策略烦人可以降低要求-- 以 root 登录后执行SHOWVARIABLESLIKEvalidate_password%;-- 把策略降到只校验长度SETGLOBALvalidate_password.policyLOW;SETGLOBALvalidate_password.length6;-- 然后就能设简单密码了ALTERUSERrootlocalhostIDENTIFIEDBY123456;两个注意点上面是运行时生效重启服务后恢复默认想永久生效要写进 my.ini见下文常用配置。另外 MySQL 8.4 之后密码策略的变量名和默认值有调整以官方文档为准生产环境别随意降级本地开发图方便可以。再提醒一句mysqld 初始化时如果目录里已有数据会直接报错终止。反复初始化失败时确认 datadir 指向的是全新空目录或者改用--initialize生成随机临时密码日志里有提示而不是--initialize-insecure。忘记 root 密码怎么办真忘了别慌标准找回流程记下来关键时刻救命# 1. 停掉 MySQL 服务管理员 PowerShellnet stop MySQL80# 2. 以跳过权限表的方式启动mysqld --skip-grant-tables# 该命令让 mysqld 在前台运行需要另开一个终端操作# 3. 无密码登录mysql-uroot# 预期输出Welcome to the MySQL monitor...# 4. 改密码FLUSH PRIVILEGES;ALTERUSERrootlocalhostIDENTIFIED BY新密码;# 5. 退出结束前台 mysqld正常启动服务exit【此处需补真实截图】注意--skip-grant-tables模式下所有校验都跳过处理完必须立刻恢复正常启动别让这个模式留在线上的机器上。客户端连接验证连上才算装完命令行是最直接的验证方式# 打开 cmd 或 PowerShellroot 登录mysql-uroot-p# 输入密码输入时屏幕无显示正常现象# 预期输出# Welcome to the MySQL monitor. Commands end with ; or \g.# Your MySQL connection id is 8# mysql# 查版本和当前用户SELECT VERSION(), CURRENT_USER();# 预期输出8.0.40 | rootlocalhost# 看默认数据库SHOW DATABASES;# 预期输出至少包含# information_schema mysql performance_schema sys【此处需补真实截图】图形客户端按喜好选官方 MySQL Workbench、开源的 DBeaver、收费的 Navicat。连接参数无非四个主机 localhost、端口 3306、用户名 root、密码。连不上的话八成是服务没启动或端口不对回看上面两步。远程访问新建一个账号root 默认只能从 localhost 登录其他机器要连你的库需要新建账号并授权-- 新建用户允许从任意主机连接CREATEUSERdev%IDENTIFIEDBY强密码;-- 授权只给 testdb 库的全部权限GRANTALLPRIVILEGESONtestdb.*TOdev%;FLUSHPRIVILEGES;授权完成后把 my.ini 的 bind-address 改成 0.0.0.0 并重启服务外部才能连进来。开发环境还要注意防火墙放行 3306 端口。生产环境按最小权限原则来别一上来就 ALL PRIVILEGES 加 ‘%’ 主机按需授权才安全。图形客户端连不上的排查顺序也顺手记一下先确认服务在跑再确认端口通不通。Windows 用netstat -ano | findstr 3306看监听状态Linux 用ss -ltnp | grep 3306。端口没监听多半是服务没起来或 bind-address 设得太死回看上面两步。端口在监听但连不上才轮到用户名密码和驱动的问题。别一上来就重装数据库九成情况不是它的错。开发语言连 MySQL 的两个常见坑服务装好了代码连不上这个坑排着队等呢。MySQL 8.0 默认认证插件是 caching_sha2_passwordPython 的旧版 PyMySQL、一批老版本驱动不认识它连接时报 “Authentication plugin ‘caching_sha2_password’ cannot be loaded”或者干脆 Access denied。两种解法升级驱动PyMySQL 0.9.3 之后已支持该插件或者把这个账号改回兼容旧插件的认证方式ALTERUSERrootlocalhostIDENTIFIEDWITHmysql_native_passwordBY你的密码;提醒一句改回老插件是给存量旧驱动的临时通道新项目优先升级驱动别把兼容方案当长期默认。另一个高频坑是时区。Java 的 JDBC 连接串里没带 serverTimezone启动直接报 “The server time zone value” 的错。连接串补上?serverTimezoneAsia/Shanghai或把服务端 default-time-zone 统一my.ini 里那个08:00就是干这个的代码里就别再各自补小时数了。Python 侧 MySQL 连接时同样存在时区换算的歧义明确时区后读出来的时间才跟业务对得上。排查驱动类问题先看版本再动手。Python 里pip show PyMySQLJava 里看 pom 或 gradle 里声明的坐标版本太老就先升级多半直接解决省掉一大段怀疑人生的时间。确认版本没问题再回头查认证插件和权限按这条线走定位比翻日志快。常用配置项配置文件 Windows 上是 my.ini一般位于安装目录也可指定Linux 上是 /etc/mysql/my.cnf。改动后重启服务生效。[mysqld] # 监听端口 port3306 # 监听地址127.0.0.1 仅本机0.0.0.0 允许远程 bind-address127.0.0.1 # 字符集中文乱码的根治点 character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci # 最大连接数 max_connections200 # 默认存储引擎 default-storage-engineInnoDB # 时区 default-time-zone08:00中文乱码的根子就在字符集。数据库、表、连接三个层面的字符集都要是 utf8mb4光改一处还是会乱。排查顺序先SHOW VARIABLES LIKE character%看服务端再看建库建表语句里有没有指定。日志是排错的另一条腿。生产上常用通用日志记录所有 SQL慢查询日志定位性能瓶颈[mysqld] # 开启通用日志开发用生产慎开量很大 general_log1 general_log_filemysql-general.log # 慢查询超过 2 秒的记录 slow_query_log1 long_query_time2排查线上问题先看 error log性能问题看 slow log这两条路能覆盖大部分疑难杂症。注意通用日志会记录所有 SQL量大且可能含敏感信息别在正式环境长开。常见问题速查问题原因解决办法服务启动失败错误 1067 / 1053配置错误、端口占用、数据目录损坏查 Windows 事件查看器检查 my.ini确认 3306 没被占3306 端口被占用装了多个 MySQL 或残留旧版netstat -ano设简单密码被拒validate_password 默认强策略按上文降级策略或直接设强密码mysql 命令不是内部命令bin 目录没进 PATH把 MySQL bin 目录加进系统 PATH或直接用完整路径远程连接被拒root 默认只允许 localhost新建远程用户并授权或改 bind-address中文乱码字符集不一致库表连接统一 utf8mb4Access denied for user密码错或驱动旧确认密码旧驱动换 legacy 认证数据目录初始化失败目录权限或版本不匹配管理员身份运行 mysqld确认 datadir 指向空目录服务启动后立刻停止数据目录损坏或日志写失败查数据目录下的 .err 日志文件按内容定位再补一句备份意识装好库之后定期mysqldump -u root -p testdb testdb.sql导出备份是低成本高回报的习惯。直接拷贝数据文件也行但要在服务停止状态下拷避免文件不一致。迁移、误删、换机器备份都能兜底。小结MySQL 安装这件事走通一遍其实不难难在坑都藏在细节里Config Type 选错、密码策略拒绝、认证方式不匹配、端口被占。把 msi 向导里那几个关键选项理解透再记住密码找回和查日志两条退路基本就能从下载一路走到mysql提示符。数据库装好了下一站自然是 SQL 语法和表设计。有问题欢迎评论区交流也欢迎收藏转发。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价