刘仁 Java后端开发

Docker中的mysql配置

2024-12-05
LIUREN

Docker中的mysql的安装和配置

Docker中的mysql的安装和配置

Docker中的mysql的安装和配置

1.启动Docker

启动:sudo systemctl start docker
	 service docker start
停止:systemctl stop docker
重启:systemctl restart docker

2.查询mysql

docker search mysql

3.安装mysql

3.1默认拉去最新版本mysql

docker pull mysql

3.2拉取指定版本mysql_5.7

sudo docker pull mysql:5.7

4.查看镜像

docker images

5.本地创建挂载目录-v

5.1启动MySQL容器

指定版本

sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

最新版本

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:latest

命令含义

docker run:在docker中启动一个容器实例
-d:该容器在后台运行
-p 3306:3306:容器与主机映射端口为,主机3306,容器3306
--name mysql:容器运行后的名称
-v /mysqldata/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /mysqldata/mysql/log目录下
-v /mysqldata/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /mysqldata/mysql/data目录下
-v /mysqldata/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 mysqldata/mysql/conf目录下
-e MYSQL_ROOT_PASSWORD=root:设置当前mysql实例的密码为root
mysql:5.7:需要运行的容器名称以及版本号

5.2在 var/lib/docker/containers/ 目录下查看容器

cd /var/lib/docker/containers/

5.3查看mysql进程获取name-mysql名称

docker ps -a

5.4进入MySQL容器,并登录MySQL

格式:docker exec -it   mysql名称   bash
进入mysql容器操作台命令:docker exec -it mysql bash
登录mysql命令:mysql -u root -p
输入密码:

5.5开启远程访问权限

命令:use mysql;
命令:select host,user from user;
命令:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
命令:flush privileges;
把root用户的密码改成 mysql_native_password 模式,即可远程连接
#创建一个账号-admin,用来进行远程访问;
CREATE USER 'admin'@'%' IDENTIFIED BY '123456';
#赋予所有权限给之前创建的账号:admin
GRANT ALL ON *.* TO 'admin'@'%';
#确认使用密码{123456}登录此账号{admin}
#密码尽量复杂,安全性更高。
ALTER USER 'admin'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#刷新权限
FLUSH PRIVILEGES;

5.6查看docker日志

docker logs -f --tail 10 a4dac74d48f7

5.7常用命令

查看进程

docker ps -a

关闭docker中mysql容器

docker stop mysqlserver

5.8重启docker中的mysql

重启docker

systemctl restart docker

关闭docker

systemctl stop docker

自动重启容器

sudo docker update mysql --restart=always

5.9移除原来的container ID

docker rm + container ID

6.MySQL设置

6.1 进入容器

docker exec -it mysql bash
mysql -u root -p

6.2定位容器位置

whereis mysql
#显示结果
mysql: /usr/bin/mysql /usr/lib/mysql /etc/mysql /usr/share/mysql

6.3退出容器

exit

6.4找到配置文件夹

cd /mydata/
cd mysql/
cd conf/

6.5创建msyql配置文件 my.cnf

[mysql]
#设置mysql客户端默认字符集
default-character-set=UTF8MB4
[mysqld]
#设置3306端口
port=3306
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
log-bin=mysql-bin
#允许最大连接数
max_connections=200
#允许连接失败的次数
max_connect_errors=10
#默认使用“mysql_native_password”插件认证
default_authentication_plugin=mysql_native_password
#服务端使用的字符集默认为8比特编码的latin1字符集
character-set-server=UTF8MB4
#开启查询缓存
explicit_defaults_for_timestamp=true
#创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#等待超时时间秒
wait_timeout=60
#交互式连接超时时间秒
interactive-timeout=600
# 对数据库表大小写不敏感设置,默认设置为小写,比较也全部设置为小写在比较
lower-case-table-names=1
# 设置默认时区
default-time_zone='+8:00'
#解决 only_full_group_by 问题
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'

6.6重启容器

docker restart msyql
docker exec -it mysql /bin/bash

6.7进入文件夹

cd /etc/mysql/
cat my.cnf

7.MySQL外部链接

IP:虚拟机IP地址——云主机地址
端口:
名称:
密码:

配置文件参考地址:https://blog.csdn.net/donkor_/article/details/139879575

Docker部署MySQL 8.3.0

一、环境

名称 备注
操作命令对象 Docker 版本26.1.3
远程操作系统 CentOS 7.9 64位
远程管理工具 FinalShell 版本4.3.11
安装软件名称 MySQL 版本8.3.0

二、拉取镜像

2.1 查找 Docker Hub 上的 MySQL 镜像

docker search mysql

2.2 拉取MySQL镜像

由于我本地用的是8.3.0的,所以服务器也拉取tag8.3.0的版本

docker pull mysql:8.3.0

2.3 查看MySQL镜像

docker images mysql:8.3.0

三、在宿主机创建目录

3.1 创建挂载目录

后面用于挂载mysql容器内目录,这里就放在home目录下

mkdir -p  /home/mysql/{conf,data,log}

3.2 创建配置文件

cd /home/mysql/conf
vim my.cnf

按键盘i键进行输入

[client]
#设置客户端默认字符集utf8mb4
default-character-set=utf8mb4
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#设置3306端口
port=3306
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
log-bin=mysql-bin
#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满。2592000秒等于30天的秒数
binlog_expire_logs_seconds = 2592000
#解决MySQL8.0版本GROUP BY问题
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#允许最大的连接数
max_connections=1000
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 设置东八区时区
default-time_zone = '+8:00'

按键盘esc键退出输入,输入:wq保存退出

四、启动MySQL容器

-p表示端口映射 --restart=always表示容器退出时总是重启 --name表示容器命名 --privileged=true表示赋予容器权限修改宿主文件权利 -v /home/mysql/log:/var/log/mysql表示容器日志挂载到宿主机 -v /home/mysql/data:/var/lib/mysql表示容器存储文件挂载到宿主机 -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf表示容器配置文件挂载到宿主机 -e MYSQL_ROOT_PASSWORD=a12bCd3_W45pUq6表示设置mysqlroot用户密码,建议用强密码 -d表示后台运行

docker run \
-p 3306:3306 \
--restart=always \
--name mysql \
--privileged=true \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e MYSQL_ROOT_PASSWORD=a12bCd3_W45pUq6 \
-d mysql:8.3.0

五、测试 使用Navicat进行连接,因为我服务器配置了ssh的密钥连接方式,所以截图多了一个ssh server。

服务器如何生成密钥对,服务器配置公钥,本地配置私钥,Navicat使用ssh隧道连接mysql数据库,可以查看如下2篇文章

服务器生成密钥对、服务器配置公钥、本地配置私钥 Navicat使用ssh隧道连接mysql数据库

文章来源:https://blog.csdn.net/donkor_/article/details/139879575


Similar Posts

下一篇 Docker命令详解

Comments