前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker mysql-8.0.28

docker mysql-8.0.28

原创
作者头像
木易三水良
修改2022-03-17 09:41:06
1K0
修改2022-03-17 09:41:06
举报
文章被收录于专栏:木易三水良

配置命令解析:

代码语言:javascript
复制
# docker从仓库中拉取最新版的mysql镜像,如果没加标签的话,默认获取最新的版本
Docker pull mysql

# 创建挂载的目录,最好创建在home目录下,否则可能会有管理员访问权限的问题,因为docker容器中是普通用户
mkdir -p /home/docker/mysql/conf && mkdir -p /home/docker/mysql/data

# 把mysql临时运行起来,这时候mysql是还没有挂载数据卷的,为了取出 my.cnf文件
docker run --name mysqltest -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql

# 复制my.cnf文件到本地目录,取出之后之前的运行的mysql容器就可以删除了
docker cp mysqltest:/etc/mysql/my.cnf /home/docker/mysql/conf

# 启动mysql挂载数据卷,
docker run --name mysql \
-p 3306:3306 \
# 提升容器内权限,如果没有添加--privileged=true参数,容器创建后不能正常启动,查看日志发现有权限的错误
--privileged=true \
# 映射配置文件
-v /home/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf  \
# 映射数据目录
-v /home/docker/mysql/data:/var/lib/mysql  \
# 映射日志目录
-v /home/docker/mysql/log:/var/log/mysql \
# 这个挂卷必须添加,否则在启动的时候会报找不到这个文件错误
-v /home/docker/mysql/mysql-files:/var/lib/mysql-files \
-e TZ=Asia/Shanghai \
# 添加用户muyisanshuiliang
-e MYSQL_USER="muyisanshuiliang" \
# 设置用户muyisanshuiliang密码
-e MYSQL_PASSWORD="123456" \
# 设置root用户密码
-e MYSQL_ROOT_PASSWORD="123456" \
# --restart=on-failure:3是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
# --restart=always 一直重启
--restart=on-failure:3 -d \
# 启动的镜像名称
mysql:latest \
# 设置字符集,如果在配置文件中做了配置,此处可以不写
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_general_ci

# 如果远程访问不了,则进行以下操作,进入容器中,设置远程访问
docker exec -it mysql bash

# 登录mysql
mysql -uroot -p123456
# 切换到mysql数据库
use mysql;
# 查询user表,如果有两个root用户,删除掉host=%的root数据,再修改localhost为%
select host, user, authentication_string, plugin from user;
delete from user where host="%" and user="root";
# 设置允许使用root用户访问数据库的主机名称,%表示能使用所有的主机使用root用户访问
update user set host = '%' where user = 'root';
# 设置root用户密码,mysql_native_password表示密码认证的插件
alter user 'root'@'%' identified with mysql_native_password by '123456';
# 立即生效
FLUSH PRIVILEGES;

my.cnf 配置文件信息

代码语言:javascript
复制
[mysqld]
user=mysql
character-set-server=utf8
default_authentication_plugin=mysql_native_password

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

操作步骤:

代码语言:javascript
复制
mkdir -pm 777 /usr/local/docker/mysql
mkdir -pm 777 /usr/local/docker/mysql/conf
mkdir -pm 777 /usr/local/docker/mysql/logs
mkdir -pm 777 /usr/local/docker/mysql/data
mkdir -pm 777 /usr/local/docker/mysql/mysql-files

docker cp mysql:/etc/my.cnf /usr/local/docker/mysql/conf/my.cnf
docker pull mysql
# --privileged=true:授予管理员权限
docker run -p 3306:3306 --privileged=true \
--name mysql-8.0.28 \
-v /home/docker/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-v /home/docker/mysql/conf:/etc/mysql  \
-v /home/docker/mysql/logs:/var/log/mysql \
-v /home/docker/mysql/mysql-files:/var/lib/mysql-files \
-v /home/docker/mysql/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档