多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

MySQL 8.0 安装配置全攻略:从Windows到Linux的实战指南

MySQL 8.0 安装配置全攻略:从Windows到Linux的实战指南 1. 从零到一为什么你需要亲手安装MySQL 8.0如果你正在学习后端开发、数据分析或者想搭建一个自己的博客、小程序后台那么数据库是你绕不开的一环。MySQL作为全球最流行的开源关系型数据库之一几乎成了这个领域的“普通话”。而MySQL 8.0版本相较于之前的5.7在性能、安全性和功能上都有显著提升比如支持窗口函数、JSON功能的增强、默认字符集改为utf8mb4以及更安全的密码认证插件。所以直接上手8.0是跟上技术潮流、避免未来迁移麻烦的明智选择。很多人可能会想现在云服务商都提供一键部署的RDS关系型数据库服务为什么还要自己折腾安装我个人的体会是亲手安装配置一遍是理解数据库运行机制、掌握排错能力的最佳途径。你会在安装过程中遇到各种环境问题、配置冲突解决它们的过程远比直接使用一个封装好的服务学到的多。这就像学开车你不能只会用自动驾驶得知道怎么换轮胎、怎么看仪表盘。今天我就带你走一遍在Windows和Linux以CentOS为例两大主流操作系统上安装和配置MySQL 8.0的完整流程并分享一些官方文档里不会写的“坑”和技巧。2. 战前准备理清思路与获取“弹药”在动手之前清晰的思路能帮你避开一半的麻烦。整个安装过程可以概括为三个核心步骤获取安装包 - 执行安装 - 进行初始配置。但每一步里面都有不少细节。首先是版本选择。访问MySQL官方网站的下载页面你会看到好几个版本MySQL Installer for Windows这是Windows用户的推荐选择它是一个图形化安装器可以帮你一次性安装MySQL服务器、客户端工具如Workbench、连接器等非常省心。MySQL Community Server这是纯粹的服务器二进制压缩包适用于Windows、Linux、macOS。在Linux上我们通常使用这个版本通过包管理器如yum或apt或直接解压TAR包来安装。MySQL Yum Repository、APT Repository这是为Linux系统准备的软件仓库源通过配置它你可以用系统自带的包管理器来安装和更新MySQL这是生产环境最推荐的方式便于管理。对于新手我的建议是Windows用户直接下载MySQL Installer走图形化路线快速直观。Linux用户学习/测试可以使用通用TAR包手动解压配置过程更透明有助于理解。Linux用户生产倾向务必配置官方Yum或APT仓库进行安装这能确保依赖关系正确并且未来升级方便。其次是环境自查。在Windows上确保你有管理员权限。在Linux上你需要一个具有sudo权限的账户。另外检查一下系统是否已经安装了旧版本的MySQL或MariaDB一个MySQL的分支如果存在需要先彻底卸载避免端口默认3306和服务冲突。你可以通过命令mysql --version或systemctl list-units | grep mysql来检查。最后记住官网地址dev.mysql.com。从官方渠道下载安全有保障。准备好这些我们就可以正式开始了。3. Windows平台图形化安装保姆级步步解析对于大多数Windows开发者或初学者使用MySQL Installer是最佳路径。它不仅安装服务器还附带了一套好用的图形化管理工具。3.1 下载与启动安装向导前往MySQL官网下载Windows版的MySQL Installer。运行下载好的.msi安装文件。首先你会看到一个“Choosing a Setup Type”的界面这里有几种安装类型Developer Default开发者默认。它会安装MySQL服务器、MySQL Workbench图形化管理工具、MySQL Shell、连接器/ODBC等一整套开发所需工具。如果你是第一次安装用于学习和开发强烈推荐选择这个。Server only仅安装服务器。更纯净适合已经熟悉命令行或使用其他管理工具的用户。Client only仅安装客户端工具。Custom自定义。可以精确选择每一个要安装的组件适合高级用户。我们选择“Developer Default”然后点击“Next”。安装程序会检查你的系统环境可能会提示你需要安装一些额外的依赖比如Visual C Redistributable按照提示安装即可。3.2 执行安装与产品配置依赖检查通过后进入“Installation”阶段点击“Execute”安装程序就会开始下载如果你下载的是在线安装包并安装你选择的所有产品。这个过程需要联网时间取决于你的网速。所有产品安装完成后点击“Next”进入关键的配置环节——“Product Configuration”。这里会对MySQL Server进行初始配置。High Availability高可用性选项。默认是“Standalone MySQL Server / Classic MySQL Replication”即单机版或经典主从复制。我们初次安装选择单机版即可。Type and Networking类型和网络。Config Type配置类型。有“Development Computer”开发机占用资源较少、“Server Computer”服务器中等资源、“Dedicated Computer”专用数据库服务器占用资源最多。根据你电脑的用途选择笔记本开发选“Development Computer”就行。Connectivity连接方式。默认勾选“TCP/IP”端口是3306。下面的“Named Pipe”和“Shared Memory”是Windows特有的本地连接方式一般不用管。这里务必确保端口3306没有被其他程序如旧的MySQL、某些开发工具内置数据库占用如果占用安装会失败。Authentication Method认证方法。这是MySQL 8.0的一个重大变化Use Strong Password Encryption for Authentication (RECOMMENDED)使用强密码加密推荐。这是MySQL 8.0默认的新方式caching_sha2_password安全性更高但一些旧的客户端驱动或程序如某些PHP版本可能不支持。Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)使用传统认证方法保持MySQL 5.x兼容性。即旧的mysql_native_password方式。我的建议是除非你明确知道你的某个老旧应用必须用旧方式连接否则一律选择新的强密码加密。未来是它的天下提前适应。如果后续有连接问题可以单独为用户修改认证插件。Accounts and Roles账户和角色。这是设置MySQL超级管理员root账户密码的地方。在“MySQL Root Password”和“Repeat Password”输入两次强密码。请务必记住这个密码下方可以创建额外的用户这里我们先跳过安装后用命令行创建更灵活。Windows ServiceWindows服务。默认会配置MySQL为一个Windows服务服务名默认是MySQL80。这意味着开机可以自动启动也可以通过服务管理器手动启动/停止。保持默认即可。Apply Configuration点击“Execute”安装程序会将上述配置应用到MySQL服务器。成功后点击“Finish”。至此MySQL服务器和Workbench等工具就安装配置完成了。你可以在开始菜单找到“MySQL 8.0 Command Line Client”或“MySQL Workbench”来连接数据库。注意安装完成后MySQL的服务MySQL80默认是启动状态。你可以在Windows服务管理器中services.msc查看和控制它。4. Linux平台命令行安装两种主流方式详解Linux下的安装更考验动手能力通常有两种主流方式通过操作系统包管理器安装以及下载TAR包手动安装。前者更规范后者更灵活。4.1 方式一通过Yum仓库安装CentOS/RHEL推荐这是最接近生产环境实践的方法能自动处理依赖并且方便后续升级。添加MySQL Yum仓库 首先到MySQL官网下载对应你Linux发行版的Yum仓库安装包.rpm。例如对于CentOS 7你可以用以下命令直接下载并安装仓库配置sudo wget https://dev.mysql.com/get/mysql80-community-release-el7-11.noarch.rpm sudo rpm -ivh mysql80-community-release-el7-11.noarch.rpm这个操作会在/etc/yum.repos.d/目录下添加MySQL的仓库文件。安装MySQL服务器 清理yum缓存并安装sudo yum clean all sudo yum install mysql-community-server这个命令会安装MySQL服务器及其所有依赖。启动MySQL服务并设置开机自启sudo systemctl start mysqld # 启动服务 sudo systemctl enable mysqld # 设置开机自启 sudo systemctl status mysqld # 查看服务状态确认是active (running)获取初始临时密码 MySQL 8.0在首次启动后会为root用户生成一个临时随机密码并记录在日志文件中。查看密码sudo grep temporary password /var/log/mysqld.log输出类似A temporary password is generated for rootlocalhost: JqkfT3zA!8u*。记下这个复杂的密码。运行安全配置向导并修改root密码 使用临时密码登录并运行安全脚本它会引导你修改root密码、移除匿名用户、禁止远程root登录等。mysql -u root -p输入刚才查到的临时密码。登录成功后立即修改密码MySQL 8.0要求密码必须足够复杂ALTER USER rootlocalhost IDENTIFIED BY YourNewStrongPassword123!; FLUSH PRIVILEGES;然后可以运行mysql_secure_installation脚本进行其他安全设置或者手动按需配置。4.2 方式二使用通用TAR包手动安装这种方式适合需要自定义安装路径、或者系统没有合适包管理器的情况。下载并解压TAR包cd /usr/local sudo wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.37-linux-glibc2.28-x86_64.tar.xz # 版本号请替换为最新 sudo tar -xvf mysql-8.0.37-linux-glibc2.28-x86_64.tar.xz sudo ln -s mysql-8.0.37-linux-glibc2.28-x86_64 mysql # 创建一个软链接方便管理 cd mysql创建mysql用户和组并更改目录权限sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql sudo chown -R mysql:mysql /usr/local/mysql/ sudo chmod -R 750 /usr/local/mysql/初始化数据目录sudo bin/mysqld --initialize --usermysql --basedir/usr/local/mysql --datadir/usr/local/mysql/data初始化成功后同样在输出信息的最后你会看到root用户的临时密码务必记下。配置SSL和系统服务关键步骤sudo bin/mysql_ssl_rsa_setup --datadir/usr/local/mysql/data创建MySQL的配置文件/etc/my.cnf至少需要指定数据目录和socket[mysqld] basedir/usr/local/mysql datadir/usr/local/mysql/data socket/tmp/mysql.sock [client] socket/tmp/mysql.sock将support-files/mysql.server脚本复制到/etc/init.d/目录下并配置开机启动不同发行版方式不同例如在CentOS 7上更推荐使用systemd unit文件。启动服务并修改密码 启动服务然后用临时密码登录修改root密码步骤与Yum安装后的步骤5完全相同。踩坑提示手动安装时最常见的错误是权限问题chown没做好和配置文件路径错误。务必确保basedir、datadir和配置文件中的路径与实际位置完全一致。另一个坑是如果系统已安装了mariadb-libs可能需要先卸载它sudo yum remove mariadb-libs否则可能会因为库文件冲突导致初始化失败。5. 安装后的关键配置与初次连接无论通过哪种方式安装成功第一次使用前都需要进行一些必要的配置和连接测试。5.1 基础安全配置除了安装过程中修改的root密码还应考虑移除匿名用户匿名用户允许任何人无需密码登录数据库这是极大的安全隐患。登录MySQL后执行DELETE FROM mysql.user WHERE User; FLUSH PRIVILEGES;禁止root用户远程登录生产环境下绝对不要让root账户拥有从任何主机%登录的权限。确保root用户的主机限制是localhost。SELECT User, Host FROM mysql.user WHERE Userroot;如果存在Host为%的root记录考虑删除或修改它。创建专用应用用户为你的每一个应用程序创建一个独立的数据库用户并授予最小必要的权限。例如为名为myapp的数据库创建一个用户CREATE USER myappuser% IDENTIFIED BY StrongAppPassword!; -- 允许从任何IP连接生产环境建议指定IP GRANT ALL PRIVILEGES ON myapp.* TO myappuser%; FLUSH PRIVILEGES;5.2 调整字符集为utf8mb4MySQL 8.0虽然默认字符集已经是utf8mb4但为了确保万无一失最好检查并显式设置。编辑MySQL配置文件Windows在安装目录下的my.iniLinux在/etc/my.cnf或/etc/mysql/my.cnf在[mysqld]段添加[mysqld] character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci保存后重启MySQL服务使配置生效。然后登录MySQL执行SHOW VARIABLES LIKE character_set_%;和SHOW VARIABLES LIKE collation_%;确认相关变量都已变为utf8mb4。5.3 连接测试与管理工具选择命令行连接这是最基本也是最强大的方式。在终端或CMD中输入mysql -u root -p然后输入密码。看到mysql提示符就说明连接成功了。你可以在这里执行所有SQL命令。图形化工具连接MySQL Workbench官方出品功能全面适合管理和开发。安装时如果选了Developer Default它已经装好了。打开后新建连接输入主机名本地是localhost或127.0.0.1、端口3306、用户名和密码即可。Navicat、DBeaver第三方优秀工具支持多种数据库界面和功能各有特色。DBeaver是开源免费的非常推荐。VS Code插件如MySQL或Database Client插件可以在编辑器内直接连接和操作数据库对开发者很友好。首次连接成功后建议创建一个测试数据库和表插入一点数据试试确保整个读写流程通畅。6. 实战排坑高频问题与解决方案安装配置过程很少一帆风顺下面是我总结的几个最常见的问题及解决办法。6.1 端口3306被占用现象安装时提示端口3306被占用或启动服务失败。排查Windows打开命令提示符管理员运行netstat -ano | findstr :3306查看哪个进程IDPID占用了端口然后到任务管理器中结束对应进程。Linux运行sudo netstat -tlnp | grep :3306或sudo ss -tlnp | grep :3306。解决如果占用进程是旧的MySQL或MariaDB先将其卸载。如果是其他程序如某些开发环境自带的数据库可以尝试停止它或者为MySQL换一个端口在配置文件中修改port参数并重启服务。6.2 忘记root密码这是一个经典问题。解决思路是让MySQL在启动时跳过权限验证。停止MySQL服务sudo systemctl stop mysqld或 在服务管理器中停止。以安全模式启动并跳过授权表Linuxsudo mysqld_safe --skip-grant-tables --skip-networking Windows需要修改my.ini文件在[mysqld]段添加一行skip-grant-tables然后启动服务。无密码登录新开一个终端运行mysql -u root直接登录。清空root密码MySQL 8.0略有不同FLUSH PRIVILEGES; -- 先刷新权限 ALTER USER rootlocalhost IDENTIFIED BY ; -- 8.0前版本可能是 UPDATE mysql.user SET authentication_stringPASSWORD() WHERE Userroot;实际上在跳过授权表模式下你可以直接修改mysql.user表但更推荐用ALTER USER。退出恢复原配置并重启服务移除--skip-grant-tables参数或配置文件中的那行然后正常重启MySQL服务。再用空密码或你刚设的新密码登录并立即修改为一个强密码。6.3 客户端连接报错caching_sha2_password认证插件问题现象使用一些老的客户端如旧版的PHP mysql扩展、某些ODBC驱动连接MySQL 8.0时报错提示“Authentication plugin ‘caching_sha2_password‘ cannot be loaded”或类似。原因MySQL 8.0默认使用caching_sha2_password插件而旧客户端只支持mysql_native_password。解决方案三选一升级客户端驱动这是最根本的解决办法。将你的应用连接库升级到支持新认证插件的版本。修改用户认证插件临时方案如果无法升级客户端可以修改对应用户的认证方式。ALTER USER your_username% IDENTIFIED WITH mysql_native_password BY your_password; FLUSH PRIVILEGES;服务器配置默认插件不推荐在MySQL配置文件my.cnf中[mysqld]下添加default_authentication_pluginmysql_native_password并重启但这会降低新用户的安全性。6.4 无法远程连接到数据库现象本地可以连接但其他机器无法连接。排查步骤检查用户权限确保你连接的用户如root或应用用户的主机Host字段是%或特定的远程IP而不是localhost。localhost仅代表本地套接字连接。SELECT User, Host FROM mysql.user;如果需要远程连接创建或修改用户CREATE USER username% IDENTIFIED BY password;检查MySQL绑定地址配置文件中的bind-address参数。默认可能是127.0.0.1这只会监听本地回环地址。将其改为0.0.0.0可以监听所有IP地址或者改为服务器具体的IP。[mysqld] bind-address 0.0.0.0注意改为0.0.0.0会允许任何IP尝试连接务必配合防火墙和强密码使用。检查防火墙Linux的firewalld或iptables、Windows的防火墙需要放行3306端口。CentOS Firewalld:sudo firewall-cmd --permanent --add-port3306/tcp sudo firewall-cmd --reloadUbuntu UFW:sudo ufw allow 3306/tcp检查云服务器安全组如果你用的是阿里云、腾讯云等云服务器还需要在云平台的控制台配置该服务器的安全组规则入方向允许3306端口。按照“用户权限 - MySQL配置 - 系统防火墙 - 云安全组”这个顺序排查基本能解决99%的远程连接问题。整个过程走下来你应该已经成功在Windows或Linux上部署好了MySQL 8.0并掌握了从安装、配置到基础排错的全套技能。数据库的世界很大安装只是第一步接下来你可以深入去学习SQL语法、索引优化、事务和锁等核心知识了。如果在安装过程中遇到了上面没提到的问题多查看MySQL的错误日志Linux通常在/var/log/mysqld.logWindows在数据目录下的.err文件日志里的信息是定位问题的关键。
返回列表