Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Docker

创建本地文件

  • 配置文件:/Users/qingzhi/dev/data/mysql/8.0.32/conf/my.cnf

    [mysqld]
    #设置3306端口
    port=3306
    
    #设置mysql的安装目录
    #basedir=/usr/local/mysql
    #设置mysql数据库的数据的存放目录
    #datadir=/usr/local/mysql/mysqldb
    #允许最大连接数
    max_connections=1000
    #允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
    max_connect_errors=100
    #服务端使用的字符集
    character-set-server=utf8mb4
    character-set-client-handshake=FALSE
    character_set_server=utf8mb4
    collation-server=utf8mb4_unicode_ci
    init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
    #时区
    default-time_zone='+8:00'
    #创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB
    #默认使用“mysql_native_password”插件认证
    default_authentication_plugin=mysql_native_password
    
    #是否对表大小写敏感,1表示不敏感
    lower_case_table_names = 1
    #MySQL连接闲置超过一定时间后(单位:秒)将会被强行关闭
    #MySQL默认的wait_timeout  值为8个小时, interactive_timeout参数需要同时配置才能生效
    interactive_timeout = 1800
    wait_timeout = 1800
    #Metadata Lock最大时长(秒), 一般用于控制 alter操作的最大时长sine mysql5.6
    #执行 DML操作时除了增加innodb事务锁外还增加Metadata Lock,其他alter(DDL)session将阻塞
    lock_wait_timeout = 3600
    #内部内存临时表的最大值。
    #比如大数据量的group by ,order by时可能用到临时表,
    #超过了这个值将写入磁盘,系统IO压力增大
    tmp_table_size = 64M
    max_heap_table_size = 64M
    [mysql]
    #设置mysql客户端默认字符集
    default-character-set=utf8mb4
    [client]
    #设置mysql客户端连接服务端时默认使用的端口
    port=3306
    default-character-set=utf8mb4
    
  • 日志目录:/Users/qingzhi/dev/data/mysql/8.0.32/log

  • 数据存储目录:/Users/qingzhi/dev/data/mysql/8.0.3/data

拉取mysql镜像

命令:

docker pull mysql:8.0.32

运行mysql服务

命令:

docker run -d -p 13306:3306 -e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=Qing123456 \
-v /Users/qingzhi/dev/data/mysql/8.0.32/conf/my.cnf:/etc/mysql/conf.d/my.cnf \
-v /Users/qingzhi/dev/data/mysql/8.0.32/data:/var/lib/mysql \
-v /Users/qingzhi/dev/data/mysql/8.0.32/log:/var/log/mysql/ \
--name=mysql_8.0.32 \
--privileged=true \
mysql:8.0.32 \
--default_authentication_plugin=mysql_native_password

参数解释

  • -d => 后台运行模式
  • -p 13306:3306 => 对外映射成13306 端口
  • -e TZ=Asia/Shanghai => 设置容器时区
  • -e MYSQL_ROOT_PASSWORD=Qing123456 => 指定启动密码为Qing123456
  • -v /Users/qingzhi/dev/data/mysql/8.0.32/my.cnf:/etc/mysql/conf.d/my.cnf => 映射配置文件目录
  • -v /Users/qingzhi/dev/data/mysql/8.0.3/data:/var/lib/mysql => 映射数据存贮目录
  • -v /Users/qingzhi/dev/data/mysql/8.0.32/log:/var/log/mysql/ => 映射日志存储目录
  • –name=mysql_8.0.32 => mysql容器名称
  • –privileged=true => 是容器拥有真正的root权限, 否则,容器内的root只是外部的一个普通用户权限
  • –default_authentication_plugin=mysql_native_password => mysql密码加密认证方式

注意

1、如果宿主机命令行登录需指定 host, 命令:

mysql -u root -h 127.0.0.1 -P 13306 -p

2、如果是低版本,且机器是Mac m1 芯片,需要指定平台架构:

--platform linux/amd64

© 2025-2025 资料笔记 | 皖ICP备2025101607号-1