使用docker 快速安装mysql 8.4版本数据库【测试成功】

艺帆风顺 发布于 2025-04-02 14 次阅读


1、拉取mysql8.4.0镜像

docker pull mysql:8.4.0-oraclelinux8

本次使用:

docker pull mysql:8.4

查看镜像:

    [root@XAYL mysql844]# docker images |grep mysqlmysql                                                  8.4           78e963ded248   7 weeks ago     769MBmysql                                                  8.0.36        b6188b3dc37c   14 months ago   603MBmysql                                                  5.7.34        09361feeb475   3 years ago     447MB

    2、新建宿主机本地目录:用来挂载MySQL容器所产生的数据的目录

    mkdir -p /home/admin/data/mysql /home/admin/logs/mysql /home/admin/conf/mysql

    3、在/home/admin/conf/mysql目录下面创建mysql配置文件my.cnf

      [client]#port=3306default-character-set=utf8mb4[mysql]default-character-set=utf8mb4[mysqld]port=3306#设置mysql的安装目录#basedir=/home/admin/app/mysql-8.4.0#设置mysql数据库的数据的存放目录#datadir=/home/admin/data/mysql/data#错误日志目录#log-error=/home/admin/data/mysql/logs/error.log#socket=/home/admin/data/mysql/tmp/mysql.sock#pid-file=/home/admin/data/mysql/tmp/mysql.pidinit_connect='SET collation_connection = utf8mb4_unicode_ci'init_connect='SET NAMES utf8mb4'character-set-server=utf8mb4collation-server=utf8mb4_unicode_ci#skip-character-set-client-handshakeskip-name-resolve# 设置不区分大小写lower_case_table_names=1# 创建数据表时,默认使用的存储引擎default-storage-engine=INNODB# 附加的内存池,用来存储 InnoDB 表的内容#innodb_additional_mem_pool_size=3M# 置提交日志的时机,若设置为 1,InnoDB 会在每次提交后将事务日志写到磁盘上innodb_flush_log_at_trx_commit=1# 来存储日志数据的缓存区的大小innodb_log_buffer_size=2M# 缓存的大小,InnoDB 使用一个缓冲池类保存索引和原始数据innodb_buffer_pool_size=107M# 日志文件的大小innodb_log_file_size=54M# 在 InnoDB 存储引擎允许的线程最大数innodb_thread_concurrency=18# 默认使用“mysql_native_password”插件认证 ON开启/OFF关闭# mysql_native_passwordmysql_native_password=ON# 回收空闲连接的时间wait_timeout = 86400# 允许同时访问 MySQL 服务器的最大连接数。其中一个连接是保留的,留给管理员专用的max_connections=100# 数据库 写入的 数据包 最大值max_allowed_packet = 512M# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统max_connect_errors=10# 查询时的缓存大小,缓存中可以存储以前通过 SELECT 语句查询过的信息,再次查询时就可以直接从缓存中拿出信息,可以改善查询效率#query_cache_size=0# 所有进程打开表的总数#table_cache=256# 内存中每个临时表允许的最大大小tmp_table_size=35M# 缓存的最大线程数thread_cache_size=8# MySQL 重建索引时所允许的最大临时文件的大小myisam_max_sort_file_size=100G# 重建索引时的缓存大小myisam_sort_buffer_size=69M# 关键词的缓存大小key_buffer_size=55M# MyISAM 表全表扫描的缓存大小read_buffer_size=64K#将排序好的数据存入该缓存中read_rnd_buffer_size=256K#用于排序的缓存大小sort_buffer_size=256K#开启binlog日志#当前为单个节点,随机设置一个ID的值server-id=1log-bin=mysql-binbinlog-format=Row# 解决导入脚本时function报错问题log_bin_trust_function_creators=1# 日志存储天数#expire_logs_days=7 弃用#binlog用于控制日志自动清理机制 ON 打卡 OFF关闭#binlog_expire_logs_auto_purge=ON#binlog可以以秒为单位进行清理 3天#binlog_expire_logs_seconds=259200

      说明:docker安装需要注释掉下面这些内容

        #设置mysql的安装目录#basedir=/home/admin/app/mysql-8.4.0#设置mysql数据库的数据的存放目录#datadir=/home/admin/data/mysql/data#错误日志目录#log-error=/home/admin/data/mysql/logs/error.log#socket=/home/admin/data/mysql/tmp/mysql.sock#pid-file=/home/admin/data/mysql/tmp/mysql.pid

        4、启动容器,创建MySQL实例

          docker run -p 8404:3306 --name mysql8.4 --restart=always --privileged=true  -v /home2/mysql844/log:/var/log/mysql  -v /home2/mysql844/data:/var/lib/mysql  -v /home2/mysql844/conf:/etc/mysql/conf.d  -v /etc/localtime:/etc/localtime:ro  -e MYSQL_ROOT_PASSWORD=YinLing2025  -d  78e963ded248
            参数说明: :这是换行符-d :后台运行-p 3306:3306 :设置端口,前面端口是主机端口号,后面是容器端口--privileged=true : 设置容器的权限。让容器拥有宿主机的root权限-v /home/admin/data/mysql : 容器卷挂载(格式:-v 要挂载的主机路径:要被挂载的容器路径)-e MYSQL_ROOT_PASSWORD=123456 :设置MySQL的root密码,这里我设置的密码是123456--name mysql8.4.0 :给要创建的容器起个名,不起名的话就会默认生成一个名字,不好记mysql:8.4.0-oraclelinux8 :要运行的镜像(可以用镜像名:版本号来指定也可以用镜像id)

            或者-v /home/admin/conf/mysql/my.cnf:/etc/mysql/conf.d/my.cnf

            使用docker ps 查看容器查看mysql日志

              docker logs 容器id或者容器名称

              例如:

                docker logs mysql8.4.0docker logs ae5b3444d5d9
                  版权声明:本文内容来自CSDN:胡八一、,遵循CC 4.0 BY-SA版权协议上原文接及本声明。本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行可。原文链接:https://blog.csdn.net/qq_44732146/article/details/144076233如有涉及到侵权,请联系,将立即予以删除处理。在此特别鸣谢原作者的创作。此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。