Linux中docker安装mysql8

一、创建挂载路径

mkdir -p /docker/mysql/data /docker/mysql/logs /docker/mysql/log-bin

二、创建my.cnf文件

vi /docker/mysql/my.cnf

my.cnf文件内容:

#客户端的配置----------------------------------------------------
[client]
socket = /var/run/mysqld/mysqld.sock
default-character-set = utf8mb4

[mysql]
#客户端字符集
default-character-set = utf8mb4
#套接字文件,本地连接使用
socket = /var/run/mysqld/mysqld.sock

#服务端的配置----------------------------------------------------
[mysqld_safe]
#错误日志的路径及名称
log-error=/var/log/mysql/mysql-error.log
#进程号文件
pid-file = /var/run/mysqld/mysqld.pid
#套接字文件,本地连接使用
socket = /var/run/mysqld/mysqld.sock

[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql

#这是自定义路径
#socket = /usr/mysql/mysqld.sock
#pid-file = /usr/mysql/mysqld.pid
#datadir = /usr/mysql/data

character_set_server = utf8mb4
#排序规则,不区分大小写
collation_server = utf8mb4_general_ci
secure-file-priv = NULL

#数据库服务器id,这个id主要用在主从数据库服务器之间标记唯一mysql标识
server-id=1
log-error=/var/log/mysql/mysql-error.log
#软件介质安装目录(因为是 通过docker自动安装,不需要启动这个,否则报错)
#basedir=/opt/mysql/mysql-8.0.21
#默认数据库存储引擎
default-storage-engine=Innodb
#大小写是否敏感,1为不区分
lower_case_table_names=1
#默认数据库隔离级别,读提交
transaction_isolation=READ-COMMITTED
#数据库允许的最大连接数(默认100,暂时用默认)
#max_connections=1000
#数据库关闭一个交互的连接之前所要等待的秒数
interactive_timeout=100
#数据库关闭一个非交互的连接之前所要等待的秒数
wait_timeout=100
#这个是因应mysql8的安全机制升级而需要修改的配置,不配置的话将无法登录管理
default_authentication_plugin= mysql_native_password


#------注意,bin-log相关参数配置在mysql启动成功后。重新修改my.cnf,把注释取消,重启容器才不报错
#二进制binlog日志文件存放位置及文件名前缀
#log-bin=/var/log/mysql/log-bin/mysql-bin.log
#binlog日志最大
#max_binlog_size = 100M
#binlog日志的保留秒数(30天)
#binlog_expire_logs_seconds=2592000
#二进制binglog日志缓冲大小
#binlog_cache_size=4M
#二进制日志的格式,row格式为记录每行数据的变化
#binlog_format=ROW
#为了确保binlog日志的安全,建议设置为1,这样每次事务提交时就会调用fdatasync()实时把binlog日志刷新到磁盘
#sync_binlog=1


#------注意,slow-log相关参数配置在mysql启动成功后。重新修改my.cnf,把注释取消,重启容器才不报错
#是否开启慢sql记录,1表示开启
#slow_query_log=1
#记录sql语句到慢日志的执行时间阈值(s)
#long_query_time=1
#控制错误日志信息的时间戳与时区,以及查询日志和慢日志写入文件时的时间戳与时区为本地system为本地时区
#log_timestamps=SYSTEM
#慢日志的路径及名称 
#slow_query_log_file=/var/log/mysql/mysql-slow.log


# Custom config should go here
!includedir /etc/mysql/conf.d/


所有结构:

三、创建容器。直接通过run命令拉取mysql8.0.21镜像版本

docker run --name mysql8 -v /docker/mysql/my.cnf:/etc/mysql/my.cnf:rw -v /docker/mysql/data:/var/lib/mysql:rw -v /docker/mysql/logs:/var/log/mysql:rw -v /etc/localtime:/etc/localtime:ro -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --restart=unless-stopped -itd mysql:8.0.21

参数解释:

-v : 挂载宿主机目录和 docker容器中的目录,前面是宿主机目录,后面是容器内部目录

-d : 后台运行容器

-p 映射容器端口号和宿主机端口号

-e 环境参数,MYSQL_ROOT_PASSWORD设置root用户的密码

--unless-stopped #unless-stopped 和 always 基本一样,只有一个场景 unless-stopped有点特殊:如果容器正常stopped,然后机器重启或docker服务重启,这种情况下容器将不会被restart

注意:新版mysql好像还需要挂载/var/lib/mysql-files/ 目录 (我没挂载,我是8.0.21。mysql8.0.25版run时可能会报这个相关的错)

-v /docker/mysql/mysql-files:/var/lib/mysql-files

四、执行命令,查看容器是否启动成功

docker ps

 

五、navicat连接mysql

因为我们在my.cnf配置了以下参数,所以可以使用navicat连接成功

#这个是因应mysql8的安全机制升级而需要修改的配置,不配置的话将无法登录管理
default_authentication_plugin= mysql_native_password

如果my.cnf里没配置,需要执行以下步骤

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值