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
相关推荐
2401_850491651 小时前
Redis如何监控系统QPS的变化趋势
jvm·数据库·python
l1t1 小时前
DeepSeek总结的Quack:DuckDB 客户端-服务器协议
运维·服务器·数据库·duckdb
m0_463672201 小时前
c++如何利用filesystem--relative计算两个文件之间的相对路径【详解】
jvm·数据库·python
m0_596749091 小时前
C#怎么使用with表达式 C#record类型中with表达式怎么用如何创建对象的修改副本【语法】
jvm·数据库·python
尚雷55801 小时前
Oracle 多租户架构下常用运维SQL
数据库·sql·oracle
神明9311 小时前
uni-app动画效果实现 uni-app如何使用animation API
jvm·数据库·python
m0_690825821 小时前
uni-app怎么做类似于微博的新消息气泡 uni-app角标动画效果实现【代码】
jvm·数据库·python
m0_631529821 小时前
uni-app iOS后台运行 uni-app App如何实现后台定位或音乐播放
jvm·数据库·python
Mike117.1 小时前
GBase 8c 序列用在业务流水号上要留几道边界
服务器·数据库