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
相关推荐
weelinking1 小时前
【产品】12_接入数据库——让数据永久保存
jvm·数据库·python·react.js·数据挖掘·前端框架·产品经理
稳联技术老娜1 小时前
DeviceNet主站怎么连接西门子PLC,Profinet网关配置手册(那智机器人)
服务器·网络·数据库
这个DBA有点耶2 小时前
云上运维新挑战:当数据库不再“看得见摸得着”
数据库·sql·程序人生·云原生·运维开发·学习方法·dba
AskHarries3 小时前
系统提示词、开发者指令和用户输入的优先级
java·前端·数据库
消失在人海中3 小时前
oracle 数据库多表关联查询
服务器·数据库·oracle
九皇叔叔3 小时前
PostgreSQL/openGauss pg_stats 视图从入门到精通:统计信息、执行计划与慢 SQL 优化实战
数据库·sql·postgresql
gsls2008083 小时前
JVM 堆内存参数 & Docker 容器适配,一次讲清楚
jvm·docker·容器
南极企鹅4 小时前
MySQL间隙锁&临键锁
数据库·sql·mysql
Lumbrologist5 小时前
【零基础部署】Docker 部署 AutoGen 多 Agent 对话框架保姆级教程
运维·docker·容器
TDengine (老段)5 小时前
TDengine 压缩编码机制 — 双层压缩架构与类型特化算法
大数据·数据库·物联网·算法·时序数据库·tdengine·涛思数据