• Docker通过挂载安装mysql


    一、安装 

     mkdir -p ./docker/mysql
     cd docker/
     cd mysql/
     mkdir conf
     mkdir data
     mkdir logs

     mkdir mysql-files

    cd conf 

    vim my.cnf

      [mysqld]

      user=mysql


     docker pull mysql
     docker run -e MYSQL_ROOT_PASSWORD=KMSD2016064 -d -p 3306:3306 --name mysql01 mysql

     

    docker run -e MYSQL_ROOT_PASSWORD=KMSD2016064 -d -p 3306:3306 -v ~/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf -v ~/docker/mysql/data:/var/lib/mysql -v ~/docker/mysql/logs:/logs -v ~/docker/mysql/mysql-files:/var/lib/mysql-files --name mysql01 mysql

    二、修改默认字符集并创建用户

    docke exec -it mysql01 bash

    mysql -uroot -p

    修改默认字符集

    show variables like '%char%'

    +--------------------------+--------------------------------+
    | Variable_name | Value |
    +--------------------------+--------------------------------+
    | character_set_client | latin1 |
    | character_set_connection | latin1 |
    | character_set_database | utf8mb4 |
    | character_set_filesystem | binary |
    | character_set_results | latin1 |
    | character_set_server | utf8mb4 |
    | character_set_system | utf8 |
    | character_sets_dir | /usr/share/mysql-8.0/charsets/ |
    +--------------------------+--------------------------------+

    vim mycnf

    #insert
    [mysqld]
    user=mysql
    character-set-server=utf8
    
    [client]
    default-character-set=utf8
    
    [mysql]
    default-character-set=utf8

    mysql> show variables like '%char%';
    +--------------------------+--------------------------------+
    | Variable_name | Value |
    +--------------------------+--------------------------------+
    | character_set_client | utf8 |
    | character_set_connection | utf8 |
    | character_set_database | utf8 |
    | character_set_filesystem | binary |
    | character_set_results | utf8 |
    | character_set_server | utf8 |
    | character_set_system | utf8 |
    | character_sets_dir | /usr/share/mysql-8.0/charsets/ |
    +--------------------------+--------------------------------+
    8 rows in set (0.01 sec)

    使用Navicat访问,由于使用的是mysql最新版本,mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password,加密方式变了

      alter user 'root'@'%' identified by 'KMSD2016064' password expire never; 改变加密方式

      alter user 'root'@'%' identified with mysql_native_password by 'KMSD2016064'; 更新用户密码

      flush privileges;

    正常情况下我们不会把root暴露出去,所以需要创建新的用户

      create user 'jesen'@'%' identified by 'KMSD2016064';

      grant all privileges on *.* to 'jesen'@'%';

      alter user 'jesen'@'%' identified with mysql_native_password by 'KMSD2016064';

    三、官方参考

      字符集编码和创建用户密码也可以在docker run 的时候指定,具体可参考 https://dev.mysql.com/doc/mysql-installation-excerpt/5.7/en/docker-mysql-more-topics.html:

      docker run -d -p 3306:3306 -e MYSQL_USER="test" -e MYSQL_PASSWORD="password" -e MYSQL_ROOT_PASSWORD="password" --name [Name] [ImageName] --character-set-server=utf8 --collation-server=utf8_general_ci
  • 相关阅读:
    Jquery.validate.js表单验证插件的使用
    UEditor编辑文章出现多余空行问题的解决办法
    jQuery问题:$XXX is not a function
    PHP+memcache扩展(集成环境wampserver环境下)
    Provider 错误 '80004005' 未指定的错误 /conn.asp,行 23
    PHP+MD5
    Mysql(Mariadb) 基础操作语句 (持续更新)
    什么是存储引擎以及不同存储引擎特点
    微信网页授权(OAuth2.0) PHP 源码简单实现
    字符集和字符集编码详解
  • 原文地址:https://www.cnblogs.com/jesen1315/p/11168746.html
Copyright © 2020-2023  润新知