目录
Docker Mysql安装
?安装和配置mysql
?远程连接mysql远程连接
MySQL 是世界上最流行的开源数据库。根据 DB-Engines的调查数据,MySQL 是第二受欢迎的数据库,仅次于 Oracle 数据库。MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用
docker pull mysql/mysql-server:8.0
docker images
mkdir -p /data/mysql/{conf,data}
vim my.cnf
--配置内容
[client]
default-character-set=utf8
?
[mysql]
default-character-set=utf8
?
[mysqld]
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql
docker run -p 3307:3306 \
? ? ?--name mysql \
? ? ?-v /data/mysql/conf/my.cnf:/etc/my.cnf \
? ? ?-v /data/mysql/data:/var/lib/mysql \
? ? ?--privileged=true \
? ? ?--restart=always \
? ? ?-e MYSQL_ROOT_PASSWORD=123456 \
? ? ?mysql/mysql-server:5.7 ?
解析:
-p 3306:3306:宿主机端口:容器端口
--name mysql:容器名字
-v:挂载宿主机的一个目录, 持久化存储的关键所在,将主机目录挂载到容器对应目录,分别是:配置文件、日志文件、数据文件 -v /data/mysql/conf:/etc/mysql/conf.d -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysq --privileged=true:使用该参数,container内的root拥有真正的root权限, 否则,container内的root只是外部的一个普通用户权限 --restart=always:容器自动启动参数,其值可以为[no,on-failure,always] no为默认值,表示容器退出时,docker不自动重启容器 on-failure表示,若容器的退出状态非0,则docker自动重启容器, 还可以指定重启次数,若超过指定次数未能启动容器则放弃 always表示,只要容器退出,则docker将自动重启容器 -e MYSQL_ROOT_PASSWORD=123456:设置root的密码 -d mysql/mysql-server:5.7:后台启动模式及使用的镜像 - d可加可不加
?可能有点小问题 我们的3306被占用
?修改即可了 我们容器已经创建了一遍 记得删除 docker rm -f mysql
这样就设置成功了
docker exec -it mysql bash
密码在做容器挂载 端口映射的时候 已经设置了 我这边是123456
显示mysql 就已经登入成功了
在我们先前创建的 mysql{data}里面创建一个文件夹 用来存放我们宿主机中的数据
我们创建了一个sql文件夹用来存放 数据
把宿主机上的数据直接复制到sql文件夹里
然后我们就可以进行下一步了
创建一个数据库
use 进入数据库 运行source 运行sql文件
查看表
show tables
?这样就做到了一个数据的持久化
创建一个用户 create 实现用户远程连接 kbin@'%'
create user kbin@'%' identified by '123456';
给用户授权 all 全部权限给shop数据库里的 kbin
grant all on shop.*to kbin@'%'
刷新数据库
FLUSH PRIVILEGES
进行远程连接
如果失败连接 请查看一下 防火墙是否关闭
查看防火墙 状态
systemctl status firewalld
关闭防火墙
systemctl stop firewalld
dead关闭成功
输入 创建设置的远程用户
create user kbin@'%' identified by '123456';