确保本地已安装 Docker 和 Docker Compose:
# 检查 Docker 是否安装
docker --version
# 检查 Docker Compose 是否安装
docker-compose --version
如果未安装,请参考官方文档进行安装:
新建一个目录,例如 mysql-docker,并在其中创建 docker-compose.yml 文件:
version: '3.8'
services:
mysql:
image: mysql:8.0 # 使用8.0版本的 MySQL 镜像
container_name: my-mysql # 容器名称
environment:
MYSQL_ROOT_PASSWORD: 123456 # 设置 MySQL root 用户的密码
ports:
- "3306:3306" # 将容器的 3306 端口映射到宿主机的 3306 端口
volumes:
- /data/mysql:/var/lib/mysql # 将宿主机的 /data/mysql 目录挂载到容器的 /var/lib/mysql 目录
restart: always # 容器退出后总是重启
说明:
MYSQL_ROOT_PASSWORD:设置 root 用户密码ports:将容器的 3306 端口映射到主机的 3306 端口volumes:持久化 MySQL 数据,避免容器重启后数据丢失在 docker-compose.yml 文件所在目录执行:
docker-compose up -d
执行成功后,MySQL 容器将在后台运行。
先确认容器是运行状态:
docker ps
你应该能看到 my-mysql 容器正在运行。
docker exec -it my-mysql mysql -uroot -p123456
如果能成功登录,说明 MySQL 本身没问题,是 远程连接权限 的问题。
在 MySQL 容器中执行以下 SQL:
-- 查看当前用户权限
SELECT user, host FROM mysql.user;
-- 授权 root 用户可以从任意主机连接
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
-- 刷新权限
FLUSH PRIVILEGES;