页面加载中
博客快捷键
按住 Shift 键查看可用快捷键
ShiftK
开启/关闭快捷键功能
ShiftA
打开/关闭中控台
ShiftD
深色/浅色显示模式
ShiftS
站内搜索
ShiftR
随机访问
ShiftH
返回首页
ShiftL
友链页面
ShiftP
关于本站
ShiftI
原版/本站右键菜单
松开 Shift 键或点击外部区域关闭
文章详情
互动
最近评论
暂无评论
标签
寻找感兴趣的领域
暂无标签
    0
    MySQL入门学习前奏之在Windows上安装与配置MySQL
    文章摘要
    Windows版MySQL ZIP安装教程:下载解压、配置环境变量与my.ini、初始化、注册服务、设密码、登录及卸载,附常见问题。
    MySQL安装配置 封面
    MySQL安装配置 封面

    Windows 版 MySQL 安装与使用教程

    适用系统:Windows 10 / 11(64 位)
    安装方式:官网 ZIP
    命令行:统一使用 Windows 终端(配置与安装阶段需以管理员身份运行)

    前置条件:64 位 Windows、有管理员权限的账号、准备一个纯英文且不含空格的目录用来放 MySQL(例如 D:\Develop\)。

    一、下载

    前往官网 https://dev.mysql.com/downloads/mysql/,下载最新 LTS 版的 Windows(x86, 64-bit)ZIP Archive 压缩包(本文以 mysql-9.7.2-winx64.zip 为例)。

    二、解压

    解压到纯英文、无空格、层级较浅的路径(如 D:\Develop\),不要放在 C:\Program Files、桌面或含中文的目录里,也不要解压出双层嵌套。解压后得到 MySQL 的“根目录”,本文统一记作 D:\Develop\mysql-9.7.2-winx64

    目录里主要关注两项:

    目录

    用途

    bin

    可执行文件:mysqld.exe(服务端)、mysql.exe(客户端)、mysqladmin.exe(管理工具)

    data

    数据目录,解压包里没有,初始化时自动生成

    ⚠️ 不要手工新建空的 data 目录,否则初始化会失败。

    三、配置与启动

    本章命令均需在以管理员身份运行的终端中执行;若改用命令提示符(CMD),Get-ServiceStart-Service 这类命令需换成对应的 sc / net 命令。

    3.1 配置环境变量

    变量

    MYSQL_HOME

    MySQL 根目录,如 D:\Develop\mysql-9.7.2-winx64

    Path

    追加 %MYSQL_HOME%\bin

    配置后必须重新打开终端窗口才生效,用 mysql --version 能打印出版本号即成功。

    3.2 可选:自定义 my.ini

    MySQL 默认使用内置配置(端口 3306、字符集 utf8mb4、数据目录为根目录下的 data),默认值够用就跳过本节

    需要改端口、字符集、数据目录等参数时,在初始化之前于根目录新建 my.ini

    BASH
    [mysqld]
    basedir=D:/Develop/mysql-9.7.2-winx64
    datadir=D:/Develop/mysql-9.7.2-winx64/data
    port=3306
    character-set-server=utf8mb4
    max_connections=200
    • 路径用 /\\,不要用单个 \

    • 用了自定义 my.ini,接下来的初始化(3.3)与注册服务(3.4)都要加上 --defaults-file="...\my.ini";日后改配置需重启服务(见 3.5)才生效。

    • 不要写已被移除的 default_authentication_plugin(8.4 起移除)。

    3.3 初始化 data 目录

    BASH
    mysqld --initialize-insecure

    无报错返回即成功,根目录下会生成 data。这条命令把 root 密码初始化为空,且只能执行一次(若用 mysqld --initialize,则生成随机密码,见 data 目录下以主机名命名的 .err 日志,如 DESKTOP-ABC123.err)。

    报错处理

    • 提示权限不足——以管理员身份重新运行。

    • The designated data directory ... is unusable.——data 目录已存在且非空,删除后重新执行。

    3.4 注册为 Windows 服务

    注册成系统服务后,才能用“启动 / 停止服务”的方式管理 MySQL:

    BASH
    mysqld --install

    不指定服务名时默认注册为 MySQL(Windows 服务名不区分大小写,本文命令统一写作 mysql),看到 Service successfully installed. 即成功。

    用了自定义 my.ini(见 3.2)时,需要在服务名之后指定配置文件:

    BASH
    mysqld --install mysql --defaults-file="D:\Develop\mysql-9.7.2-winx64\my.ini"

    服务名若不是 mysql,后面的启动、停止、卸载都要换成该名字。

    注册完成后服务不会立即启动(它的启动类型已默认为“自动”,随 Windows 启动),需要按 3.5 手动启动一次。

    3.5 启动、停止与重启服务

    启动 MySQL

    BASH
    Start-Service mysql

    无输出即启动成功;若服务本来就在运行,该命令同样不报错、不输出,可用 Get-Service mysql 确认状态(net start mysql 则会提示“MySQL 服务已经启动成功。”)。

    停止 MySQL

    BASH
    Stop-Service mysql

    停止前请先断开正在使用的数据库连接,否则这些连接会直接中断(net stop mysql 则会提示“MySQL 服务已成功停止。”)。

    重启 MySQL(修改 my.ini 后需要)

    BASH
    Restart-Service mysql

    查看运行状态

    BASH
    Get-Service mysql

    Status 显示 Running 表示正在运行,Stopped 表示已停止。

    调整启动类型(可选)

    服务注册时的启动类型默认就是“自动”,即开机随 Windows 启动;若要改成手动启动:

    BASH
    Set-Service mysql -StartupType Manual

    再改回自动:Set-Service mysql -StartupType Automatic

    图形界面方式:Win + R 输入 services.msc,在列表中找到 MySQL,右键即可“启动 / 停止 / 重新启动”;双击该服务还能修改“启动类型”(默认为“自动”)。

    若提示找不到名为 mysql 的服务,说明注册未成功或服务名不是 mysql,见 五、常见问题 的 Q4。

    3.6 设置 root 密码

    --initialize-insecure 建出来的 root 密码为空,首次设置时直接执行:

    BASH
    mysqladmin -u root password 1234

    若 root 已经设过密码,则需要先登录再修改(登录方法见 4.1),执行:

    BASH
    ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';

    1234 仅作演示,生产环境请使用 8 位以上、含大小写字母数字符号的密码;上面两条命令都会把密码留在历史记录里,公用机器上请留意。

    四、登录与常用命令

    4.1 登录

    BASH
    mysql -u root -p

    提示 Enter password: 后输入密码,提示符变为 mysql> 即登录成功。也可以把密码写进命令(-p 与密码之间不能有空格,写成 -p 1234 会被当成数据库名):

    BASH
    mysql -u root -p1234

    到这里你就可以开始你的 MySQL 之旅了!

    4.2 常用命令

    mysql> 提示符下执行,每条 SQL 以分号 ; 结尾:

    BASH
    status;                                                  -- 连接信息与版本
    show databases;                                          -- 列出所有数据库
    create database test_db default character set utf8mb4;   -- 建库
    use test_db;                                             -- 切换数据库
    drop database test_db;                                   -- 删库(数据一并删除)

    4.3 退出与登录参数

    BASH
    exit

    quit\q 等价。)

    BASH
    mysql -h 主机地址 -P 端口号 -u 用户名 -p

    参数

    含义

    默认值

    -h

    服务器地址

    localhost

    -P

    端口号(大写 P

    3306

    -u

    用户名

    当前系统用户名

    -p

    密码(小写 p,可紧跟密码或留空交互输入)

    五、常见问题

    Q1 mysql : 无法将“mysql”项识别为 cmdlet、函数、脚本文件或可运行程序的名称
    环境变量未生效:确认已重新打开终端窗口,且 MYSQL_HOME 不带 \binPath 中已加入 %MYSQL_HOME%\bin。(若用命令提示符打开,报错文案是 'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件,含义相同。)

    Q2 ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306'
    服务未启动,按 3.5 执行 Start-Service mysql

    Q3 Access denied for user 'root'@'localhost'
    密码错误,用 mysql -u root -p 交互输入;忘记密码见 Q6。

    Q4 找不到名为 mysql 的服务
    服务未注册成功或服务名不同,用 Get-Service 核对,必要时回到 3.4 重新注册。

    Q5 服务启动失败(报 1067 或启动后立刻停止)
    多为 data 目录未初始化、my.ini 参数写错或端口被占用,具体原因看 data 目录下最新的 .err 日志。

    Q6 忘记 root 密码
    Stop-Service mysql;② 新开一个管理员终端窗口执行 mysqld --skip-grant-tables --console保持该窗口开着;③ 另开一个终端窗口执行 mysql -u root,然后执行:

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

    ④ 退出后回到第 ② 步的窗口按 Ctrl + C,最后 Start-Service mysql

    Q7 3306 端口被占用
    Get-NetTCPConnection -LocalPort 3306 | Select-Object OwningProcess 查到 PID,再 Get-Process -Id <PID> 定位程序;或在 my.ini 中改 port(连接时用 -P 新端口)。

    Q8 旧客户端/驱动报 Authentication plugin 'caching_sha2_password' cannot be loaded
    升级客户端或驱动(JDBC 8.x 以上、新版 Navicat),不要改服务器的认证插件。

    Q9 中文乱码
    建库建表时使用 utf8mb4 字符集。

    六、卸载

    卸载会连同 data 目录一起删除,数据无法恢复,需要保留的库请先导出:

    BASH
    mysqldump -u root -p --all-databases --result-file=D:\backup_all.sql

    (用 --result-file 指定输出文件、而不是用 > 重定向,避免导出文件被写成 UTF-16 编码而无法导入。)

    然后在以管理员身份运行的终端中依次执行:

    1. 停止服务:Stop-Service mysql

    2. 卸载服务:mysqld --remove mysql

    3. 清理环境变量:删除 MYSQL_HOME,并从 Path 中删掉 %MYSQL_HOME%\bin

    4. 删除 MySQL 根目录

    至此,MySQL 卸载完成!

    附录:命令速查

    用途

    终端命令

    初始化 data 目录(root 空密码)

    mysqld --initialize-insecure

    初始化 data 目录(生成随机密码)

    mysqld --initialize

    注册 / 卸载服务

    mysqld --install / mysqld --remove mysql

    启动 / 停止 / 重启服务

    Start-Service mysql / Stop-Service mysql / Restart-Service mysql

    查看服务状态

    Get-Service mysql

    启动类型(默认自动)

    Set-Service mysql -StartupType Automatic / -StartupType Manual

    登录 / 修改密码

    mysql -u root -p / mysqladmin -u root password 新密码

    查看版本 / 命令路径

    mysql --version / Get-Command mysql

    备份全部数据库

    mysqldump -u root -p --all-databases --result-file=D:\backup_all.sql

    查看端口占用

    Get-NetTCPConnection -LocalPort 3306 \| Select-Object OwningProcess

    作者头像
    数阵
    数阵的博客网站
    本文是原创文章,采用 CC BY-NC-SA 4.0 协议,完整转载请注明来自 数阵
    评论

    请登录后发表评论

    滚动到此处加载评论...
    来自 数阵 最新设计与科技的文章
    查看全部
    随便逛逛
    博客分类
    文章标签
    复制地址
    深色模式