docker安装 mysql 8.0.32

首先下载 mysql 其次如果虚拟机以前安过mysql 需要把mysql关闭

命令 永久关闭mysql 但是当前不生效 需要重启虚拟机 systemctl enable mysqld

如果不想重启虚拟机 可以执行 systemctl stop mysqld

//指定版本

docker pull mysql:8.0.32

// 拉取最新的mysql

docker pull mysql:latest

二、查看镜像

docker images

三、创建要挂载的文件夹

root@\~\]# mkdir -p /opt/docker/mysql8/conf/ \[root@\~\]# mkdir -p /opt/docker/mysql8/logs/ \[root@\~\]# mkdir -p /opt/docker/mysql8/data/ # 拷贝一份配置文件,先随便启动一个镜像 docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=5255 -d mysql:8.0.32 # 启动成功后,进入容器内部拷贝配置文件,到宿主主机 docker cp mysql8:/etc/mysql /opt/docker/mysql8/conf # 删除刚才的容器,重新创建容器 # 先停止容器 docker stop mysql8 # 再删除容器 docker rm mysql8

启动mysql ,挂载配置文件,数据持久化到宿主主机

docker run -itd -p 3306:3306 --name mysql8 -e character-set-server=utf8mb4 --privileged=true --restart unless-stopped -v /opt/docker/mysql8/conf/mysql:/etc/mysql -v /opt/docker/mysql8/logs:/logs -v /opt/docker/mysql8/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=5255 -d mysql:8.0.32 --lower_case_table_names=1

命令解释:

-p 端口映射

--name 容器名字,自定义

--privileged=true 挂载文件权限设置

--restart unless-stopped 设置 开机后自动重启容器

-v /opt/docker/mysql8/conf/mysql:/etc/mysql 挂载配置文件

-v /opt/docker/mysql8/logs:/logs \ 挂载日志

-v /opt/docker/mysql8/data:/var/lib/mysql \ 挂载数据文件 持久化到主机,

-v /etc/localtime:/etc/localtime 容器时间与宿主机同步

-e MYSQL_ROOT_PASSWORD=123456 设置密码

-d mysql:8.0.32 后台启动,mysql

--lower_case_table_names=1 要加在镜像名后面,镜像名前面是参数,后面是mysql配置,不然会报错

查看容器状态

docker ps

五、配置远程连接

进入容器

docker exec -it mysql8 /bin/bash

打开MySQL 命令行 密码 5255

mysql -uroot -p

use mysql;

创建账户

CREATE USER 'adminx'@'%' IDENTIFIED BY '123456';

授权账户

GRANT ALL ON *.* TO 'adminx'@'%';

刷新权限

FLUSH PRIVILEGES;

退出 mysql客户端 exit 或者ctrl+c

六、密码正确,登录错误

2、进入容器

$ docker exec -it mysql bash

1

3、修改配置文件

3.1 进入 /etc/mysql/conf.d 文件目录:

$ cd /etc/mysql/conf.d

1

3.2 创建MySQL配置文件:mysql.cnf

$ touch mysql.cnf

1

3.3 在 mysql.cnf 配置文件中填充以下内容

echo mysql.cnf [mysqld] \ skip-grant-tables >>

mysqld

跳过密码登录

skip-grant-tables

1

2

3

3.4 退出容器,重启mysql容器

$ exit

$ docker restart mysql

七、配置mysql的字符集

需要创建 vim /opt/mysql.cnf

并复制以下内容

client

default-character-set=utf8mb4

mysql

default-character-set=utf8mb4

mysqld

跳过密码登录

#skip-grant-tables

#bind-address = 127.0.0.1

init_connect='SET collation_connection = utf8mb4_general_ci'

init_connect='SET NAMES utf8mb4'

character-set-server=utf8mb4

collation-server=utf8mb4_general_ci

skip-character-set-client-handshake

lower_case_table_names=1

然后执行

docker cp /opt/mysql.cnf mysql8:/etc/mysql/conf.d

安装完以后测试本地windows系统上的 navicat

相关推荐
Sherry Wangs9 小时前
MySQL 与向量数据库的核心区别:从结构化数据到语义搜索
数据库·mysql
@小柯555m9 小时前
MySql(高级操作符--高级操作符练习(2))
数据库·sql·mysql
zxrhhm9 小时前
MySQL Server层与InnoDB存储引擎的关系+两阶段提交详解
mysql
Cyber4K9 小时前
【Kubernetes专项】温故而知新,重温技术原理(6)
云原生·容器·kubernetes
Mr_linjw9 小时前
MySQL 中监控和优化慢 SQL & 索引小知识
数据库·sql·mysql
计算机学姐9 小时前
基于微信小程序的校园失物招领管理系统【uniapp+springboot+vue】
java·vue.js·spring boot·mysql·信息可视化·微信小程序·uni-app
AI服务老曹10 小时前
架构实战:基于 GB28181 与 RTSP 的异构设备统一接入方案,深度解析 Docker 化 AI 视频管理平台
人工智能·docker·架构
落魄江湖行10 小时前
孤舟笔记 并发篇十一 行锁、间隙锁、临键锁傻傻分不清?MySQL InnoDB的锁其实就这三板斧
mysql·java并发·春招·孤舟笔记
叶总没有会10 小时前
Docker:项目部署
运维·docker·容器
爱学习 爱分享10 小时前
docker 本地装瀚高 4.5 数据库
数据库·docker·容器