阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Docker安装MySQL 8.0过程记录

168次阅读
没有评论

共计 2297 个字符,预计需要花费 6 分钟才能阅读完成。

环境:

Linux 系统:CentOS 7.3

Docker 版本:version: 17.12.0-ce

1. 操作系统切换到 root 用户:

        # su root

2. 启动 docker
        # systemctl start docker

3. 拉取 MySQL8.0 镜像
        # docker pull mysql:8.0

4. 创建并启动容器

        -p: 映射本地端口 3306

        –restart-always: docker 服务启动时,自动启动容器,并且当容器停止时,尝试重启容器。

                –restart 具体参数值详细信息:
                no –  容器退出时,不重启容器;
                on-failure – 只有在非 0 状态退出时才从新启动容器;
                always – 无论退出状态是如何,都重启容器;

        MYSQL_ROOT_PASSWORD:设置 root 密码为 root

        设置默认数据库编码为 utf8mb4, 默认排序规则为 utf8mb4_unicode_ci

        -v : 挂载本地卷

  注意:mysql8.0 安装默认编码为 utf8mb4,所以可以不需要参数 –character-set-server=utf8mb4 –collation-server=utf8mb4_unicode_ci
docker run \
–name mysql \
-p 3306:3306 \
–restart=always \
-e MYSQL_ROOT_PASSWORD=root \
-v /var/lib/mysql/:/var/lib/mysql/ \
-d mysql:8.0 \
–character-set-server=utf8mb4 \
–collation-server=utf8mb4_unicode_ci

5. 进入 docker 的 mysql 容器
        #  docker exec -it mysql /bin/bash

6. 登录数据库(此处的密码为参数 -e MYSQL_ROOT_PASSWORD=root 对应的值,此处密码为 root)
        #  mysql -uroot -proot

7. 使用 mysql 数据库
mysql> use mysql;

8. mysql8.0 的 root 用户的验证方式变了,通过查询:select host,user,plugin from user;

得知:root 的用户的加密方式为 caching_sha2_passoword, 而 navicat 连接所用的方式为 native_password。mysql 为远程连接和本地连接提供了不同的密码验证方式。

修改 root 用户插件验证方式:

mysql> ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘root’;

注意: 先更改 ser 表中用户为 root 的 host 字段,若为 localhost 则改为 %,只有改为 %,该用户才可以远程访问。

此时,可以使用 mysql 客户端工具连接数据库。

如果 navicat 提示“1045 access denied for user ‘root’@’localhost’”,则执行:

mysql> alter user ‘root’@’localhost’ identified by ‘root’;

同理:如果 navicat 提示“1045 access denied for user ‘root’@’%’”,则执行:

mysql> alter user ‘root’@’%’ identified by ‘root’;

刷新权限:

mysql> flush privileges;

9. 修改 mysql 数据库编码,防止中文乱码

(1)进入 docker 的 mysql 容器
            #  docker exec -it mysql /bin/bash

(2)容器默认没有安装任何编辑器,先安装 vim。

            #  apt-get update && apt-get install vim -y

      (3)  安装完 vim 之后,开始修改 mysql 数据库编码

            #  vim /etc/mysql/conf.d/mysql.cnf

            增加以下内容,然后保存,退出:

          [client]
            default-character-set=utf8

          [mysql]
            default-character-set=utf8

      (4)  重启 mysql 容器,查询编码:此时编码已经修改为 utf8。

            mysql>  show variables like’character%’;

10.  查看挂载卷位置:获取容器 / 镜像的元数据。

      #  docker inspect  容器 ID

其中:
    “Mounts”: [
            {
                “Type”: “volume”,
                “Name”: “ebc0e8f50d451650f29d7ac1a696a0130316073173835c1b5c9f7f88c5fb976f”,
                “Source”: “/var/lib/docker/volumes/ebc0e8f50d451650f29d7ac1a696a0130316073173835c1b5c9f7/_data”,
                “Destination”: “/var/lib/mysql”,
                “Driver”: “local”,
                “Mode”: “”,
                “RW”: true,
                “Propagation”: “”
            }
        ]

Source:为本地主机挂载卷的路径

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-22发表,共计2297字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中