阿里云(centos 7)安装docker之mysql 8.0 笔记记录

1.卸载旧版本docker
   yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
2.安装依赖yum-utils
  yum install -y yum-utils device-mapper-persistent-data lvm2
3.设置阿里云镜像
  yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4.更新yum 软件
   yum makecache fast
5.安装docker社区版
   yum install docker-ce docker-ce-cli containerd.io

7.启动docker
   sudo systemctl start docker
8.卸载docker
    yum remove docker-ce docker-ce-cli containerd.io
9.设置镜像加速器
    https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
10. 分别执行下图红色框中的3条sudo命令,设置镜像加速器(选择对应的linux镜像)

 10.拉取MySQL镜像
     docker pull mysql:8.0
11.查看本地镜像
    docker images
12.创建挂载目录
   mkdir -p /home/mysql/conf            创建conf文件夹, 存放配置文件
   mkdir -p /home/mysql/logs            创建conf文件夹, 存放logs
   mkdir -p /home/mysql/mysql         创建mysql文件夹,存放data
   touch /home/mysql/my.cnf            创建my.cnf配置文件

13.编辑my.cnf文件

# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

#
# The MySQL  Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

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

[client]
#socket = /usr/mysql/mysqld.sock
default-character-set = utf8mb4

[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  = /home/mysql/data

general_log = 1
general_log_file = /home/mysql/log/access.log
log-error = /home/mysql/log/error.log

character_set_server = utf8mb4
collation_server = utf8mb4_bin

max_connections = 2000
max_user_connections = 1900
max_connect_errors = 100000
max_allowed_packet = 50M

lower_case_table_names=1

skip-name-resolve
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

secure-file-priv= NULL

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

#log-error	= /var/log/mysql/error.log
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

14.启动 mysql 容器
 docker run -d -p 3306:3306 --privileged=true -v /home/mysql/conf/my.cnf:/etc/my.cnf -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e TZ=Asia/Shanghai --name mysql01 mysql:8.0 --lower-case-table-names=1

备注----巨坑1:

1. mysql8.0 修改my.cnf(无效),需要在运行容器命令中添加--lower-case-table-names=1

2.如果该容器已经运行了,再次运行命令中含--lower-case-table-names=1,docker ps 看不到运行的容器。

 原因:第一次启动未加设置,默认设置的lower_case_table_names=0,第二次启动使用lower_case_table_names=1与默认的字典值0不一致,接着就拒绝了我的设置。

解决办法: 

卸载掉之前装的mysql容器,并且删除挂载数据仓库,(-v /home/mysql/mysql:/var/lib/mysql )清空这个 /home/mysql/mysql 文件夹下的所有文件,再次执行第14项启动mysql容器命令,启动成功。

参数解释:
-p 端口映射
--privileged=true                                  挂载文件权限拥有真正root权限
--restart unless-stopped                      设置 开机后自动重启容器
-v /home/mysql/conf/etc/mysql            挂载配置文件
-v /home/mysql/logs:/logs                    挂载日志
-v /home/mysql/data:/var/lib/mysql      挂载数据文件 持久化到主机,
-v /etc/localtime:/etc/localtime              容器时间与宿主机同步
-e MYSQL_ROOT_PASSWORD=123456          设置密码
-e TZ=Asia/Shanghai                          设置时区
-d                                                         后台启动,mysql
--lower-case-table-names=1               数据库表名不区分大小写

12.进入mysql,修改加密方式

docker exec -it mysql01 /bin/bash                
mysql -uroot -p123456
select host,user,authentication_string,plugin from mysql.user;
#查看root的加密方式为:caching_sha2_password,修改加密方式:
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
#授权root远程访问
grant all privileges on *.* to 'root'@'%' ;
#刷新库
flush privileges;

13.也可以创建用户:

#创建用户
create user 'test'@'%' identified by '123456';
#给用户所有权限:
GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
#刷新库
flush privileges;

14.其他容器命令

docker stop mysql(容器id或者名称)      暂停容器
docker rm mysql                                   删除容器
docker ps                                        可以查看运行中的容器
docker ps -a                                    可以查看所有容器,包括运行和停止的容器

navicat 连接成功: 

巨坑2。。。。。。。。。。。。。。。。。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值