【docker 安装 MySQL】

docker安装MySQL:

1.拉取MySQL镜像:
docker pull mysql:8.0
2.创建挂载文件:
mkdir /usr/local/mysql/mysql8/data
mkdir /usr/local/mysql/mysql8/conf
mkdir /usr/local/mysql/mysql8/logs
3.在conf 下创建MySQL配置文件my.cnf
[mysqld]
# 设置3306端口
port=3306
# 允许最大连接数
max_connections=1000
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=100
# 服务端使用的字符集默认为UTF8
character-set-server=utf8mb4
collation-server = utf8mb4_unicode_ci
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#是否对sql语句大小写敏感,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
# 设置时区和字符集
# default-time-zone='+8:00'
character-set-client-handshake=FALSE
init_connect='SET NAMES utf8mb4 COLLATE utf8mb4_unicode_ci'
4.使用root用户创建实例并启动mysql
docker run -p 3306:3306 \
 -e MYSQL_ROOT_PASSWORD=yy2001 \
 -v /usr/local/mysql/mysql8/data:/var/lib/mysql-files:rw \
 -v /usr/local/mysql/mysql8/logs:/var/logs/mysql:rw \
 -v /usr/local/mysql/mysql8/conf/my.cnf:/etc/mysql/my.cnf:rw \
 --name mysql8 --restart=always -d mysql:8.0
  • 参数说: -p 3306:3306 表示将容器(创建的mysql容器)的3306端口映射到主机(centos7)的3306端口
  • -v /usr/local/mysql/mysql8/conf:/etc/mysql 将配置文件夹挂载到主机(前一个是宿主机目录,后一个是镜像容器目录)
  • -v /usr/local/mysql/mysql8/log:/var/log/mysql 将日志文件夹挂载到主机(前一个是宿主机目录,后一个是镜像容器目录)
  • -v /usr/local/mysql/mysql8/data:/var/lib/mysql 将配置文件夹挂载到主机(前一个是宿主机目录,后一个是镜像容器目录)
  • -e MYSQL_ROOT_PASSWORD=root 初始化root用户的密码
  • --name mysql 为容器指定名称为mysql
  • -d mysql:5.7 后台运行名称为mysql,版本为5.7的镜像
  • 注意:
  • 上面-v挂载的文件夹内容,镜像容器都会同步到centos7对应的 /usr/local/mysql/mysql8 挂载目录下,可以到centos7环境中查看,
  • 修改centos7环境中对应目录下的配置文件,mysql对应的挂载目录文件也会变化
遇到docker: invalid reference format.
检查以下3种原因

1.‘-‘写成’-’ :记住一定时英文短横线
2:\ 与前面内容缺少空格
3: \后面多敲了tab建 或者空格

docker移除容器:
docker rm +容器号

docker 进入MySQL
docker exec -it mysql8 bash

docker更改MySQL容器时间:(进入容器后)

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

然后退出重启MySQL

docker 退出MySQL

exit

进入MySQL后登录root用户:

然后 查看密码加密规则 :

use mysql;
​
select host,user,plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | root             | caching_sha2_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | caching_sha2_password |
+-----------+------------------+-----------------------+
# 如果user为root的插件是 caching_sha2_password 就修改加密规则 不然远程连不上
​
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'yy2001';
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'yy2001';
​
 # 刷新权限,使修改的密码生效:
 FLUSH PRIVILEGES;
​
# 在查看一下加密规则
SELECT Host, User, plugin from user;
+-----------+------------------+-----------------------+
| host      | user             | plugin                |
+-----------+------------------+-----------------------+
| %         | root             | mysql_native_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session    | caching_sha2_password |
| localhost | mysql.sys        | caching_sha2_password |
| localhost | root             | mysql_native_password |
+-----------+------------------+-----------------------+
# 修改成功
​
​
​

现在就可远程连接了(别忘了开放MySQL端口)

  • 24
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值