本地MySQL数据库搭建教程:从安装配置到建库建表排错

发布时间:2026/9/13 20:15:31
本地MySQL数据库搭建教程:从安装配置到建库建表排错 本地搭MySQL数据库这件事说大不大说小不小。很多朋友第一次接触后端开发、写课程设计、或者自己练手做项目第一关就是怎么在本地把MySQL装起来、建一个数据库、跑通第一条SQL。可真上手的时候版本选哪个、用安装包还是压缩包、服务为啥起不来、密码到底在哪看、Workbench怎么连这些细碎问题能把人磨到怀疑人生。这篇文章我就按照自己这么多年反复重装、帮别人处理问题的经验把本地创建MySQL数据库的完整流程、核心配置、常用操作和排错方法一次讲透适用于Windows和Linux/Docker环境适合刚入门的朋友照着操作也适合已经装过但因为各种问题想重装的兄弟姐妹。1. 装之前先花五分钟想清楚你到底需要用哪种方式装1.1 版本选择别纠结默认MySQL 8.0系列很多人上来就问“我该装5.7还是8.0”。我的建议非常简单新环境一律用MySQL 8.0最好选8.0.x的最新小版本。原因是8.0已经是多年的LTS版本各种教程、驱动、客户端框架都对它适配得很完善5.7在2023年已经停止官方维护新项目没必要再踩它的老坑。8.0带来的几个实际好处日常开发中能明显感觉到默认字符集就是utf8mb4你不用再为中文乱码折腾一堆配置支持窗口函数和公共表表达式CTE写复杂查询的时候优雅得多性能方面对InnoDB做了大量优化。如果机器配置实在老旧或者纯学习5.7语法那装5.7也不是不行但前提是你知道自己在做什么。另外提醒一句8.0默认的认证插件是caching_sha2_password这个机制更安全但老版本客户端比如5.x时代的Navicat、旧版JDBC驱动连不上。如果遇到“Authentication plugin caching_sha2_password cannot be loaded”这种报错要么升级客户端要么在创建用户时指定mysql_native_password后面第4部分我会讲到。1.2 三种安装方式各有什么取舍我见过太多人把安装方式想得太复杂其实本地开发主流的就三条路官方MSI安装包、ZIP免安装压缩包、Docker容器。三者的适用场景完全不同我整理了一个对比看完你就知道该选哪个。安装方式适合人群优点缺点MSI安装包Windows新手、想要图形化配置有向导一步步点自动配服务自带Workbench入口装完就散在系统里卸载不干净的话会一堆残留ZIP免安装压缩包喜欢手动可控、需要环境干净整洁的人解压即用目录清晰方便整个文件夹拷贝迁移要自己写my.ini、初始化数据目录、注册服务Docker容器Linux用户、不想污染宿主机、要快速起服务一条命令起服务隔离干净删了重来方便不熟悉Docker的话数据卷挂载容易踩坑容器删了数据丢了如果只是Windows本机学习我反而更推荐ZIP压缩包这种方式。因为MSI安装包虽然省事但它在系统里埋的服务、配置、路径出了问题之后排查起来很费劲压缩包的方式所有东西都在一个目录下心里有数。1.3 装之前的环境检查别跳过真正动手安装前有两个检查非常关键能帮你少折腾半小时。第一是确认系统里有没有装过旧版MySQL。Windows下可以进“服务”面板看有没有“MySQL”“MySQL80”之类的服务命令行里执行mysql --version如果返回了版本号说明老版本还残留着。旧版本不卸载干净新版本起服务时经常遇到数据目录冲突或者端口占用的问题。第二是检查3306端口是否被占用。Windows下执行netstat -ano | findstr 3306如果有输出说明3306端口已经被某个进程占用了你装完MySQL后服务很可能起不来。出现这种情况要么找到那个进程关掉要么安装时换个端口。2. 实战Windows下完整安装MySQL并跑起来2.1 走MSI安装包的完整流程如果你选安装包路线先去MySQL官网的下载页面dev.mysql.com/downloads/mysql/选一个8.0.x的版本Windows平台下会看到两种文件一个是几百MB的完整安装器一个是网络安装器。建议下载完整的离线安装包避免装到一半卡在下载组件上。双击运行后安装类型我一般选“Server only”因为剩下的Workbench、Shell等组件后面需要再单独装就行没必要一次性把一堆组件塞进来。不过如果是纯小白选“Developer Default”也不是不行就是一装装一大堆后面卸载麻烦。配置阶段有几个点容易踩坑High Availability选“Standalone MySQL Server / Classic MySQL Replication”本地单机不需要组复制。Type and Networking保持默认端口3306勾选“Open Windows Firewall ports for network access”可以让你后面从别的机器访问时少一道防火墙障碍当然也意味着对局域网暴露了端口自己斟酌。Authentication Method这里重点说下“Use Strong Password Encryption”对应caching_sha2_password是最新版客户端的标配如果你的Navicat版本比较老、或者Java项目里JDBC驱动很久没更新建议选“Use Legacy Authentication”对应mysql_native_password。我当时为了连一个老工具切过Legacy模式省了后面折腾驱动的功夫。Root Password设置一个你能记住但不要太简单的密码学习环境无所谓但别用root/123456这种一猜就中的组合。Windows Service界面里建议把“Start the MySQL Server at System Startup”勾上服务名保持默认的“MySQL80”即可。配置完成后等它安装完打开命令行执行mysql -u root -p输入刚设置的密码能进入mysql命令行界面就说明服务一切正常。2.2 免安装版ZIP压缩包手动配置详解我自己的主力方案其实是ZIP压缩包方式因为整个MySQL目录干干净净复制到新电脑就能用还能做完整的目录级备份。具体操作如下。下载时在官网页面选“Windows (x86, 64-bit), ZIP Archive”那个文件解压到一个路径不含中文和空格的目录比如D:\mysql-8.0.x-winx64。然后在MySQL根目录下手动创建my.ini配置文件内容可以参考这个最小可用配置[mysqld] # 端口 port3306 # 安装目录 basedirD:/mysql-8.0.x-winx64 # 数据目录 datadirD:/mysql-8.0.x-winx64/data # 字符集 character-set-serverutf8mb4 collation-serverutf8mb4_general_ci # 存储引擎 default-storage-engineInnoDB [client] default-character-setutf8mb4这里要提醒一点datadir指向的data目录不要自己手动创建后面让mysqld初始化时自动生成否则非常容易出现权限问题和初始化失败。接下来用管理员身份打开命令行进入MySQL的bin目录依次执行这几条命令# 初始化数据目录生成无密码的root用户 mysqld --initialize-insecure # 安装Windows服务服务名叫MySQL mysqld --install MySQL # 启动服务 net start MySQL注意如果初始化时报错说缺少什么dll、或者初始化进程一闪而过大概率是系统缺少Visual C运行库去微软官网装一个“Microsoft Visual C Redistributable”就好。初始化完成后bin目录下会多出data目录里面有几个日志文件。启动服务后在命令行连接数据库mysql -u root --skip-password如果顺利你会直接进入mysql命令行没有密码提示。进来后第一件事就是设置root密码ALTER USER rootlocalhost IDENTIFIED BY 你的新密码; FLUSH PRIVILEGES;2.3 初始化阶段的高频翻车点压缩包方式因为走得手动流程有几个坑我必须单独拉出来说。第一个坑是mysqld --initialize和--initialize-insecure的区别。前者会生成一个随机临时密码打印在data目录下的.err日志里后者生成一个空密码的root用户。很多教程让用--initialize结果新手找半天不知道临时密码在哪然后卡在登录那一步。我的建议是本地学习环境直接上--initialize-insecure先进去把密码改掉省去翻日志的麻烦。第二个坑是服务名冲突。如果你系统里曾经装过MySQL 5.7它注册的服务名是“MySQL”你再mysqld --install MySQL会提示“服务已存在”。解决办法是换一个服务名比如mysqld --install MySQL80之后启动也用net start MySQL80。第三个坑是环境变量。不配置PATH的话每次都要进bin目录才能执行mysql命令非常别扭。Windows下把D:\mysql-8.0.x-winx64\bin加入到系统环境变量Path里重开命令行就能直接用mysql -uroot -p了。3. 本地建库建表从命令行到可视化工具3.1 用命令行登录先搞懂MySQL里的几层结构MySQL的数据结构可以类比成一个Excel工作簿的概念但层级上更细化。顶层是数据库实例就是本地跑起来的这个MySQL服务下面可以创建多个数据库Schema每个数据库里有若干张表表里有行和列。刚登录进来时先用SHOW DATABASES;看看当前实例里有哪些库。mysql -u root -p SHOW DATABASES;默认会有information_schema、mysql、performance_schema、sys这几个系统库这些是MySQL自己内部用的平时别去动它们。我们要做的是创建一个自己的业务数据库比如课程设计常见的“学生管理系统”先建一个名为school的库CREATE DATABASE school DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;这条SQL里的DEFAULT CHARACTER SET utf8mb4非常关键。如果你建库时不指定字符集很可能会继承系统默认的latin1后面存中文全都变成问号。3.2 实战创建第一张表并完成增删改查选到school库建一张student表USE school; CREATE TABLE student ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50) NOT NULL, age INT, class_name VARCHAR(50), created_at DATETIME DEFAULT CURRENT_TIMESTAMP );这里用到了几个基础但重要的概念PRIMARY KEY标识主键字段每张表都应该有一个AUTO_INCREMENT让id字段自动增长NOT NULL表示该字段不能为空DEFAULT CURRENT_TIMESTAMP表示插入数据的时候自动填当前时间。建完表后用DESC student;查看表结构确认字段类型没问题再进行数据的基本增删改查。-- 插入数据 INSERT INTO student (name, age, class_name) VALUES (张三, 20, 软件2101); INSERT INTO student (name, age, class_name) VALUES (李四, 21, 软件2101); INSERT INTO student (name, age, class_name) VALUES (王五, 22, 软件2102); -- 查询数据 SELECT * FROM student; SELECT name, age FROM student WHERE class_name 软件2101 ORDER BY age DESC; SELECT class_name, COUNT(*) AS cnt FROM student GROUP BY class_name; -- 更新数据 UPDATE student SET age 23 WHERE name 王五; -- 删除数据 DELETE FROM student WHERE name 李四;这里我说几个日常开发中容易犯的错误。更新和删除语句务必养成先写WHERE条件的习惯。UPDATE student SET age 23;没加WHERE整张表的age都会被改成23DELETE FROM student;没加WHERE整张表数据直接清空。你可以在本地练习的时候故意犯错试试看感受一下后果但千万别在重要数据上以身试法。我自己的习惯是执行UPDATE/DELETE之前先写一条同样的WHERE条件做SELECT看看锁定的行数对不对确认无误再执行。3.3 用MySQL Workbench操作效率翻倍虽然命令行很酷但日常开发中我其实更多是在MySQL Workbench里操作。它是MySQL官方免费的可视化工具对8.0支持最好。连接方面打开Workbench点击“”号新建连接填上Connection NameHostname填127.0.0.1Port填3306Username填root然后输入密码即可连接。左侧的SCHEMAS面板就是当前实例下所有数据库的列表双击某个库就能看到里面的表。右键可以快速建表、建视图、查表数据这种方式特别适合刚开始还不熟悉SQL语法的朋友因为它是图形化点选的。比如建表时填完字段名和类型勾选PK/Not Null/AIWorkbench会自动生成对应的SQL你还能切换到SQL预览模式学一学它背后的语法这对我早年学SQL帮助非常大。在用Workbench执行SQL时注意一个点编辑器里可以写很多条SQL只想执行其中一条的话把光标放在该条SQL上按CtrlEntermacOS是CmdEnter而不是全部运行。Workbench还内置了Data Export和Data Import功能导出时可以选择特定库或特定表生成一个.sql文件换电脑迁移数据时非常好用。3.4 进阶级索引、存储过程、事务这些本地也该会数据库不只是简单的增删改查。课程设计里经常被问到的几个点索引、存储过程、事务其实在本地都能跑而且跑通了就彻底记住了。先看索引。索引的作用像书的目录让查询不用全表扫描。给student表的name字段建个普通索引CREATE INDEX idx_name ON student(name);如果你有按班级查询的频繁需求可以建联合索引CREATE INDEX idx_class_name ON student(class_name, name);联合索引跟着一个“最左前缀”原则查询条件里只要包含联合索引最左边的字段就能用上这个索引。比如上面这个索引查class_name或者class_namename都能命中索引但如果你只查name这个索引就用不上因为name不是最左字段。建索引不是越多越好索引会占用额外存储空间每次写数据时也要同步维护索引所以只给高频查询字段建索引就够了。再看存储过程。存储过程说白了就是一段预编译的SQL逻辑客户端调用一次名字数据库就执行这一段逻辑适合封装重复的批量操作。创建存储过程的关键点是改变语句分隔符DELIMITER // CREATE PROCEDURE GetStudentsByClass(IN cls VARCHAR(50)) BEGIN SELECT id, name, age FROM student WHERE class_name cls; END // DELIMITER ; CALL GetStudentsByClass(软件2101); DROP PROCEDURE IF EXISTS GetStudentsByClass;这段代码里DELIMITER //是把分隔符临时改成//不然MySQL会在每个分号处截断整个存储过程导致创建失败。书上的语法你单独看可能觉得抽象但真在Workbench里执行一次、体会到BEGIN...END包裹逻辑的感觉就很容易理解了。最后说事务。事务适用于“多条SQL要么一起成功要么全部失败”的场景最经典的就是转账。你在两个账户间扣钱和加钱必须用事务包起来START TRANSACTION; UPDATE account SET balance balance - 100 WHERE id 1; UPDATE account SET balance balance 100 WHERE id 2; COMMIT;执行过程中如果发现第二条语句出错了可以直接执行ROLLBACK;回滚第一条的扣款也一起撤销。MySQL的InnoDB引擎支持事务而早期的MyISAM引擎不支持所以建表时默认引擎选InnoDB是没错的。4. 让本地MySQL更好用的配置与连接4.1 my.ini里的核心参数一个一个说清楚不管用哪种方式装的MySQL配置文件都是绕不开的。Windows压缩包方式用my.iniLinux用my.cnf其实内容是一回事。我挑几个最影响日常使用的参数讲一下你就不用看到整篇配置发怵了。参数作用建议值port服务监听端口3306被占用再改basedir安装目录MySQL程序所在目录datadir数据文件存放目录独立目录别放C盘系统目录character-set-server服务器默认字符集utf8mb4collation-server排序规则utf8mb4_general_cidefault-storage-engine默认存储引擎InnoDBmax_connections最大并发连接数本地100~500足够wait_timeout空闲连接超时秒数默认28800可调小innodb_buffer_pool_sizeInnoDB缓存池大小机器内存的50%~70%这里重点说innodb_buffer_pool_size。InnoDB引擎的数据和索引会尽量缓存在这个缓冲区里读操作命中缓存就不碰磁盘所以这个值对性能影响极大。本地学习机如果16G内存可以设成1G或2G如果内存紧张默认的128M也能跑就是慢一点而已。修改配置参数后不能立即生效必须重启MySQL服务。Windows下执行net stop MySQL再net start MySQL或者直接用net restart MySQL在部分Windows版本上这条命令可能不支持那就分两句执行。4.2 连接池、时区、字符集项目连接数据库的三座大山数据库本身跑起来了但你写的Java/Go/Python程序要连它这里面的“坑”比建库多得多。先说连接池。第一次接触这个词可能会发懵程序连数据库为什么要池化你可以把数据库连接想象成打电话每次程序要执行SQL都现拨一次号建立TCP连接执行完就挂断如果一分钟内要执行几千条SQL光拨号就累死了。连接池就是保持若干条“热线电话”一直不挂程序要执行SQL时直接从池子里取一条空闲连接用完归还。Java生态最流行的是HikariCP和DruidSpring Boot 2.x以上默认就是HikariCP你不需要刻意配置但要理解它的作用。连接池的核心参数就两个最小空闲连接数和最大连接数本地开发保持默认就好。第二是时区问题。使用JDBC连接MySQL 8.0时连接串里必须指定serverTimezone否则会报一堆时区相关的错误。一个标准的本地连接串长这样jdbc:mysql://127.0.0.1:3306/school?useSSLfalseserverTimezoneAsia/ShanghaicharacterEncodingutf8mb4这里面characterEncodingutf8mb4也非常重要没有它就算数据库是utf8mb4从Java程序进去的中文一样可能乱码。第三说下字符集。中文乱码的本质是“链路”上有某个环节的字符集不对。从MySQL客户端程序发出请求、到连接层、再到服务器存储每一层都有自己的字符集设置。本地排查顺序是客户端工具里的编码设置Workbench在Settings里能选Encoding连接串里的characterEncoding参数MySQL服务器的character-set-server参数数据库、表、字段的字符集。这四层只要有一层是latin1或者gbk中文就可能丢。根治办法就是全部统一成utf8mb4。utf8mb4是“真正的UTF-8”连emoji表情都能存现在MySQL默认就是它。4.3 用Docker快速起一个MySQL实例如果你的主要环境是Linux/Mac或者你就是不想在本机装一堆“重量级”软件Docker是个好选择。一条命令就能把MySQL拉起来docker run --name mysql-dev \ -e MYSQL_ROOT_PASSWORD123456 \ -p 3306:3306 \ -v mysql-data:/var/lib/mysql \ -d mysql:8.0这里几个参数说下--name是容器名-e MYSQL_ROOT_PASSWORD设置root密码-p 3306:3306把容器的3306端口映射到宿主机-v mysql-data:/var/lib/mysql是数据卷挂载这个一定要加否则容器一删所有数据灰飞烟灭。启动后进入容器执行SQLdocker exec -it mysql-dev mysql -uroot -p如果想在容器里改配置可以启动时挂载自定义的my.cnfdocker run --name mysql-dev \ -e MYSQL_ROOT_PASSWORD123456 \ -p 3306:3306 \ -v /path/to/my.cnf:/etc/mysql/conf.d/my.cnf \ -v mysql-data:/var/lib/mysql \ -d mysql:8.0用Docker的方式装MySQL最大的优点其实是“干净”不想用了docker rm -f mysql-dev连应用带环境全没宿主机一点不残留。缺点是你得先熟悉Docker的基础操作对纯新手来说又是一个新概念。5. 本地MySQL常见故障与排查速查5.1 服务起不来、端口被占、root密码忘了怎么处理先说服务起不来的问题。Windows下net start MySQL报错“服务无法启动”不要急着重装去MySQL数据目录下的.err日志里找原因。压缩包方式的话在datadir指定的目录下或者MySQL根目录的data文件夹里找一个类似xxx.err的文件打开后翻到末尾几行那里会明明白白写着失败原因。最常见的两类一类是数据目录权限不对Windows下尤其要注意不要用中文用户名路径另一类是端口被占用改my.ini里的port或者关掉占用进程。端口占用的排查我习惯用下面两步# 查看3306端口被哪个进程占用 netstat -ano | findstr 3306 # 根据PID查进程名称 tasklist | findstr [PID]确认是垃圾进程直接taskkill /PID [PID] /F或者去任务管理器结束进程。如果是另一个MySQL实例占着端口建议把新的MySQL换个端口比如3307。忘记root密码其实是本地开发最常遇到的事。处理方法分两种情况如果你是压缩包空密码进来的直接ALTER USER改密码即可如果你设置了密码但忘了可以走“跳过授权表”这条临时路。步骤如下# 1. 停止MySQL服务 net stop MySQL # 2. 在my.ini的[mysqld]下临时加一行 skip-grant-tables # 3. 启动MySQL此时任何密码都能进 net start MySQL # 4. 以空密码或任意密码登录 mysql -u root # 5. 改成新密码 ALTER USER rootlocalhost IDENTIFIED BY 你的新密码; FLUSH PRIVILEGES; # 6. 回到my.ini删除skip-grant-tables这行重启服务注意skip-grant-tables意味着数据库完全不做身份校验局域网里开着非常危险用完必须立刻删掉并重启。另外8.0版本的老密码字段不再是password用UPDATE mysql.user SET authentication_string这种方式也改不了密码推荐直接用ALTER USER语句。5.2 中文乱码、远程连不上、SQL语句执行报错中文乱码排查在第4.2节已经给了链路这里补充一个最实用的测试方法。在命令行执行SHOW VARIABLES LIKE character_set%;如果看到character_set_server不是utf8mb4说明服务器层字符集有问题如果只是某些表乱码用SHOW FULL COLUMNS FROM 表名;确认列级字符集。本地开发最省事的办法就是实例、库、表、列全部用utf8mb4客户端工具也选UTF-8基本能一次性解决。远程连接不上是很多人问的高频问题。本地MySQL默认只监听127.0.0.1即使防火墙放行了其他机器也连不上。思路有三个一是看my.ini里有没有bind-address参数如果要允许远程访问把它注释掉或设为0.0.0.0二是用户表的host字段必须允许对应IP默认root的host是localhost可以新建一个用户CREATE USER dev% IDENTIFIED BY dev_password; GRANT ALL PRIVILEGES ON school.* TO dev%; FLUSH PRIVILEGES;这里%代表任意IP。这时再用Navicat等工具填上宿主机IP、端口、这个用户就能连上了。最后别忘了检查Windows防火墙有没有放行3306端口或者云服务器安全组有没有添加入方向规则。SQL执行报错方面最典型的一个是“You cant specify target table for update in FROM clause”意思是你不能直接UPDATE另一张子查询出来的同一张表。比如想把所有年龄小于平均年龄的学生改成同一个班级直觉写法是UPDATE student SET class_name 新班级 WHERE age (SELECT AVG(age) FROM student);这条在MySQL里会被拒绝。解决办法是把子查询用JOIN包一层UPDATE student s JOIN ( SELECT AVG(age) AS avg_age FROM student ) t SET s.class_name 新班级 WHERE s.age t.avg_age;类似的问题还出现在DELETE里。记住一条主线MySQL不允许“修改某张表的同时再用这条语句里的子查询去读同一张表”你需要临时表或JOIN把数据“隔离”出来。5.3 备份与自动备份本地数据也要防意外很多人在本地只是练习觉得备份没必要。但等你真的写了不少测试数据、跑通了一个课程设计、攒了几个星期的脚本之后一次误删除就够你难受的了。MySQL的备份思路其实很简单。手动备份用mysqldump命令# 备份单个数据库 mysqldump -u root -p school D:\backup\school_20250101.sql # 备份所有数据库 mysqldump -u root -p --all-databases D:\backup\all_20250101.sql # 恢复数据库 mysql -u root -p school D:\backup\school_20250101.sqlWindows下想搞“自动备份”可以写一个bat脚本再挂到任务计划程序里。脚本思路如下echo off set BACKUP_DIRD:\mysql_backup if not exist %BACKUP_DIR% mkdir %BACKUP_DIR% set BACKUP_FILE%BACKUP_DIR%\school_%date:~0,10%.sql mysqldump -u root -p123456 school %BACKUP_FILE% echo backup done: %BACKUP_FILE%不过把密码明文写在命令行里有安全隐患mysqldump会给出警告。更稳妥的办法是使用--defaults-extra-file参数指定一个权限严格的配置文件里面写用户名和密码这样命令行本身不暴露密码。Linux环境就简单了用crontab定个时写一行0 2 * * * mysqldump -u root -p密码 school /backup/school_$(date \%F).sql即可。备份这个事宁可“备份了没用”也不要“用时才发现没有”。最后再分享一个我个人的小习惯本地建库时表名统一用小写加下划线字段名尽量用单词本身SQL关键字大写、字段小写密码用专门的密码管理工具记数据目录不要放在C盘系统盘。这套习惯坚持下来等哪天你要把本地库迁到服务器、或者从MySQL迁到其他数据库会发现省非常多事。数据库这东西本地跑通只是开始日常规范才是以后不半夜起来救数据的底气。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询