博客简要
用docker部署mysql,并将数据库映射到主机上,并增加远端访问mysql数据库
当你使用Docker运行MySQL时,并且希望将MySQL数据库的数据存储在宿主机(也就是运行Docker的主机)上的特定路径,你需要在启动容器时通过 -v
或 --volume
参数来实现数据卷挂载。这样可以确保数据库的数据持久化,即使容器停止或删除,数据也不会丢失。
假设你已经在宿主机上创建了外部数据目录,例如 /path/to/mysql/data
,要将这个目录作为MySQL容器内部的数据存储位置,你可以按照以下方式执行 docker run
命令:
直接运行docker容器
数据存在在host主机上,防止docker关闭数据清空
docker run -d \
--name=mysql-server \
-v /path/to/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=your_password \
-p 3306:3306 \
mysql:tag
这里的各个参数含义:
-d
表示后台运行容器。--name=mysql-server
给容器命名。-v /path/to/mysql/data:/var/lib/mysql
将宿主机的/path/to/mysql/data
目录映射到容器内的/var/lib/mysql
目录,这是MySQL默认的数据存储位置。-e MYSQL_ROOT_PASSWORD=your_password
设置MySQL root用户的密码。-p 3306:3306
将宿主机的3306端口映射到容器的3306端口,以便外部能够访问MySQL服务。mysql:tag
是你要拉取的MySQL镜像的标签,比如mysql:latest
(获取最新版)或mysql:5.7
(获取特定版本)。
如果你尚未拉取MySQL镜像,请先执行 docker pull mysql:tag
获取所需的镜像版本。
举例
docker run -d \
--name=mysql-server \
-v /home/eve/mysqldb:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=jupping001 \
-p 3306:3306 \
mysql:8.0
进入容器设置远端访问
docker exec -ti mysql-server /bin/bash
-
进入数据库
mysql -u root -p
-
列出数据库
show database;
-
进入mysql数据库
use mysql;
-
依次执行下方命令,就可获取远程登录权限
grant all on . to 'root'@'%';
alter user 'root'@'%' identified with mysql_native_password by 'jumpping001';
FLUSH PRIVILEGES;
以后重启mysql服务器不需要再出指定密码
docker run -d \
--name=mysql-server \
-v /home/eve/mysqldb:/var/lib/mysql \
-p 3306:3306 \
mysql:8.0