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