十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MySQL安装配置全攻略:从版本选型到服务注册与排错

MySQL安装配置全攻略:从版本选型到服务注册与排错 网上关于MySQL安装配置的教程一抓一大把但说实话大部分都停留在“照着点下一步”的层面。真到了自己动手尤其是想装一个干净、稳定、后续好维护的环境时各种问题就全冒出来了装完了服务起不来、密码不知道是啥、改个配置文件数据库直接崩了……这篇文章我尽量把MySQL下载安装及配置从选版本到跑通SQL的完整链路讲清楚重点是把我实操中踩过的坑和那些文档里不会明说的细节一并交代出来希望能帮你省下一些折腾的时间。1. 动手之前先把版本和发行版选对能避开大半的坑很多人觉得安装MySQL就是去官网下个最新版一路下一步完事。这套思路不是不行但很可能会给后面埋雷。我见过太多人装的是最新版结果连个图形化工具都连不上或者跑个老项目报错最后又得卸载重装。所以第一步先把选型这件事说透。1.1 Community Server、Cluster、NDB到底选哪个MySQL官网的下载页面列了好几个版本MySQL Community Server、MySQL Cluster、MySQL NDB Cluster、MySQL Workbench等等。普通人一看就懵其实你只需要关心MySQL Community Server这是免费的开源版本也是我们日常开发、学习、部署业务系统最常用的那个。Cluster和NDB是给分布式高可用场景用的单机学习或中小型项目不需要碰装错了反而给自己添堵。另外还有MySQL Enterprise Edition企业版那个是收费的功能上多了些运维管理、监控、备份之类的企业级特性但对我们个人开发者、学习者、甚至很多创业公司的业务系统来说Community Server已经绰绰有余。官方也一直在迭代性能、稳定性、安全性都在持续更新没必要为了“企业版”三个字去折腾破解或试用授权。1.2 8.x与5.7怎么选以及关于9.x要说的话再就是版本号的选择。目前主流是MySQL 8.0它是一个长期支持版本LTS稳定性和生态兼容性都经过了充分验证绝大多数云厂商的RDS、自建机房、教学课程都基于8.0。虽然MySQL 9.x已经出现但它是Innovation版本迭代节奏快功能新但对应的生态、工具链、驱动兼容性还处于磨合期。如果你不是非要尝鲜某个新特性老老实实用8.0就好尤其在生产环境追求的是“稳定压倒一切”。那5.7呢说实话5.7已经停止官方维护了意味着安全漏洞不再有官方修复。除非你的老项目锁死了版本否则新装的库一律建议8.0以上。我在实际工作中遇到过一些老系统用的5.7迁移到8.0时踩了一堆坑比如字符集排序规则、SQL模式、密码认证插件这些兼容性问题。所以新环境直接上8.0别犹豫。1.3 安装包类型MSI Installer和ZIP Archive的区别在Windows平台官网下载页会提供两种常见格式.msi安装包和.zip压缩包。很多新手容易忽略这个区别导致后面操作路径完全不一样。MSI Installer这是图形化安装向导方式全程鼠标操作适合大多数用户。它帮你处理服务注册、环境变量部分情况、目录权限等细节安装过程比较省心。ZIP Archive这是绿色解压版解压即用但需要手动初始化数据目录、手动注册Windows服务、手动配置环境变量。好处是干净、可移植性强、便于控制每一个细节。我的建议是如果你只是想快速搭个环境学习或做小项目用MSI安装包如果你想深入理解MySQL的目录结构、配置文件加载机制或者想做成“绿色版”拷到别的机器上用那就选ZIP包。这篇文章后续会重点讲ZIP方式的配置过程因为它更能让你理解MySQL是怎么跑起来的。2. MSI Installer方式安装的关键节点与细节拆解如果你选择MSI安装包确实省事很多但也不是一路“Next”就行。有几个节点需要稍微留个心眼否则很容易装完发现不对劲。2.1 下载源的选择与安装类型下载时留意下官网的镜像如果主站下载慢可以选择国内镜像。安装包体积大概几百MB版本号越长越新但下载时注意别点到“MD5”或“Signature”链接去了那是校验文件不是安装包。启动安装程序后MySQL Installer会问你要装哪类组件常见的有Developer Default默认开发环境包含MySQL Server、Workbench、Shell、Router还有一些连接器Connector。适用于绝大多数开发用途。Server only只装数据库服务端。如果你已经装了别的工具或只需要数据库引擎这个更轻量。Custom自定义可以自主勾选组件。适合对体积敏感或只需要特定组件的场景。如果你是新手建议直接Developer Default一次性把Workbench和Shell都装好。注意这里会顺带装一些微软的VC运行库如果弹出需要联网下载这是正常的等它走完。2.2 Type and Networking端口、协议和连接方式进入配置阶段后第一个是“Type and Networking”这里默认端口是3306协议是TCP/IP勾选“Open Windows Firewall ports for network access”可以放行防火墙端口。不过要注意如果本机已装了其他数据库或服务占用了3306需要改端口比如3307、3308后续连接时都要带上新端口。X Protocol端口默认33060是给MySQL Shell或某些新特性用的本地开发一般不用保持默认即可。“Named Pipe”和“Shared Memory”选项Windows下单机连接可以考虑开启但一般保持默认即可。我在实际配置中常遇到3306端口被占的情况排查思路一般是执行netstat -ano | findstr 3306看是哪个进程占用的或者直接换端口。为了省事本地实验环境换个不常用的端口其实更省心比如3307。2.3 Authentication Method认证插件选择是个分水岭这一步容易被忽略但很重要。安装时会问选择哪种认证方式Use Strong Password Encryption (Recommended)这是默认项采用caching_sha2_password插件安全性更高。Use Legacy Authentication采用mysql_native_password兼容老版本客户端。网上很多教程推荐选第二个理由是“兼容性好”。但实际上MySQL 8.0默认的强加密认证现代客户端比如官方Connector、Python的mysql-connector、Navicat较新版本、DBeaver等都能正常支持。只有那些非常老的客户端或驱动才存在兼容问题比如我之前遇到Delphi的FireDAC报那个firedac phys mysql client does not support authentication protocol requested的错误就是因为老驱动不认识caching_sha2_password。所以我的建议是默认用强加密如果你的老工具连不上再回来改成Legacy Authentication也不迟。改起来也不难安装配置阶段可以重新设置或者登录后执行一条ALTER USER命令切换认证插件。2.4 Root密码设置与Windows Service配置设置Root密码这步不用多说别用太弱的密码但也不能复杂到自己都记不住建议用类似Root_123456这种带大小写和数字的。这里有个小技巧如果你根本记不住复杂密码写在密码管理器里也行但别往代码仓库里扔那等于裸奔。Windows Service这一步默认服务名是MySQL80开机自启动默认勾选。建议保持默认这样MySQL会作为Windows服务运行开机自动拉起日常使用省心。如果你不想自启动可以取消勾选后续用命令控制服务启停也行。2.5 Apply Configuration等进度条走完才是真装完配置完这些选项后安装器会做一系列操作初始化数据目录、写入配置文件通常是C:\ProgramData\MySQL\MySQL Server 8.0\my.ini、启动服务。这一步会弹出一个大进度条上面列着一堆像“Starting Server”、“Applying Security Settings”之类的步骤看着很长实际上大部分机器一两分钟就完成了。这里提醒一下如果中途报错最常见的两类原因一是3306端口被占用二是Windows服务权限问题。前者按上文排查后者可以尝试“以管理员身份运行安装程序”。我第一次装的时候没注意用的普通用户权限结果服务一直起不来折腾了好一阵后来管理员运行就好了。3. ZIP Archive方式手动配置才是真正理解MySQL运转逻辑的开始如果你想要更可控的方式或者想尝试“绿色版”MySQL那么ZIP包手动配置这条路值得走一遍。虽然步骤多一些但每一步都有其必要性走完之后你对MySQL的目录、配置项、服务机制会有更扎实的理解。3.1 解压目录与目录结构说明下载ZIP包后解压到一个尽量“干净”的路径比如D:\mysql\mysql-8.0.x-winx64。注意路径中不要有中文、空格和特殊符号因为某些工具和命令行工具对这些路径的处理不够完善容易出幺蛾子。解压后目录大概长这样实际略有差异bin存放MySQL可执行程序如mysqld.exe服务端、mysql.exe客户端、mysqldump.exe备份工具等。docs文档目录。include、lib开发用的头文件和库文件。share错误信息、字符集等数据文件。看到这里你应该明白ZIP包本身是不带my.ini配置文件的也不会自动创建data数据目录。这就是手动配置的核心my.ini要自己写data目录要用mysqld --initialize来初始化。3.2 手写my.ini配置文件的要点和参数解析很多教程会让你新建一个my.ini但并没有解释每项参数是干嘛的导致你遇到性能问题时无从下手。我这里给一份基础的、可直接用于本地开发和学习的配置示例并解释关键参数[mysqld] # 端口号默认3306如果冲突可以改 port3306 # 安装目录也就是解压后的根目录注意用双斜杠或正斜杠 basedirD:/mysql/mysql-8.0.x-winx64 # 数据目录用来存放数据库文件 datadirD:/mysql/mysql-8.0.x-winx64/data # 字符集设置utf8mb4是目前最推荐的 character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci # 默认存储引擎InnoDB支持事务、行级锁是主流 default-storage-engineINNODB # 最大连接数本地学习默认100也行调大点如200也可以 max_connections200 # 以下是InnoDB相关默认值即可但要了解 innodb_buffer_pool_size128M [client] default-character-setutf8mb4需要注意几个细节basedir和datadir建议使用绝对路径。很多人踩过这样的坑路径中用了反斜杠\结果被识别成转义字符服务起不来。用正斜杠/或双反斜杠\\会稳妥一些。datadir指向的目录不需要手动创建初始化时会自动生成前提是父目录权限足够。字符集这里用utf8mb4_unicode_ci是通用选择对于绝大多数中文和emoji存储场景都没问题。如果你的业务对排序规则有特殊要求比如中文拼音排序可能需要根据实际需求调整。innodb_buffer_pool_size是InnoDB最重要的内存参数之一。在本地开发环境128M已经够用如果机器内存大比如16G以上可以调到512M或1G但不要图大无脑调给操作系统留点余量。3.3 初始化数据目录这条命令里藏着一个关键选项配置好my.ini后打开命令行建议以管理员身份运行切换到MySQL的bin目录执行初始化命令mysqld --initialize-insecure注意这条命令会产生两种不同的结果如果使用--initialize-insecure会生成一个root空密码的超级管理员账户适合初次学习直接mysql -u root --skip-password就能登录。如果使用--initialize则生成一个随机临时密码MySQL会在初始化日志中输出登录时必须使用这个临时密码然后马上修改密码。对新手来说我建议用--initialize-insecure省去在日志里翻密码的麻烦。但要注意空密码是临时的登录后第一件事就是设置新密码mysql -u root --skip-password ALTER USER rootlocalhost IDENTIFIED BY 你的新密码; FLUSH PRIVILEGES;其实官方也建议数据目录初始化之后MySQL会自动生成system库和权限表这个过程只能执行一次。如果你初始化后想重新弄需要把data目录清空再执行一次否则会报错。3.4 注册Windows服务启动MySQL的“正规军”方式初始化完成后接下来要把MySQL注册成Windows服务这样就能通过服务管理来启停了而不是每次都去bin目录启动一个裸进程。mysqld --install MySQL执行成功后使用以下命令启动服务net start MySQL如果你在安装过程中改了服务名或者本机已经装了其他MySQL实例服务名要区分开。例如mysqld --install MySQL8 --defaults-fileD:/mysql/mysql-8.0.x-winx64/my.ini这里--defaults-file参数是必须的因为它告诉mysqld从哪个配置文件读取配置。注册服务后打开Windows服务管理器services.msc可以看到“MySQL”服务启动类型可以选择“自动”或“手动”日常用建议“自动”省得每次手动拉。3.5 设置环境变量让各种工具都能找到mysql命令这一步很多人会忽略但不做的话你在任意目录打开命令行想执行mysql命令都会提示“mysql不是内部或外部命令”。解决方法很传统右键“此电脑” - “属性” - “高级系统设置” - “环境变量”。在系统变量中找到Path编辑新增一项D:\mysql\mysql-8.0.x-winx64\bin。确定保存后重新打开一个命令行窗口执行mysql --version验证。网上有些教程会额外让你新建一个MYSQL_HOME系统变量指向MySQL的根目录。这其实不是必需的因为有basedir参数在配置文件里就够了但你如果习惯用变量设一个也无妨。关键在于Path里必须包含bin目录否则mysql客户端、mysqldump这些工具在全局访问不到。很多人配置完环境变量后在原来的窗口执行命令发现没生效这不是配错了而是环境变量的读取发生在进程启动时。重新打开命令行窗口即可。4. 安装后的完整功能验证与高频故障排查装完之后别急着写业务代码先做一轮功能验证确认数据库服务端、客户端、权限系统、网络连接都正常。这个验证过程要系统化别只敲一个mysql -V就算完事。4.1 服务状态、客户端登录和基础SQL验证先看服务状态net start | findstr MySQL如果服务已经启动再测试客户端登录。我建议分两步先测试无密码或临时密码登录和空密码登录的区别再测试密码登录。mysql -u root -p输入密码后如果出现mysql提示符说明服务端和客户端已经打通。这时候依次执行下面三条基础命令确认当前版本、默认数据库和存储引擎SELECT VERSION(); SHOW DATABASES; SHOW ENGINES;看到类似-----------的输出就对了。SHOW DATABASES至少会列出information_schema、mysql、performance_schema、sys这些系统库确认不是报错就说明权限配置正常。4.2 常见安装与连接报错从提示语反推问题根源这里把新手经常遇到的几个报错整理成表格方便你对照定位。报错信息常见原因排查思路MySQL 服务无法启动服务没有报告错误数据目录未初始化、配置文件路径错误检查data目录是否存在且非空检查my.ini中basedir/datadir路径查看Windows事件查看器中的MySQL错误日志Cant connect to MySQL server (10061)服务未启动、端口被防火墙拦截、目标端口不对确认服务状态执行netstat -ano检查3306端口监听情况确认本机防火墙放行Access denied for user rootlocalhost密码错误、root账号的host限制确认密码注意密码区分大小写。若忘记密码可用--skip-grant-tables方式重置密码Unknown database xxx数据库不存在执行SHOW DATABASES确认库名Client does not support authentication protocol requested by server客户端版本太老不认识caching_sha2_password升级客户端/驱动或者将账号认证插件改为mysql_native_passwordThe service already exists服务已注册过但被删除/重复安装执行sc delete MySQL删除旧服务再重新mysqld --install这里特别展开一下“服务无法启动”的排查链路。很多情况下问题出在数据目录。我第一次用ZIP包时按照老教程直接复制了一份别人做好的data目录结果服务一直起不来后来发现两个原因一是目录权限不对二是初始化元数据和当前MySQL版本不匹配。所以数据目录必须用当前版本的mysqld初始化不要用手工创建或拷贝的方式。另外如果Windows事件查看器里看到[ERROR] MySQL: unknown variable ...之类的信息多半是my.ini里某个参数写错了或MySQL版本已经移除了该参数。比如8.0.17之后整型字段的显示宽度特性比如int(5)已经移除如果配置文件里写了一些老参数控制台也会直接报错。处理原则是删掉或注释掉不认识的参数逐项排查。4.3 忘记密码后的三种自救办法忘了root密码这是每个人迟早会遇到的事。这里给出两种我自己用过的处理思路。第一种通过--skip-grant-tables跳过权限验证。步骤如下停止MySQL服务net stop MySQL。以跳过权限表方式启动mysqld --skip-grant-tables注意是前台运行占住当前窗口。另开一个命令行执行mysql -u root此时无需密码就能进入。先执行FLUSH PRIVILEGES;再修改密码ALTER USER rootlocalhost IDENTIFIED BY 新密码;注意这里的FLUSH PRIVILEGES要执行否则可能报错或新密码不生效。修改完后关闭跳过权限的窗口再正常启动服务。第二种如果你刚好是Windows服务方式启动的可以直接修改my.ini在[mysqld]下面临时加上一行skip-grant-tables然后重启服务登录后再把这个参数去掉再重启服务。这种方法不用管窗口占用但要注意改完密码后一定要去掉这个参数否则数据库处于“裸奔”状态任何人都能无密码登录。4.4 卸载和重装时容易残留的“幽灵”问题不夸张地说很多人的MySQL“装坏了”其实是从卸载不干净开始的。Windows下卸载MySQL后经常会有三个地方残留服务残留即使卸载了程序服务注册表项可能还在导致重装时提示服务已存在。数据目录残留默认在C:\ProgramData\MySQL卸载不会自动删除需要手动清理。配置文件残留可能在C:\ProgramData\MySQL\MySQL Server 8.0\my.ini如果不删重装时可能会读取到旧配置。所以如果你准备彻底重装按这个顺序来停服务 - 卸载程序 - 删除服务sc delete MySQL- 删除数据目录 - 删除配置文件 - 清理注册表中与MySQL相关的项。这一步做完才算是干净的卸载。5. 实际使用前的管理账户与安全配置很多人装完MySQL后直接拿root账号给自己业务用这在大团队或生产环境中是不推荐的。虽然本地学习不用上纲上线但养成好习惯没坏处。5.1 为什么不要长期用root跑业务root账号拥有MySQL的所有权限这意味着任何一个SQL注入漏洞或误操作都可能让整个数据库裸奔。我在公司内网项目上就见过这种情况有人拿root当业务账号结果前端一个SQL拼接漏洞直接把整个库的表结构都拉了出来。这种事情如果发生在生产环境后果不堪设想。正确的做法是给业务或项目创建独立账号按需授权。比如CREATE USER app_userlocalhost IDENTIFIED BY App_password_123; GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO app_userlocalhost; FLUSH PRIVILEGES;这样即使出问题也影响不了其他库和系统库。5.2 修改root账号的认证插件和权限范围如果你是老驱动连不上可以这样把root账号或业务账号改成mysql_native_passwordALTER USER rootlocalhost IDENTIFIED WITH mysql_native_password BY 你的密码;但这意味着密码是以老哈希方式存储的安全性不如默认的caching_sha2_password。如果在网络环境中传密码建议配合SSL使用或者只在必要的兼容性场景下再这样改。关于host范围root账号默认只允许localhost连接这是安全设计。如果你确实需要远程访问比如用另一台机器连接开发库可以单独创建一个允许远程登录的账号CREATE USER remote_user% IDENTIFIED BY StrongPass123; GRANT ALL PRIVILEGES ON *.* TO remote_user%; FLUSH PRIVILEGES;但%表示任意IP都能连风险较高。更稳妥的做法是指定IP段比如remote_user192.168.1.%这样只有内网指定网段能连。另外别忘记在Windows防火墙中放行3306端口否则公网IP也连不上。5.3 密码策略与多实例并存的注意事项MySQL 8.0默认安装了validate_password组件它会强制密码满足一定复杂度比如长度、大小写混合、数字和特殊字符。如果你在测试环境想用简单密码比如123456会收到报错。这时可以临时调整密码策略级别SET GLOBAL validate_password.policy LOW; SET GLOBAL validate_password.length 6;但这两个是运行时参数重启后会恢复默认。想持久化需要把参数写进my.ini的[mysqld]段或者在安装组件时定义。另外如果你在同一台机器上跑多个MySQL实例要注意几点每个实例必须有独立的basedir或至少独立的datadir、port、socket/管道名。每个实例要单独注册Windows服务服务名不能重复。每个实例使用不同的配置文件通过--defaults-file参数指定。我本地就同时跑过8.0和5.7两个实例一个用于新项目一个用于维护老系统。当时为了省事没改端口结果两个实例抢3306服务一直起不来。后来老老实实把老实例的端口改成3307两个实例才和平共处。6. 图形化工具选择与MySQL日常操作习惯配置完服务端并不代表安装流程彻底结束。一个好的图形化客户端能大幅提升开发效率尤其是对于SQL语法还不熟练的新手来说可视化地查看库表结构、执行查询、导入导出都会直观得多。6.1 MySQL Workbench的基础使用和关键设置官方自带的MySQL Workbench是目前最主流的免费客户端之一。安装MSI版本时一般会顺带装上如果你用的是ZIP包手动配置也可以单独从官网下载Workbench安装。新建连接时需要填几个信息Connection Name连接名称随意起比如Local MySQL。Hostname127.0.0.1或localhost。Port3306也就是你配置的端口。Usernameroot或你创建的业务账号。Password点“Store in Vault”可以把密码存起来免得每次输入。连接成功后你会看到左侧是SCHEMAS面板列出了所有数据库。双击某个库就能看到它的表、视图、存储过程、函数等对象。日常写SQL可以点击菜单栏的SQL Editor图标一个闪电标志或者在“File - New Query Tab”中打开一个查询页签。我建议一上来先把以下几个设置弄好在“Edit - Preferences - SQL Editor”中把“Safe Updates”选项理解清楚。这个选项默认开启意味着不带WHERE条件的UPDATE或DELETE会被拦截防止误操作。但很多新手第一次执行DELETE FROM t;清空表时报错其实就是这个选项在起作用。可以临时关闭但生产环境不要关。字体大小调到一个你觉得舒服的值字体建议用Consolas或JetBrains Mono看起来不累。把“DBMS Connection read time out”等超时参数适当调大避免导入大SQL文件时连接断开。6.2 DBeaver和Navicat的选型建议以及我最终的选择除了Workbench还有两款主流工具Navicat界面美观功能强大支持MySQL、PostgreSQL、SQL Server等多种数据库操作很顺手但收费。DBeaver开源免费基于Eclipse功能同样丰富支持多种数据库界面相对朴素但扩展性强。我的个人使用习惯是日常用DBeaver社区版因为免费跨平台而且连各种数据库都很方便。Workbench更多是用来做数据库设计EER图、导入导出这类官方工具特有的操作。如果你只是想看看表结构执行几条查询DBeaver完全够用如果你主要跟MySQL打交道且不想折腾Workbench也是很好的选择毕竟同门师兄弟兼容性最稳。6.3 利用mysqldump做数据备份的最小示例装完MySQL其实还有个容易被忽视但很重要的习惯定期备份。虽然备份不属于“安装配置”的范畴但它应该成为你使用数据库的第一习惯。用自带的mysqldump工具做逻辑备份是最基础的方式。假设要备份mydb数据库到D:\backup\mydb.sqlmysqldump -u root -p mydb D:\backup\mydb.sql如果要备份所有数据库mysqldump -u root -p --all-databases D:\backup\all_databases.sql这个命令会在当前目录生成一个SQL文本文件包含了建库、建表、插入数据的完整语句。恢复时用mysql -u root -p D:\backup\mydb.sql这里有个提醒备份文件是文本格式注意磁盘空间。另外生产环境建议用物理备份或云数据库自动备份但本地学习逻辑备份足够。6.4 几条与安装阶段强相关的SQL细节验证配置完成后有些SQL特性和版本相关提前了解一下能帮你避免“装完了以为数据库出问题”的错觉。int(5)的显示宽度问题MySQL 8.0.17之后整型的显示宽度已废弃int(5)和int存储范围完全一样不要再被老教程误导。UPDATE语法必须加上条件比如UPDATE user SET age20 WHERE id1;不带WHERE会更新所有行这是新手最常犯的错。ORDER BY排序默认升序ASC降序要加DESC例如SELECT * FROM t ORDER BY id DESC;多字段排序时用逗号分隔。存储过程8.0支持存储过程创建语法是CREATE PROCEDURE不过刚入门不用急着学先掌握CRUD。这些日常SQL知识点和安装本身没有直接关系但如果你是从零开始安装完数据库并登录成功的那一刻就是开始练习这些语句的最好时机。7. 几个我踩过且不想你再踩的细节坑最后补充一些散落在安装和配置过程中的小坑单个看都不起眼但累积起来能让人折腾到怀疑人生。7.1 安装目录和数据目录权限的问题在Windows上如果你把MySQL放在C:\Program Files下可能会遇到权限不足的问题。因为该目录受系统保护MySQL服务要写入数据时会失败。所以建议安装到非系统盘比如D盘、E盘或者至少在C:\下给一个普通用户可写的子目录别直接塞进Program Files。7.2 防火墙导致远程连接失败本地连接一切正常但另一台机器怎么都连不上这种情况8成是Windows防火墙拦截了3306端口。处理方法有两种在防火墙“高级设置”中新建入站规则放行TCP 3306端口。或安装MySQL时勾选的“Open Windows Firewall ports for network access”选项有的版本在已装有防火墙策略的机器上不生效需要手动加。测试端口是否通的命令是telnet 192.168.x.x 3306如果telnet提示连接失败说明端口不通先查防火墙再查MySQL是否允许远程连接bind-address不要设为127.0.0.1否则外部无法连接。7.3 中文乱码的根因不在客户端工具而在于字符集链路新手常遇到的另一个问题是插入的中文变成了???。这通常是字符集没有形成完整链路。所谓链路从客户端、连接、数据库、表到字段每个环节的字符集最好都统一为utf8mb4。检查方法SHOW VARIABLES LIKE character_set_%;如果看到character_set_client、character_set_connection、character_set_results这些不是utf8mb4可以在my.ini的[mysqld]段设置character-set-serverutf8mb4 collation-serverutf8mb4_unicode_ci并且在[client]段设置default-character-setutf8mb4另外创建数据库时也建议明确字符集CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;这样多管齐下中文乱码的问题基本能消灭。7.4 服务启动方式与命令行的交互关系最后提一个很多人弄混的点mysqld是服务端程序mysql是客户端程序。在命令行执行mysql是连接服务端而不是启动数据库。如果你看到“ERROR 2003 (HY000): Cant connect to MySQL server on localhost:3306 (10061)”这样的提示说明服务端没启动而不是你密码错了。启动服务端的方式有两种通过Windows服务net start MySQL。直接前台运行mysqld --console适合调试配置问题。如果直接前台运行能看到详细日志这是排查问题的利器。我遇到过一次配置文件参数错误服务一直是“启动后立即停止”用mysqld --console一看控制台直接输出了error日志问题一目了然。回到最初的起点MySQL下载安装及配置这件事看起来是个入门操作但要做好、做稳涉及的东西其实不少。版本选型影响后续生态兼容安装方式决定你对它的掌控程度而环境变量、配置文件、服务注册、账号权限这些细节每一个都对“能不能真正用起来”起着决定性作用。按这篇文章的路径走一遍把基础打牢后面无论学习还是做项目都会顺畅很多。
返回列表