docker下安装mysql
docker安装mysql
#1.mysql5.7:不挂载 配置文件、data和日志到宿主机 docker run -itd --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:5.7.33 --lower_case_table_names=1 #2.mysql5.7:配置文件、data和日志挂载方式运行容器 docker run --name mysql5.7 -p 3306:3306 -v /Users/ux/Applications/docker/mysql5.7/data:/var/lib/mysql -v /Users/ux/Applications/docker/mysql5.7/conf:/etc/mysql/conf.d -v /Users/ux/Applications/docker/mysql5.7/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=12306 -d mysql5.7:config_v1 ============================================================================================ #1.mysql8:不挂载 配置文件、data和日志到宿主机 docker run -itd --name mysql8 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:8.0.25 --lower_case_table_names=1 #2.mysql8:配置文件、data和日志挂载方式运行容器 docker run --name mysql8.0 -p 3307:3306 -v /Users/ux/Applications/docker/mysql8/data:/var/lib/mysql -v /Users/ux/Applications/docker/mysql8/conf:/etc/mysql/conf.d -v /Users/ux/Applications/docker/mysql8/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=12306 -d mysql8:config_v1 lower_case_table_names=1: 设置不区分大小安装时没设置不区分大小写的补救措施:
或者在mysql安装后再修改: 1.进入 docker 容器 mysql docker exec -it mysql /bin/bash 2.配置镜像源安装 VIM mv /etc/apt/sources.list /etc/apt/sources.list.bak ---可缺省的异步 apt-get update apt-get install vim apt-get update,这个命令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。 等更新完毕以后再敲命令:apt-get install vim命令即可 3.编辑/etc/mysql/mysql.conf.d/mysqld.cnf 文件 #[mysqld]后添加 lower_case_table_names=1 4、重启应用 #容器中执行 service mysql restart #或者退出容器直接重启mysql容器 docker restart mysql #或者通过docker客户端手动操作默认字符集修改
打开终端执行命令: docker exec -it mysql /bin/bash 进入/etc,执行ls -a 查看有没有my.cnf文件,没有则创建my.cnf: vim /etc/my.cnf ,输入计算机管理员密码,创建my.cnf文件,并复制 [client] default-character-set=utf8 [mysqld] character-set-server=utf8 按下esc按键,输入:wq保存退出即可。 重启mysql服务,OK。MySQL-this is incompatible with sql_mode=only_full_group_by错误解决方案
一、查看sql_mode的语句如下
select @@GLOBAL.sql_mode;二、解决方案一:
sql语句暂时性修改sql_mode。重启mysql数据库服务之后,ONLY_FULL_GROUP_BY还会出现。 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 解决方案2. 需修改mysql配置文件,通过手动添加sql_mode的方式强制指定不需要ONLY_FULL_GROUP_BY属性, my.cnf位于etc文件夹下,vim下光标移到最后,添加如下: sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
mysql服务设置远程连接 解决1251 client does not support问题
虽然在mysql容器安装启动时已经设置过密码为123,但是只能在命令行通过123登录,navicat依然无法登陆:
docker容器初始化时设置密码为123: docker run -itd --name mysql8 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123 mysql:8.0.25 --lower_case_table_names=1 1.先从docker容器里登录mysql mysql -u root -p 2.查看用户信息 select host,user,plugin,authentication_string from mysql.user; 注意:host为 % 表示不限制ip localhost表示本机使用 plugin非mysql_native_password 则需要修改密码!!! 3.修改用户密码 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123'; #更新一下用户的密码 root用户密码为123 4.再次使用navicat即可连接更改容器自启动
设置开机启动mysql (mysql8为我的mysql容器名)
docker update mysql8 --restart=always关闭开机启动mysql (mysql8为我的mysql容器名)
docker update mysql8 --restart=no基于mysql原有镜像,增加配置文件后的容器,制作新镜像并运行
mysql5.7
1.以commit方式制作新镜像
1
docker commit -a "uxawseny" -m "mysql with config" 2c974cde0cac mysql5.7:config_v1
2.将容器中MySQL的3306端口映射到本地的3306端口,挂载宿主机目录到容器目录,并设置登录密码为:123
1
docker run --name mysql5.7 -p 3306:3306 -v /Users/ux/Applications/docker/mysql5.7/data:/var/lib/mysql -v /Users/ux/Applications/docker/mysql5.7/conf:/etc/mysql/conf.d -v /Users/ux/Applications/docker/mysql5.7/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql5.7:config_v1
mysql8
1.以commit方式制作新镜像
1
docker commit -a "uxawseny" -m "mysql8 with config" 【6ed746769e85容器id】 mysql8:config_v1
2.将容器中MySQL的3306端口映射到本地的3307端口,挂载宿主机目录到容器目录,并设置登录密码为:123
1
docker run --name mysql8.0 -p 3307:3306 -v /Users/ux/Applications/docker/mysql8/data:/var/lib/mysql -v /Users/ux/Applications/docker/mysql8/conf:/etc/mysql/conf.d -v /Users/ux/Applications/docker/mysql8/logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql8:config_v1
cmooit方式不会存储mysql中创建的库数据:
更改容器为自动启动
1 | docker update --restart=always [容器名或容器ID] |