zoukankan      html  css  js  c++  java
  • docker mysql

    1 拉取mysql镜像,采用网易加速地址
    docker pull hub.c.163.com/library/mysql:5.7
    2 重命名镜像名
    docker tag hub.c.163.com/library/mysql:5.7 mysql:5.7
    3 创建容器且安装镜像.启动。
    docker run --name mysql-main -p3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    -name:容器名称mysql-main
    -p:将端口号映射到主机
    最后设置密码123456
    4 通过命令进入mysql-main容器
    docker exec -it mysql-main bash
    5 然后进入MySQL。并设置远程的授权等信息。
     mysql -uroot -p
     
     grant all privileges on *.* to root@"%" identified by "123456" with grant option; 
     
     ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
      
     flush privileges;
      
    6 取消Mysql查询大小写的问题。
    进入docker的MySQL容器,编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,在[mysqld]下添加如下:
    [mysqld] 
    lower_case_table_names=1
    保存,退出容器;执行sudo docker restart MySQL ,重启MySQL即可查看。
    7 解决Mysql5.7的查询兼容问题。此设置重启失效。
    如:Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
    MySQL 5.7.5和up实现了对功能依赖的检测。如果启用了only_full_group_by SQL模式(在默认情况下是这样),那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询,这些查询将引用组中未命名的非聚合列,而不是在功能上依赖于它们。(在5.7.5之前,MySQL没有检测到功能依赖项,only_full_group_by在默认情况下是不启用的。
    
    解决方案1:
    
    set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    
    set session sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
    
    
    解决方案2(写配置文件,重启不失效。去除NO_ZERO_IN_DATE,NO_ZERO_DATE,解决时间戳的问题):
    
    进入docker的MySQL容器,编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件,在[mysqld]下添加如下:
    
    sql-mode='STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
    
    
    8 解决Mysql5.7的密码修改不兼容问题。
    Mysql5.7更改密码,以前的方式会报错。代码如下:
    
    update mysql.user  set password=password('root') where user='root'
    
    提示ERROR 1054 (42S22): Unknown column 'password' in 'field list'
    
    最新的更改密码代码是:
    
    update mysql.user set authentication_string=password('root') where user='root' 
    备注:
    启动docker中 MySQL的时候可以加参数。含义是:
     
    --restart=always 跟随docker启动
    --privileged=true 容器root用户享有主机root用户权限
    -v 映射主机路径到容器
    -e MYSQL_ROOT_PASSWORD=root 设置root用户密码
    -d 后台启动
    --lower_case_table_names=1 设置表名参数名等忽略大小写
  • 相关阅读:
    C语言与汇编的嵌入式编程:统计字符串中各字符出现的次数
    一个汇编小demo
    C语言与汇编的嵌入式编程:求100以内素数
    TCP网络调试助手上提示错误:“1035 未知错误”的有效解决方法,本人实测确实可行
    一个支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱
    DRM(device resource management)介绍
    TODO
    pinctrl(1)——pinctrl子系统的使用
    GPIO使用总结
    Gerrit使用技巧
  • 原文地址:https://www.cnblogs.com/xiangzideheiniu/p/11804156.html
Copyright © 2011-2022 走看看