拉取 MySQL 镜像
docker pull mysql:8.0
创建并启动 MySQL 容器
docker run -d \--name mysql8 \-p 3306:3306 \-e MYSQL_ROOT_PASSWORD=123456 \-v mysql_data:/var/lib/mysql \mysql:8.0
命令说明:
-d:后台运行容器
--name mysql8:给容器起个名字叫 mysql8
-p 3306:3306:将容器的 3306 端口映射到服务器的 3306 端口
-e MYSQL_ROOT_PASSWORD=your_password:设置 root 用户的密码,我设置成123456
-v mysql_data:/var/lib/mysql:将数据目录挂载到卷,确保数据持久化
输出的一串字符是Docker 容器的唯一 ID
检查容器是否运行
docker ps
能够看到MySQL
登录 MySQL
mysql -u root -p123456
-p后面写的是自己设置的密码
出现未找到命令是因为我在宿主机上直接执行了 mysql 命令,但宿主机本身并没有安装 MySQL 客户端工具,我的 MySQL 是安装在 Docker 容器中的
先进入容器再使用 mysql 命令
使用 docker exec 命令进入容器的 Bash Shell
docker exec -it mysql8 /bin/bash
这里的 mysql8 是之前创建容器时用 --name 指定的名称
可以看到出现了容器ID
现在再执行登录命令
mysql -u root -p123456
登录成功
也可以直接连接 MySQL
可以直接在宿主机执行以下命令,这样就无需进入容器 Shell
docker exec -it mysql8 mysql -u root -p123456
执行基本 SQL 语句
查看所有数据库
show databases;
创建一个新数据库
create database mytestdb;
使用这个数据库
use mytestdb;
创建一个表
create table students (id int auto_increment primary key,name varchar(50) not null,age int,major varchar(100)
);
在 MySQL 命令行界面中输入 SQL 语句时,换行不需要特殊的换行符,直接按Enter 键即可自动换行。
MySQL 会识别语句是否完整(以分号;结尾),当语句未完成时,按 Enter 键会进入续行模式,命令行会显示->提示符,表示可以继续输入下一行内容。
插入数据
insert into students (name, age, major) values
('张三', 20, '计算机科学'),
('李四', 21, '电子工程'),
('王五', 19, '数学');
查询数据
select * from students;
更新数据
update students set age = 22 where name = '李四';
删除数据
delete from students where id = 3;
退出操作
退出 MySQL 命令行:
exit; 或 quit;
退出容器:
exit
常用的容器管理命令
停止 MySQL 容器:
docker stop mysql8启动 MySQL 容器:
docker start mysql8重启 MySQL 容器:
docker restart mysql8查看容器日志:
docker logs mysql8