Docker下安装Mysql

查找Docker Hub上的mysql镜像:docker search mysql

拉取官方的镜像:docker pull mysql   (不加版本默认是:latest)或   docker pull mysql:version (docker pull mysql:5.6)

查看本地镜像列表:docker images |grep mysql

删除镜像:docker rmi <image id>

运行mysql:
docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=root-d mysql:latest

今天安装8.0命令改动

docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/data:/var/lib/mysql \
-v /usr/local/mysql/conf:/etc/mysql/conf.d  \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=root mysql:latest

命令说明:

-p 3306:3306:指定宿主机端口与容器端口映射关系
-name mysql:创建的容器名称
-restart=always:总是跟随docker启动
-privileged=true:获取宿主机root权限
-v /usr/local/mysql/log:/var/log/mysql:映射日志目录
-v /usr/local/mysql/data:/var/lib/mysql:映射数据目录
-v /usr/local/mysql/conf:/etc/mysql:映射配置目录
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与主机时钟同步,避免时区的问题,ro是read only,就是只读的意思。
-e MYSQL_ROOT_PASSWORD=root:指定mysql环境变量,root用户的密码为root
-d mysql:latest:后台运行mysql容器,版本是latest。

查看运行中的容器:docker ps

查看所有容器:docker ps -a

启动容器:docker start < NAME or ID>

停止容器:docker stop < NAME or ID>

删除容器:docker rm <NAME or ID>

查看日志:docker logs <NAME or ID>

Navicat连接启动的mysql

注意关闭linux防火墙或者开放端口

出现这个问题的话

1.查看正在运行的容器是否有需要连接的mysql:docker ps

如果没有,启动:docker start < NAME or ID>

2.进入mysql容器里面: docker exec -it < NAME or ID> bash

进入容器报错:Error response from daemon: Container xxx is restarting, wait until the cont

可创建my.cnf文件        vi /usr/local/mysql/conf/my.cnf

加入以下配置

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

[mysqld]

# 设置东八区
default-time_zone = '+8:00'

# 密码验证规则,default_authentication_plugin已废弃,改为authentication_policy

authentication_policy=mysql_native_password

# 限制导入和导出的数据目录
# 为空,不限制导入到处的数据目录;
# 指定目录,必须从该目录导入到处,且MySQL不会自动创建该目录;
# 为NULL,禁止导入与导出功能
#secure_file_priv=/var/lib/mysql
secure_file_priv=

init_connect='SET collation_connection = utf8mb4_0900_ai_ci'

init_connect='SET NAMES utf8mb4'

character-set-server=utf8mb4

collation-server=utf8mb4_0900_ai_ci

skip-character-set-client-handshake

skip-name-resolve

重启mysql,使配置生效:docker restart mysql

登录mysql : mysql -u root -p  出现enterpassword直接回车,不需要输入密码

执行:use mysql;

开启远程访问权限:

ALTER USER root@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

update user set host = '%' where user = 'root';

刷新权限:FLUSH PRIVILEGES;

一定要带上分号!!

不开启远程访问权限的话,远程连接工具会报错,连不上mysql

再次用Navicat连接

 

                                                         搞定!

各服务镜像版本官方地址:https://hub.docker.com/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值