-求学者-

Docker 安装Mysql

Docker 安装 Mysql

使用root用户操作

1、拉取官方的最新版本的镜像

docker pull mysql

 

 

2、创建主机挂载配置目录

data目录存放mongodb数据库文件,删除重启容器不会丢失

mkdir -p /opt/dockerdata/mysql/data

mkdir -p /opt/dockerdata/mysql/log

mkdir -p /opt/dockerdata/mysql/conf

 

3、创建MySQL8配置文件

vi /opt/dockerdata/mysql/conf/my.cnf

[client]
default-character-set = utf8mb4

[mysqld]
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
datadir         = /var/lib/mysql
secure-file-priv= NULL

# Custom config should go here
# 字符集
character_set_server=utf8mb4
collation-server=utf8mb4_unicode_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB

# 是否对sql语句大小写敏感,0:大小写敏感,1:忽略大小写区别。,只能在初始化服务器时配置。禁止在服务器初始化后更改
# 设置为2时,表名和数据库名按声明存储,但以小写形式进行比较
lower_case_table_names = 2

# 最大连接数
max_connections = 1000

# Innodb缓存池大小
innodb_buffer_pool_size = 4G

# 表文件描述符的缓存大小
table_open_cache_instances=1
table_open_cache=2000
table_definition_cache=2000

!includedir /etc/mysql/conf.d/

 

4、docker 启动 mysql

docker run -p 3306:3306 --name mysql --restart=always --privileged=true \
-v /opt/dockerdata/mysql/log:/var/log/mysql \
-v /opt/dockerdata/mysql/data:/var/lib/mysql \
-v /opt/dockerdata/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /etc/localtime:/etc/localtime:ro \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

命令说明:

-p 3306:3306:指定宿主机端口与容器端口映射关系

--name mysql:创建的容器名称

--restart=always:总是跟随docker启动

--privileged=true:获取宿主机root权限
-v /opt/dockerdata/mysql/log:/var/log/mysql:映射日志目录,宿主机:容器
-v /opt/dockerdata/mysql/data:/var/lib/mysql:映射数据目录,宿主机:容器
-v /opt/dockerdata/mysql/conf/my.cnf:/etc/mysql/my.cnf:映射配置目录,宿主机:容器
-v /etc/localtime:/etc/localtime:ro:让容器的时钟与宿主机时钟同步,避免时区的问题,ro是read only的意思,就是只读。
-e MYSQL_ROOT_PASSWORD=123456:指定mysql环境变量,root用户的密码为123456

-d mysql:latest:后台运行mysql容器,版本是latest。

 

5、配置远程连接和更改密码

docker exec -it mysql /bin/bash

登录MySQL

mysql -u root -p

输入密码

开始执行sql

use mysql;

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'WITH GRANT OPTION;

FLUSH PRIVILEGES;

ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;

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

FLUSH PRIVILEGES;

 select host, user, plugin, authentication_string, password_expired from user;

exit

 

 

 

参考

 https://blog.csdn.net/qq_42971035/article/details/127831101(有问题)

配置参考

https://blog.51cto.com/mshxuyi/5857795

https://developer.aliyun.com/article/791251

posted on 2023-07-19 21:16  -求学者-  阅读(195)  评论(0编辑  收藏  举报

导航