Docker容器安装MySQL数据库

拉取Mysql数据库镜像

bash 复制代码
-- 拉取最新的MySQL数据库镜像
docker pull mysql

-- 拉取指定版本的MySQL数据库镜像
docker pull mysql:8.3.0

查看拉取的MySQL数据库镜像

bash 复制代码
docker images

编写MySQL配置文件(注意配置文件后缀是.cnf)

sql 复制代码
vi /docker/mysql/conf/my.cnf
sql 复制代码
[client]
# 端口号
port=3306
 
[mysql]
no-beep
# 配置了 MySQL 客户端的默认字符集
default-character-set=utf8mb4
 
[mysqld]
# 端口号
port=3306
# 数据目录
datadir=/var/lib/mysql
# 设置了 MySQL 服务器的字符集为 UTF-8
character-set-server=utf8mb4
# 设置了 MySQL 服务器的排序规则为 utf8mb4_unicode_ci,通常用于支持国际化和多语言字符的正确排序
collation-server=utf8mb4_unicode_ci
# 用于禁用客户端字符集握手,允许客户端和服务器之间的字符集设置更加灵活
skip-character-set-client-handshake
# 禁用了主机名解析,以提高连接性能
skip-name-resolve
# 默认存储引擎
default-storage-engine=INNODB
# 将 SQL 模式设置为严格
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
#  最大连接数
max_connections=1024
# 表缓存
table_open_cache=2000
# 表内存
tmp_table_size=16M
# 线程缓存
thread_cache_size=10
# 设置大小写不敏感
lower_case_table_names=1
# 设置默认时区
default_time_zone='+8:00'
 
# myisam设置
myisam_max_sort_file_size=100G
myisam_sort_buffer_size=8M
key_buffer_size=8M
read_buffer_size=0
read_rnd_buffer_size=0
 
# innodb设置
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=8M
innodb_log_file_size=48M
innodb_thread_concurrency=33
innodb_autoextend_increment=64
innodb_buffer_pool_instances=8
innodb_concurrency_tickets=5000
innodb_old_blocks_time=1000
innodb_open_files=300
innodb_stats_on_metadata=0
innodb_file_per_table=1
innodb_checksum_algorithm=0
# 其他设置
back_log=80
flush_time=0
join_buffer_size=256K
max_allowed_packet=4M
max_connect_errors=100
open_files_limit=4161
sort_buffer_size=256K
table_definition_cache=1400
binlog_row_event_max_size=8K
sync_master_info=10000
sync_relay_log=10000
sync_relay_log_info=10000

安装MySQL数据库镜像

bash 复制代码
安装最新版本的数据库
sudo docker run -p 3306:3306 --name mysql \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql

安装指定版本的数据库
sudo docker run -p 3306:3306 --name mysql \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:8.3.0
复制代码
docker run:在docker中启动一个容器实例
        -d:该容器在后台运行
        -p 3306:3306:容器与主机端口映射
        --name mysql:容器运行后的名称
        -v /docker/mysql/log:/var/log/mysql:将容器/var/log/mysql目录下的数据,备份到主机的 /docker/mysql/log目录下
        -v /docker/mysql/data:/var/lib/mysql:将容器/var/lib/mysql目录下的数据,备份到主机的 /docker/mysql/data目录下
        -v /docker/mysql/conf:/etc/mysql:将容器/etc/mysql目录下的数据,备份到主机的 docker/mysql/conf目录下
        -e MYSQL_ROOT_PASSWORD=root:设置当前mysql实例的密码为root
        mysql:8.3.0  :需要运行的容器名称以及版本号(最新版本的数据库省略:后面的版本)

查看进程(如果按照以上的步骤执行进程名称是mysql)

bash 复制代码
docker ps -a

进入docker容器中的MySQL数据库并登录

bash 复制代码
进入docker容器中的MySQL数据库。格式:docker exec -it mysql名称 bash

docker exec -it mysql bash

登录mysql(使用root账号登录),需要单独输入密码
mysql -u root -p

查看/修改远程访问权限

bash 复制代码
sql命令:
进入数据库
use mysql;

查看用户和连接
select host,user from user;

-- 修改用户和连接

-- 刷新
flush privileges;

把root用户的密码改成 mysql_native_password 模式,即可远程连接

设置/取消开机启动

复制代码
-- 获取MySQL容器ID
docker ps

-- 设置开机启动
docker update --restart=always 容器ID

-- 取消开机启动
docker update --restart=no 容器ID

启动MySQL

bash 复制代码
-- 启动mysql
docker start mysql

重启mysql

docker restart mysql

bash 复制代码
-- 重启mysql
docker restart mysql

停止mysql

docker stop mysql

bash 复制代码
-- 停止mysql
docker stop mysql

常用命令

复制代码
-- 查看MySQL日志
docker logs mysql
相关推荐
ACP广源盛139246256732 小时前
Qwen3.8‑2.4T 开源落地@ACP#国产 Serdes 长距离视频传输芯片 GSV5800 在私有化 AI 服务中的价值与应用场景
大数据·数据库·人工智能·嵌入式硬件·矩阵·开源·音视频
oradh2 小时前
Oracle RMAN备份脚本、RMAN还原恢复测试、RMAN常用语句
数据库·oracle·rman备份脚本·rman还原恢复测试·rman常用语句
汽车仪器仪表相关领域2 小时前
ZDT‑I伺服电机测试系统:四象限动态加载
大数据·数据库·分布式·功能测试·汽车·压力测试·可用性测试
云贝教育-郑老师2 小时前
Oracle 块清除(Block Cleanout):commit 之后,数据块里的“战场“谁来打扫?
数据库·学习·oracle
gs801402 小时前
Java 响应式编程详解:从 Flux、Mono 到 Spring WebFlux 技术生态
数据库·oracle
一只旭宝3 小时前
预约系统版本2(pyhton+flask可视化版本)
服务器·数据库·c++·笔记·python·flask
__zRainy__3 小时前
Node系列 · ORM:mysql 驱动程序
数据库·后端·mysql·node.js·orm
痕迹运维3 小时前
MySQL8 Docker容器化部署之C86架构(海光CPU)
mysql
程序员夏洛3 小时前
MySQL 中如果发生死锁应该如何解决?
数据库·mysql
肠畔码农3 小时前
Redis 深度内核解析与高性能运维调优指南
运维·数据库·redis