docker安装mysql挂载本地目录并且设置远程登录

学习docker过程的笔记。

1:搜索mysql 镜像

docker search mysql

docker安装mysql挂载本地目录并且设置远程登录_第1张图片

2:拉取mysql 最新版本镜像

docker pull mysql

3:开启容器

创建本地存储映射目录:

mkdir -p /opt/mysql/data /opt/mysql/logs /opt/mysql/conf

docker run -p 3306:3306 --name mysql -v /opt/mysql/conf:/etc/mysql/conf.d -v /opt/mysql/logs:/logs -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

-v : 将 本地目录(/opt/mysql/conf)    挂载到容器中目录(/etc/mysql/conf.d)

4:进入容器

docker exec -it mysql(容器名/容器id)bash

docker安装mysql挂载本地目录并且设置远程登录_第2张图片

 mysql -u root -p

docker安装mysql挂载本地目录并且设置远程登录_第3张图片

参考文档:https://www.runoob.com/docker/docker-install-mysql.html

5:配置容器内mysql远程登录

进入容器内,并连接msql命令行

docker exec -it mysql(容器名或者ID) bash

mysql -u root -p

docker安装mysql挂载本地目录并且设置远程登录_第4张图片

切换到mysql数据库

mysql> use mysql;

执行下面的命令:

mysql> update user set password_expired = "Y" where user="root";mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

docker安装mysql挂载本地目录并且设置远程登录_第5张图片

exit退出mysql,exit退出容器,在外部连接mysql

docker安装mysql挂载本地目录并且设置远程登录_第6张图片

***************************************分割线 ******************************************************************************************************************************************************

问题:

docker run -p 3306:3306 --name mysql -v /opt/mysql/conf:/etc/mysql -v /opt/mysql/logs:/logs -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

在挂载本地conf目录到mysql整个配置目录时,会报错

mysqld: Error on realpath() on '/var/lib/mysql-files' (Error 2 - No such file or directory)

:第一种方案:在本地创建一个mysql-files目录挂在到容器内

(1): mkdir -p /opt/mysql/mysql-files

(2):docker run -p 3306:3306 --name mysql -v /opt/mysql/mysql-files:/var/lib/mysql-files -v /opt/mysql/conf:/etc/mysql -v /opt/mysql/logs:/logs -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

第二种方案:只挂载/etc/mysql/conf.d 目录

docker run -p 3306:3306 --name mysql -v /opt/mysql/conf:/etc/mysql/conf.d -v /opt/mysql/logs:/logs -v /opt/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql

你可能感兴趣的:(Docker)