docker 安装mysql8.0.29
1、拉取镜像
#docker pull mysql:8.0.29
2、启动容器
#docker run -p 3306:3306 --name mysql8.0.29 -e MYSQL_ROOT_PASSWORD=root -d mysql:8.0.29
-p 将本地主机的端口映射到docker容器端口(因为本机的3306端口已被其它版本占用,所以使用3307)
--name 容器名称命名
-e 配置信息,配置root密码
-d 镜像名称
注意:-d放在前面就启动不了mysql服务,容器可以起来,容器里面的mysql服务没起来。不知道为啥,知道的吱一声
不需要做目录映射的直接到第3步
创建目录
#mkdir -p /data/mysql/{etc,data,logs}
拷贝配置文件
#docker cp mysql:/etc/mysql /data/mysql/etc/
删除容器
#docker stop mysql
#docker rm mysql
启动容器
注意:mysql8之后,初始化数据库之后不能修改大小敏感,如果要设置的话启动容器时就要设置,否者删除数据,重新初始化数据库
docker run -p 3306:3306 --name mysql --privileged=true -v /data/mysql/etc/mysql:/etc/mysql -v /data/mysql/logs:/logs -v /data/mysql/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.29 --lower_case_table_names=1
-p 端口映射
--privileged=true 挂载文件权限设置
-v /data/mysql/etc/mysql:/etc/mysql 挂载配置文件
-v /data/mysql/logs:/logs \ 挂载日志
-v /data/mysql/data:/var/lib/mysql \ 挂载数据文件 持久化到主机,
-v /etc/localtime:/etc/localtime 容器时间与宿主机同步
-e MYSQL_ROOT_PASSWORD=123456 设置密码
-d mysql:8.0.29 后台启动,mysql
--lower_case_table_names=1 1:大小写不敏感,默认0::区分大小写
3、登录mysql容器
#docker exec -it mysql8.0 bash
4、登录容器中的mysql
#mysql -uroot -p
注意:-uroot 之间不能有空格,踩坑记录
使用navicat访问数据库
>use mysql;
>UPDATE user SET HOST = '%' WHERE USER ='root';
失败,查看user表
>select host,user,plugin from user;
root的host已经是%,跳过
>ALTER user 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
>ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
>FLUSH PRIVILEGES;
打开navicat,填写信息