Docker安装Mysql 8.0
简介
Docker安装Mysql 8.0
前提
已安装 docker
查看可用的Mysql镜像版本
登陆 https://hub.docker.com/
搜索 mysql
,切换到tag标签,找到 mysql8.0
复制箭头的命令
拉取镜像
docker pull mysql:8.0
查看镜像
docker images
启动Mysql镜像
docker run -itd --name mysql-8 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0
参数说明:
–name mysql-8:所建容器的名称
-p 3307:3306 :映射容器服务的 3306 端口到宿主机的 3307 端口,外部主机可以直接通过 宿主机ip:3307 访问到 MySQL 的服务。
MYSQL_ROOT_PASSWORD=123456:设置 MySQL 服务 root 用户的密码
mysql:8.0:使用的镜像,即镜像名:tag
启动后:查看容器
docker ps
进入镜像
docker exec -it mysql-8 /bin/bash
登陆Mysql
mysql -uroot -p
默认密码一般是123456
切换数据库
use mysql
查看用户数据
select host,user,plugin from user;
删除多余的行
delete from user where user ='root' and host='%';
设置所有host都可以访问
update user set host='%' where user ='root';
修改加密方式
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
刷新
FLUSH PRIVILEGES;
问题
ERROR 1040 (HY000): Too many connections
mysql8默认连接数不够了.
方法一
这种方法重启mysql会失效
进入容器
docker exec -it mysql-8 sh
进入mysql
mysql -hlocalhost -uroot -p12345
查看最大连接数
SHOW VARIABLES LIKE 'max_connections';
当前状态的连接数量
show global status like 'Max_used_connections';
修改连接数 (重启mysql服务后会失效)
set global max_connections=1000;
方法二
把容器里面的配置文件拷贝出来
docker cp mysql-8:/etc/my.cnf /www/wwwroot/sh/mysql8/etc/my.cnf
修改本地的配置文件my.cnf
[mysqld]
max_connections=1000
修改的时候注意,max_connections=1000
要在[mysqld]
下面,不然可能不生效.
拷贝到容器中,并重启
docker cp /www/wwwroot/sh/mysql8/etc/my.cnf mysql-8:/etc/my.cnf
docker restart mysql-8
时区问题
我们通常在创建Mysql容器时忘记选择时区,这时docker就会默认给我们选择UTC时区。我们这时又不想删掉这个容器,所以我们需要修改mysql中的时区。
进入mysql命令行:
select now();
查看时间是否有差,如果有在配置文件中加入如下配置:
[mysqld]
# 其他配置...
default-time-zone = '+8:00'
然后用如上方法二,重启容器