Docker安装MySql

目前都是root用户创建,然后一般企业也是喜欢用docker-compose创建,不是直接命令行,不好记录

创建挂载目录,为下面的配置做铺垫

mkdir -p  /home/docker_con_data/mysql_data
cd /home/docker_con_data/mysql_data
# mkdir -p /home/docker_con_data/mysql_data && cd "$_" #上面两步可简写,然后目录可改成自己的
mkdir conf data logs  #创建三个目录

(可选一) 通过docker-compose 安装

cd /home/docker_con_data/mysql_data/conf && vim my.cnf

创建my.cnf 配置文件

[mysqld]
# 启用二进制日志功能
log-bin=mysql-bin
binlog_format=ROW
server-id=1

# 设置表名不区分大小写
lower_case_table_names=1

:wq

创建docker-compose.yml

cd /home/docker_con_data/mysql_data && vim docker-compose.yml

version: '3.0'
services:
  mysql:
    image: container-registry.oracle.com/mysql/community-server:9.0
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - /home/docker_con_data/mysql_data/conf/my.cnf:/etc/my.cnf
      - /home/docker_con_data/mysql_data/logs:/var/log/mysql
      - /home/docker_con_data/mysql_data/data:/var/lib/mysql
    restart: unless-stopped
    privileged: true
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: mydatabase2024
      MYSQL_USER: user
      MYSQL_PASSWORD: 123456

:wq sudo docker-compose -f /home/docker_con_data/mysql_data/docker-compose.yml down #停止并删除现有容器 sudo docker-compose -f /home/docker_con_data/mysql_data/docker-compose.yml up -d

(可选二) 快速安装(不推荐,没有挂载,删除容器数据丢失)

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d container-registry.oracle.com/mysql/community-server:9.0

其他命令参考

停止容器:sudo docker stop mysql
删除容器:sudo docker rm mysql

查看日志:sudo docker logs mysql
查看挂载:sudo docker inspect mysql
查看密码:sudo docker logs mysql 2>&1 | grep GENERATED
登录数据库:sudo docker exec -it mysql mysql -uroot -p,输入刚才查看的密码
修改密码:ALTER USER 'root'@'localhost' IDENTIFIED BY '你的密码';
获取容器Shell:sudo docker exec -it mysql bash


远程连接
登录数据库:sudo docker exec -it mysql mysql -u root -p
切换数据库:use mysql
查看用户:select host,user from user;
允许远程:update user set host = '%' where user = 'root';
刷新权限:flush privileges;