docker方式部署mysql5.7

docker安装mysql

  1. 拉取mysql镜像
docker pull hub.c.163.com/library/mysql:5.7
  1. 重命名镜像名
docker tag hub.c.163.com/library/mysql:5.7 mysql:5.7
  1. 创建容器且安装镜像.启动。
docker run --name mysql-main -p3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
#-name:容器名称mysql-main
#-p:将端口号映射到主机
#-e MYSQL_ROOT_PASSWORD mysql密码123456
  1. 通过命令进入mysql-main容器
docker exec -it mysql-main bash
  1. 设置mysql远程的授权信息
    mysql -uroot -p
grant all privileges on *.* to root@"%" identified by "root" with grant option;
  
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';

flush privileges;
  1. 设置Mysql查询忽略大小写
    进入docker的MySQL容器,编辑/etc/mysql/mysql.conf.d/mysqld.cnf文件
    修改完成后重启容器 sudo docker restart
    在[mysqld]下添加如下:
[mysqld] 
lower_case_table_names=1
  1. Mysql5.7的查询问题
    Expression:SELECT list is not in GROUP BY clause and contains nonaggregated column
    MySQL 5.7.5实现了对功能依赖的检测。认情况下启用了only_full_group_by SQL模式,那么MySQL就会拒绝选择列表、条件或顺序列表引用的查询
#进入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'
  1. Mysql5.7修改密码
update mysql.user set authentication_string=password('root') where user='root' 
  1. 启动docker中 MySQL参数含义
--restart=always #跟随docker启动
--privileged=true #容器root用户享有主机root用户权限
-v #映射主机路径到容器
-e MYSQL_ROOT_PASSWORD=root #设置root用户密码
-d #后台启动
--lower_case_table_names=1 #设置表名参数名等忽略大小写

你可能感兴趣的:(容器,docker,mysql)