Docker安装MySQL8

一. 问题背景

docker已经创建了MySQL8容器,但是进入容器后无法登录MySQL,报错说无法找到socket文件。估计是安装MySQL8容器的时候某些设置没有配好

二. 安装步骤

2.1 下载MySQL容器

docker pull mysql

2.2 创建目录

我需要对容器的数据挂在到宿主机中,所以先在宿主机创建目录,用来做挂在的

mkdir -p /mydata/mysql/log /mydata/mysql/data /mydata/mysql/conf

2.3 创建配置文件my.cnf

在宿主机的/mydata/mysql/conf/下创建my.cnf配置文件,否则会出现无法登录进MySQL客户端。配置文件的内容如下:

[client]

#socket = /usr/mysql/mysqld.sock

default-character-set = utf8mb4

[mysqld]

#pid-file        = /var/run/mysqld/mysqld.pid

#socket          = /var/run/mysqld/mysqld.sock

#datadir         = /var/lib/mysql

#socket = /usr/mysql/mysqld.sock

#pid-file = /usr/mysql/mysqld.pid

datadir = /mydata/mysql/data

character_set_server = utf8mb4

collation_server = utf8mb4_bin

secure-file-priv= NULL

# Disabling symbolic-links is recommended to prevent assorted security risks

symbolic-links=0

# Custom config should go here

!includedir /etc/mysql/conf.d/

2.4 创建并启动容器

docker run --restart=unless-stopped -itd --name mysql \
-v /mydata/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/log:/var/log/mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 mysql 

参数解释:
--restart=unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器。
-i:即使没有连接,也要保持标准输入保持打开状态,一般与 -t 连用。
-t:分配一个伪tty,一般与 -i 连用。
-v:挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录
-p:映射。容器端口号 :宿主机端口号
-e: 环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码

2.5 登录MySQL客户端并修改密码

进入容器内部

docker exec -it mysql /bin/bash

登录MySQL客户端

mysql -uroot -p

修改访问主机以及密码等,设置为所有主机可访问。如果不设置mysql_native_password,则无法使用navicat连接MySQL

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '新密码';

刷新

flush privileges;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值