Linux之centos7下docker 安装部署mysql8.0环境
文章目录前言docker 安装mysql1.docker hub 镜像仓库官网2.拉取镜像3.docker启动mysql容器1)数据卷挂载2)启动mysql容器,使用docker run3)查看启动是否成功4.进入容器命令:docker exec -it mysql bash前言linux已经安装好docker环境安装docker环境教程:Linux的centos7安装dockerdocker 安
文章目录
前言
linux已经安装好docker环境
安装docker环境教程:Linux的centos7安装docker
docker 安装mysql
1.docker hub 镜像仓库官网
仓库官网地址:https://hub.docker.com/search?q=mysql&type=image
mysql版本都是可以在这里找到,然后选择自己想要的版本下载
2.拉取镜像
在服务器执行命令:
docker pull mysql:8.0.22
下载之后查看自己下载好的镜像:
docker images
如图:
3.docker启动mysql容器
1)数据卷挂载
为了数据可以不再移除容器的时候丢失,把mysql容器里的目录挂载在服务器的目录上
如果不是root运行docker命令,要先创建目录
mkdir -p /usr/local/docker/mysql/data
mkdir -p /usr/local/docker/mysql/mysql-files
mkdir -p /usr/local/docker/mysql/cnf
mkdir -p /usr/local/docker/mysql/log
2)编写my.cnf文件(这一步看自己想要的数据库情况设置)
在目录/usr/local/docker/mysql/cnf里新建文件:my.cnf
#Apply this config only on the master.
[client]
port = 3306
default-character-set = utf8mb4
[mysql]
port = 3306
default-character-set = utf8mb4
[mysqld]
# bind-address = 0.0.0.0
# port = 3306
max_connections=10000
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
# 设置时区和字符集
# default-time-zone='+8:00'
character-set-client-handshake=FALSE
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
gtid-mode=ON
enforce-gtid-consistency = ON
3)启动mysql容器,使用docker run
docker run \
--restart=always \
--name mysql \
-v /usr/local/docker/mysql/cnf:/etc/mysql \
-v /usr/local/docker/mysql/data:/var/lib/mysql \
-v /usr/local/docker/mysql/log:/var/log \
-v /usr/local/docker/mysql/mysql-files:/var/lib/mysql-files \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql:8.0.22
-
–restart=always #容器在docker启动的时候,也会跟着启动
-
–name mysql #给容器取名
-
-v /usr/local/docker/mysql/data:/var/lib/mysql #挂载目录,就是把容器的目录挂载到外面
-
-p 3306:3306 #端口映射
-
-e MYSQL_ROOT_PASSWORD=root #mysql初始密码
-
-d #后台运行
4)查看启动是否成功
docker ps -a
如图:
4.进入容器命令:docker exec -it mysql bash
问题解决
(1)mysql 8.0远程登录不了
出现这个主要是权限不够,把权限放开就好了
使用命令:docker exec -it mysql bash
进入mysql容器
1.使用命令进入mysql
mysql -uroot -p123456
2.查看权限信息
use mysql;
select host, user, authentication_string, plugin from user;
查看user表的root用户Host字段是localhost,说明root用户只能本地登录,现在把他改成远程登录
3.把root的权限更新
update user set host='%' where user='root';
4.刷新权限
FLUSH PRIVILEGES;
5.就可以登录了
6.还是登录不了,可能是密码问题:
##如果plugin 的加密方式为caching_sha2_password,表示需要更改
##更改root用户加密方式
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password by '123456';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
FLUSH PRIVILEGES;
更多推荐
所有评论(0)