【MAC】M2 安装docker 与 mysql

一、docker下载地址

下载地址

二、安装docker完成

罗列一下docker常用命令

shell 复制代码
# 查看docker版本
docker --version

# 拉取镜像
docker pull 镜像名

# 查看当前所有镜像
docker images

# 查看运行中的容器
docker ps -a
docker ps grep| 镜像名

#镜像启动操作:
sudo docker start 镜像名
sudo docker stop 镜像名
sudo docker restart 镜像名

# 删除镜像
docker rm 镜像名/镜像id

# 进入容器内部
docker exec -it 镜像名/镜像id /bin/bash

# 宿主机复制文件到镜像内部
docker cp 文件 容器id:/etc/
docker cp text.txt c10fec6c05d0:/etc/

三、安装mysql

一、拉取镜像

复制代码
# 拉取镜像
docker pull mysql
 
# 或者
docker pull mysql:latest
 
# 以上两个命令是一致的,默认拉取的就是 latest 版本的
 
# 我们还可以用下面的命令来查看可用版本:
docker search mysql

二、查看镜像

使用以下命令来查看是否已安装了 mysql镜像

复制代码
docker images

三、运行镜像

初始化时运行以下文件:

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

修改容器配置文件:

复制代码
# 查看正在运行的容器
docker ps
# 查看所有的docker容器
docker ps -a

进入容器内部:

复制代码
docker exec -it mysql /bin/bash

查看本地是否有配置文件:

复制代码
/usr/local/mysql/conf/my.cnf

如果没有创建一个my.cnf:

复制代码
vi my.cnf

[client]

default-character-set=utf8mb4

[mysql]

default-character-set=utf8mb4

[mysqld]

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

# 设置密码验证规则,default_authentication_plugin参数已被废弃

# 改为authentication_policy

#default_authentication_plugin=mysql_native_password
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

复制文件到容器内部:

复制代码
docker cp my.cnf 容器id:/etc/mysql/conf.d/

在进入容器内部:

复制代码
docker exec -it mysql /bin/bash
复制代码
exit 退出

四、设置docker启动时启动mysql

复制代码
docker update mysql --restart=always

五、重启mysql

复制代码
docker restart mysql

四、授权访问问题

一、进入容器

复制代码
docker exec -it mysql /bin/bash

此时我们使用mysql客户端连接服务器是失败的,因为默认的root不具有远程连接的权限。

上面的密码不要输入,直接回车进入。

二、选择数据库

复制代码
show databases;
use mysql;

三、查看用户连接情况

复制代码
select host, user, plugin,  authentication_string, password_expired from user;

四、修改密码认证方式

复制代码
ALTER USER root@'%' IDENTIFIED WITH mysql_native_password BY '123456';
 
ALTER USER root@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
 
-- 刷新权限
FLUSH PRIVILEGES;

-- 退出
exit

五、重启 再试试

复制代码
docker restart mysql

六、错误解决

1、Unable to load authentication plugin 'caching_sha2_password'.

修改两个地方:

1、mysql5.6,升级到8.0,连接数据库就报错:,修改pom.xml中的 mysql-connector-java 版本为8.x.xx

2、修改项目中数据库连接配置文件,改为 com.mysql.cj.jdbc.Driver

相关推荐
java1234_小锋36 分钟前
【技术专题】Mysql8 数据库 - Mysql8 数据库基本操作
数据库·mysql
专业程序开发源1 小时前
springboot生命故事书制作小程序65290-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·mysql·小程序·课程设计
jason.zeng@15022071 小时前
canal做mysql的异步传输工具
数据库·mysql·linq
Shadow(⊙o⊙)2 小时前
MySQL C/C++链接MySQL使用
数据库·sql·mysql
FYKJ_20102 小时前
springboot手工蜀绣在线销售系统60947-计算机课程设计、毕业设计
java·spring boot·后端·python·mysql·spark·课程设计
Mortalbreeze2 小时前
MySQL 基础篇(五):数据操作基础 —— CRUD
linux·服务器·数据库·mysql
Shadow(⊙o⊙)2 小时前
mysql为创建普通用户并创建库赋权
数据库·sql·mysql
Q26433650232 小时前
【有源码】基于springboot的知识产权管理系统-知识产权咨询问答管理系统-知识产权价值评估管理系统
java·spring boot·mysql·spring·毕业设计·javaweb·课程设计
java1234_小锋13 小时前
【技术专题】Mysql8 数据库 - Mysql8 数据类型简介
数据库·mysql
JosieBook13 小时前
【数据库】MySQL 实战精通系列 · 第10篇:分库分表与分布式事务实战
数据库·分布式·mysql