docker pull mysql
docker pull mysql:8.0.28 带版本
运行mysql命名容器名称为mysqe并且设置root账号初始密码为root
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=“root” mysql
参数说明: docker run:运行docker容器命令
–name mysql :给容器设置别名
-p 3306:3306:将容器的3306端口映射到宿主机的3306端口
-e MYSQL_ROOT_PASSWORD=你的密码 : 初始化root用户登录密码
-d : 后台运行容器,并返回容器id mysql:8.0.18:也可以使用镜像id,就是image ID
-v 挂载文件或目录 :前表示主机部分,:后表示容器部分。
–name=“名字” 指定容器名字
-d 后台方式运行
-it 使用交互方式运行,进入容器查看内容
-p 主机端口:容器端口
docker exec -it 容器id /bin/bash
查找Docker内,MySQL配置文件my.cnf的位置 mysql --help | grep my.cnf
创建本地文件夹
mkdir -p /home/docker/mysql/conf && mkdir -p /home/docker/mysql/data && mkdir -p /home/docker/mysql/logs
chmod -R 777 /home/docker/*
执行下面命令进入到conf 目录中,并在该目录中创建my.cnf配置文件
cd conf
touch my.cnf
# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# The MySQL Server configuration file.
#
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html
[mysqld]
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
datadir = /var/lib/mysql
secure-file-priv= NULL
default-time-zone = '+8:00'
#最大链接数
max_connections=1024
#是否对sql语句大小写敏感,1表示不敏感
lower_case_table_names=1
log_bin_trust_function_creators=1
#启用log-bin
log-bin=mysql-bin
#设置日志格式
binlog_format=mixed
#设置binlog清理时间
expire_logs_days=7
# 数据表默认时区
default-time-zone='+08:00'
# Custom config should go here
!includedir /etc/mysql/conf.d/
docker cp mysql:/etc/mysql/my.cnf /home/docker/mysql/conf
· --name:为容器指定一个名字
· -p:指定端口映射,格式为:主机(宿主)端口:容器端口
· -e:username=“xxx”,设置环境变量
· --restart=on-failure:3:是指容器在未来出现异常退出(退出码非0)的情况下循环重启3次
· -mount:绑定挂载
· -d:后台运行容器,并返回容器 id
docker run -p 3306:3306 --name mysql -v /home/docker/mysql/logs:/var/log/mysql -v /home/docker/mysql/data:/var/lib/mysql -v /home/docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --restart=always --privileged=true -d mysql:8.0.28
docker stop 容器id
docker rm容器id
docker update mysql --restart=always
查看容器运行状态:
docker ps -a | grep 容器id
查看最后200条日志
docker logs --tail=200 容器id
滚动监听
docker logs -f 容器id
1、进入容器
docker exec -it 容器id bash
2、登录mysql
mysql -u root -p
3、使用mysql数据表
use mysql;
4、修改密码
ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘密码’;
5、刷新权限
flush privileges;
6、quit; (然后退出Mysql)
(解决mysql Operation ALTER USER failed for ‘root’@’%')
1、进入容器
docker exec -it 容器id bash
2、登录mysql
mysql -u root -p
3、使用mysql数据表
use mysql;
4、查看user表中的数据:
select Host, User from user;
localhost 为本地登录
6、修改user表中的Host:
update user set Host=‘%’ where User=‘root’;
说明: % 代表任意的客户端,可替换成具体IP地址。
注意:一定要记得在写sql的时候要在语句完成后加上" ; "