Administrator
Administrator
发布于 2026-10-27 / 1 阅读
0
0

数据库入门到初级(03):第一次使用数据库:从连接到执行 SQL

数据库入门到初级 · 第 03/22 篇。实验口径:MySQL 8.4、InnoDB、utf8mb4。案例:小型商城。

第一次学习数据库,经常卡在“连不上”,而不是 SQL 本身。本篇把环境准备拆成几个可以检查的步骤。你可以使用已有的 MySQL 8.4 本地实例;如果电脑已安装并启动 Docker,也可以使用下面的容器方案。两条路线任选其一,不要同时创建两套却混用端口。

1. 先分清服务端与客户端

MySQL 服务端负责管理数据,客户端负责发送命令。安装了图形客户端,不代表服务端已经运行;关闭客户端窗口,也不等于关闭数据库服务。

连接时通常需要主机、端口、用户名、密码。主机回答“连接哪台机器”,端口回答“连接这台机器上的哪个服务”。默认 MySQL 端口是 3306,但实际配置可以修改。

数据库连接的基本链路

2. 使用 Docker 创建练习实例

前提:Docker 已安装,守护进程正在运行,并使用 Linux 容器。首次运行会下载镜像,需要网络。下面命令在终端执行,不是在 mysql> 提示符里执行:

docker run --name shop-mysql -e MYSQL_ROOT_PASSWORD=ReplaceWithYourOwnStrongPassword -p 127.0.0.1:3307:3306 -v shop-mysql-data:/var/lib/mysql -d mysql:8.4

把示例密码替换为你自己的强密码;如果包含终端特殊字符,按所用终端的规则加引号。3307:3306 表示电脑的 3307 转发到容器的 3306;绑定 127.0.0.1 让这个练习端口只从本机访问。命名卷保存数据,容器重新启动后数据仍在。

docker logs shop-mysql
docker exec -it shop-mysql mysql -u root -p

等日志显示服务已准备接受连接,再输入第二条命令。-p 后不直接写密码,按提示输入。终端输入密码时不显示字符是正常现象。

如果使用本机 MySQL 客户端连接这个容器:

mysql -h 127.0.0.1 -P 3307 -u root -p

注意大写 -P 是端口,小写 -p 是密码提示。图形客户端也填写相同主机和端口。如果使用原生安装的 MySQL,填写安装时设置的端口,常见为 3306。

3. 执行第一条 SQL

看到 mysql> 后再执行:

SELECT VERSION();
SELECT 1 + 1 AS result;
SHOW DATABASES;

第一条确认实际服务版本;第二条应返回 2;第三条查看当前账号可见的数据库。如果输入多行后一直出现 ->,往往是尚未输入结束分号,或者引号没有闭合。可用 \c 放弃当前未完成命令。

4. 准备整个系列的练习数据

下载 完整建表与样例数据 SQL。文件使用 UTF-8,包含 4 张表和固定数据。只在空的练习库导入一次;重复导入会遇到表已存在或主键重复,不要为了消除报错去删除正式数据。

Docker 用户先在电脑终端执行,文件路径改为你的实际位置:

docker cp ./shop-lab.sql shop-mysql:/tmp/shop-lab.sql
docker exec -it shop-mysql mysql --default-character-set=utf8mb4 -u root -p

进入 mysql> 后执行:

SOURCE /tmp/shop-lab.sql;
USE shop_lab;
SHOW TABLES;
SELECT COUNT(*) AS product_count FROM products;

应看到 users、products、orders、order_items 四张表,商品数量为 5。原生安装用户可直接在 mysql 客户端执行 SOURCE C:/你的目录/shop-lab.sql;,Windows 路径使用正斜杠更容易书写。

想从零学习建表,可以先不导入,跟着第 5、6 篇手动完成;两条方式得到的是同一套结构和数据。

5. 常见故障怎么定位

现象 先检查什么
找不到 mysql 命令 客户端是否安装、是否配置命令路径;Docker 用户可用 docker exec
连接被拒绝 服务是否启动,端口是否正确,容器是否准备好
Access denied 账号、密码,以及该账号允许的连接来源
No database selected 先执行 USE shop_lab;
中文乱码 SQL 文件与客户端编码,连接是否使用 utf8mb4

不要把所有连接故障都归结为密码,也不要一遇到错误就重装。先判断错误发生在网络连接、身份验证,还是 SQL 执行阶段。

练习与答案

练习:本机客户端连容器时用哪个端口? 本文是 3307;在容器内部运行客户端时通常连容器内的 3306。端口取决于你从哪里发起连接。

退出客户端输入 exit。暂停练习可在终端执行 docker stop shop-mysql,下次使用 docker start shop-mysql,无需重新创建数据库。

延伸阅读


上一篇:第 02 篇 · 系列目录 · 下一篇:第 04 篇


评论