Docker安装MySQL
一、进行docker安装(若有docker,请跳过)
1、安装docker (这是厂家安装法。可能大一点)
yum install -y docker
2、开启docker服务
systemctl start docker
3、查看安装结果
docker version
4、设置开机启动
systemctl enable docker
5、查看docker服务状态
systemctl status docker
6、由于默认安装后的 Docker 环境在拉取 Docker 镜像时速度很慢,需要手动配置镜像加速源,提升获取 Docker 镜像的速度。
编辑配置文件:
vim /etc/docker/daemon.json
在其中加⼊加速镜像源地址:
按 ‘i’ 键进入Linux文件编辑模式,粘贴下方任意一个加速源:
网易加速源
{
"registry-mirrors": [
"http://hub-mirror.c.163.com"
]
}
腾讯加速源
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com"
]
}
按左上角的esc键-》输入 方框中的内容 [ :wq ]
例如这里使用的是 网易 的加速源,其他像 阿里云 、 DaoCloud 这些也都提供加速源,按需选择即可。
加完加速地址后,重新加载配置⽂件,重启 docker 服务即可
systemctl daemon-reload
systemctl restart docker.service
然后就可以进行拉镜像操作。速度会较快。
补充:查看docker拉取的镜像的版本:
docker image inspect redis:latest | grep -i version
三、使用docker安装MySql
1、拉取musql镜像
docker pull mysql
2、查看docker本地镜像库
docker images
3、创建并启动一个mysql容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql
-name :容器的名称,这里取名为mysql
-e 配置账户密码,这里为root账户,密码为root
-p 端口映射,本机的3306端口映射容器的3306端口
-d 启动容器后输出容器的id
最后的mysql表示镜像名字为mysql
注意!!!这里如果报错
(1)Error response from daemon: driver failed programming external connectivity on endpoint
解决方案:重启docker服务后再启动容器
systemctl restart docker
docker start 容器名
(2)Error starting userland proxy: listen tcp4 0.0.0.0:3306: bind: address already in use 参考文献
解决方案:
查看当前占用端口
netstat -tanlp
杀死进程
kill 占用端口进程的PID
kill 1330
然后重新启动容器
(3)Error response from daemon: oci runtime error: container_linux.go:247: starting container process 参考文献
解决办法:
yum update
然后重启docker
systemctl restart docker
然后启动容器mysql
docker start mysql
四、配置一下MySQL
1、从docker进入数据库
docker exec -it mysql bash
注意:mysql为容器名。因为前面创建容器时我设置容器名为为‘mysql’
2、登陆MySQL
mysql> mysql -uroot -p 回车
mysql> 输入密码
3、授权(以便于工具连接数据库)
查看一下:
mysql> use mysql;
mysql> select host from user where user='root';
结果:必须有%
+------+
| host |
+------+
| % |
+------+
如不是上述结果,执行下属操作
先执行:
mysql> ALTER user 'root'@'%' identified with mysql_native_password by 'DY822423YOU';
mysql> flush privileges;
不必要执行
mysql> grant all privileges on *.* to 'root'@'%' with grant option;
mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
4、设置开机重启
重启docker
systemctl enable docker
重启MySQL服务
docker update --restart=always 容器id或名字
五、防火墙问题(错误代码2003),需要开放对应端口(3306)或者关闭防火墙;
1、开放3306端口、 然后重启防火墙
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --reload
命令含义:
--zone #作用域
--add-port=3306/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
防火墙简单命令:
重启防火墙:firewall-cmd --reload
查看防火墙状态:firewall-cmd --state
关闭防火墙:systemctl stop firewalld.service
开启防火墙:systemctl start firewalld.service
禁止开机启动启动防火墙:systemctl disable firewalld.service
2、关闭防火墙(不建议)
关闭防火墙:systemctl stop firewalld.service(临时关闭)
禁止开机启动启动防火墙:systemctl disable firewalld.service
六、Navicat连接异常
1、报错:Navicat 不支持 caching_sha_password 加密方式
MySql 8 安装后采用 Navicat 进行连接可能会报 “navicat 不支持 caching_sha_password 加密方式” 错误。采用如下方式解决:
进入MySQL执行下述命令(进入方试上面有)
mysql> ALTER user 'root'@'localhost' IDENTIFIED BY '123456' PASSWORD EXPIRE NEVER;
补充:常用的docker命令
1. docker version
显示docker版本信息
2. docker info
显示docker系统信息
3. docker search
从Docker Hub查找镜像
docker search php 查找php的镜像
4. docker images
列出本地镜像
5. docker ps
列出所有在运行的容器信息
docker ps -a 显示所有的容器,包括未运行的
6. docker pull
从镜像仓库中拉取或者更新指定镜像
docker pull codehi/nginx:v1 拉取自己仓库的nginx镜像
7 docker start/stop/restart
启动/停止/重启容器
docker stop mynginx 停止运行中的容器mynginx
docker stop `docker ps -a -q` 停止所有容器
8. docker rm
删除一个或多个容器
docker rm mynginx 删除容器mynginx,正在运行中的容器需要stop后才能删除,或者使用强制删除。
docker rm -f mynginx 强制删除运行中的容器mynginx
docker rm `docker ps -a -q` 删除所有容器
9. docker rmi
删除本地一个或多个镜像
docker rmi codehi/nginx:v1 删除镜像codehi/nginx:v1
docker rmi -f codehi/nginx:v1 强制删除
docker rmi `docker images -q` 删除所有镜像
10. docker logs
获取容器的日志
docker logs -f mynginx 跟踪容器mynginx的日志,实时输出的。
11. docker history
查看指定镜像的创建历史
docker history codehi/nginx:v1 查看本地镜像codehi/nginx:v1的创建历史
12. docker login
登陆到一个Docker镜像仓库,如果未指定镜像仓库地址,默认为官方仓库 Docker Hub
docker login 登录至Docker Hub,下一步会提示输入账号密码
13. docker logout
登出Docker Hub
14. docker push
将本地的镜像上传到镜像仓库,要先登陆到镜像仓库
docker push codehi/nginx:v1 将本地镜像codehi/nginx:v1镜像推送到docker hub仓库中
15. docker commit
从容器创建一个新的镜像
docker commit -a "codehui" -m "test" 3218b3ad4e47 codehi/nginx:v1 3218b3ad4e47 保存为新的镜像codehi/nginx:v1,并添加提交人信息(codehui)和说明信息(test)
16. docker tag
标记本地镜像,将其归入某一仓库
docker tag nginx:v1 codehi/nginx:v2 将镜像nginx:v1标记为 codehi/nginx:v2 镜像
17. docker save
将指定镜像保存成 tar 归档文件
docker save -o codehi-nginx-v1.tar codehi/nginx:v1 将镜像codehi/nginx:v1生成codehi-nginx-v1.tar归档文件
18. docker load
从归档文件中创建镜像
docker load -i codehi-nginx-v1.tar 从镜像归档文件codehi-nginx-v1.tar创建镜像
19. docker export
将文件系统作为一个tar归档文件导出到STDOUT
docker export -o codehi-nginx-v1.tar mynginx 将容器mynginx保存为tar文件。
20. docker import
从归档文件中创建镜像
docker import codehi-nginx-v1.tar codehi-nginx-v1 从镜像归档文件codehi-nginx-v1.tar创建镜像,命名为codehi-nginx-v1
21. docker kill
杀掉一个运行中的容器
docker kill -s KILL mynginx 杀掉运行中的容器mynginx
容器
docker kill -s KILL mynginx 杀掉运行中的容器mynginx