尚硅谷谷粒商城项目笔记——五、使用docker安装mysql
五、使用docker安装mysql
注意:
因为电脑是AMD芯片,自己知识储备不够,无法保证和课程中用到的环境一样,所以环境都是自己根据适应硬件软件环境重新配置的,这里的虚拟机使用的是VMware。
使用 Docker 安装 MySQL 与安装 Redis 类似,以下是详细步骤:
1拉取 MySQL 镜像:
从 Docker Hub (之前有设置之镜像加速)拉取 MySQL 的官方镜像。可以指定版本号,或者使用 latest
来获取最新版本:
docker pull mysql:latest
2运行 MySQL 容器:
运行 MySQL 容器时,我需要设置环境变量,如 MYSQL_ROOT_PASSWORD
(root 用户的密码),并映射端口和数据卷。以下是一个示例命令:
docker run --name some-mysql -p 3306:3306 \-v /var/lib/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=my-secret-pw \-e MYSQL_DATABASE=mydb \-e MYSQL_USER=myuser \-e MYSQL_PASSWORD=mypassword \--restart always -d mysql
[!NOTE]
注意这里的密码的值不要使用root,否则会产生error==>>问题在于我在运行 MySQL 容器时同时设置了
MYSQL_USER
和MYSQL_PASSWORD
环境变量,但它们的值被设置为了root
。对于 MySQL 容器,MYSQL_USER
和MYSQL_PASSWORD
是用来配置普通用户的,而不能用来配置 root 用户。对于 root 用户的密码,我应该只使用MYSQL_ROOT_PASSWORD
环境变量。
参数说明:
--name some-mysql
:为容器指定一个名称。-p 3306:3306
:将容器的 3306 端口映射到宿主机的 3306 端口。-v /var/lib/mysql:/var/lib/mysql
:将宿主机的/var/lib/mysql
目录挂载到容器的/var/lib/mysql
目录,实现数据持久化。-e
:设置环境变量,用于配置 MySQL。--restart always
:确保容器在 Docker 重启后自动启动。-d mysql
:以 detached 模式运行 MySQL 容器。
3确认 MySQL 容器正在运行:
使用 docker ps
命令检查 MySQL 容器是否成功启动:
docker ps
4连接到 MySQL 服务器:
可以使用 mysql
命令行工具连接到 MySQL 服务器:
mysql -uroot -p
当提示输入密码时,输入我在步骤 2 中设置的 MYSQL_ROOT_PASSWORD
。
[!NOTE]
可以直接使用 Docker 容器中的 MySQL 服务,但是我需要确保宿主机上安装了 MySQL 客户端,或者可以直接在 Docker 容器的命令行中使用
mysql
命令。以下是两种方法:【我是用第二种】方法一:在宿主机上使用 MySQL 客户端连接到 Docker 容器中的 MySQL 服务
确保我已经在宿主机上安装了 MySQL 客户端。如果没有,请根据我的 Linux 发行版安装它。
使用以下命令连接到 Docker 容器中的 MySQL 服务:
mysql -uroot -p -h 127.0.0.1 -P 3306
这里
-h 127.0.0.1
指定了宿主机的 IP 地址,-P 3306
指定了映射到宿主机的端口号。当提示输入密码时,输入我在创建 MySQL 容器时设置的
MYSQL_ROOT_PASSWORD
。方法二:在 Docker 容器的命令行中使用
mysql
命令
首先,找到我的 MySQL 容器 ID 或名称:
docker ps
然后,使用
docker exec
命令进入容器的命令行界面:docker exec -it some-mysql /bin/bash
将
some-mysql
替换为我的 MySQL 容器名称。在容器内部,直接使用
mysql
命令连接到 MySQL 服务:mysql -uroot -p
由于我已经在容器内部,不需要指定主机和端口,只需输入密码即可。
请注意,如果我在容器内部使用
mysql
命令,我将直接与 MySQL 服务交互,而不需要在宿主机上安装 MySQL 客户端。但是,这种方法要求我能够进入容器的命令行界面。如果我只需要偶尔管理 MySQL 数据库,通常在宿主机上安装 MySQL 客户端会更方便。退出mysql容器时用
exit
命令
5配置 MySQL 时区(可选):
MySQL 容器默认使用 UTC 时区。如果我需要更改时区,可以在启动容器时挂载自定义的 my.cnf
配置文件:
docker run ... -v /mycustomconfig/my.cnf:/etc/mysql/my.cnf ...
在 my.cnf
文件中,可以添加如下配置来设置时区:
[mysqld]
default-time-zone='+08:00'
6安全配置 MySQL(可选):
MySQL 提供了一个脚本来设置安全选项,可以在第一次启动时运行它:
docker exec -i some-mysql mysql_secure_installation
按照提示操作,设置移除匿名用户、禁止 root 用户远程登录等安全选项。
大学生制作不易,各位愿意的话可以打赏,不愿意的话也没关系,学习最重要。最后,哪里写的不合适请告诉我,我弄明白后再修正,谢谢!