mySQL镜像的运行和检查

mySQL镜像的启动,同时加载自己的.sql文件

同目录下创建init-scripts文件下,该文件夹下放自己的.sql文件
一、创建docker-compose.yml文件

version: '3.8'
services:
  mysql:
    image: mysql:8.0.39
    container_name: test-mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: advance
      MYSQL_USER: user
      MYSQL_PASSWORD: password
    ports:
      - "3306:3306"
	volumes:
	  - ./mysql-data:/var/lib/mysql
	  - ./init-scripts:/docker-entrypoint-initdb.d  # 将 advance.sql 放在此目录
    command: --default-authentication-plugin=mysql_native_password    

二、运行docker-compose.yml,创建mysql的容器
docker-compose up -d
-d: 后台运行

验证 MySQL 容器启动后各项信息的详细步骤:

一、验证容器运行状态
docker ps -f name=test-mysql
预期输出:显示容器状态为 Up,端口映射正确 (0.0.0.0:3306->3306/tcp)

失败处理:若容器未运行,检查日志:
docker logs test-mysql

二、验证数据库初始化

  1. 进入容器内 MySQL 命令行
    docker exec -it test-mysql mysql -uuser -ppassword

  2. 检查数据库是否存在
    SHOW DATABASES;
    预期输出:包含 advance 数据库

  3. 验证数据表初始化
    USE advance;
    SHOW TABLES;
    预期输出:显示 advance.sql 中定义的表格

  4. 检查数据内容(可选)
    SELECT * FROM your_table LIMIT 5;# 替换为实际表名

三、验证用户权限

  1. 查看用户权限
    SHOW GRANTS FOR 'user'@'%';
    预期输出:显示用户对 advance 数据库的完整权限(如 GRANT ALL PRIVILEGES ON advance.* TO 'user'@'%'

  2. 测试用户连接
    从宿主机连接测试
    mysql -h127.0.0.1 -P3306 -uuser -ppassword -e "STATUS"
    预期输出:显示连接成功信息

四、验证网络连接

  1. 检查端口映射
    netstat -tuln | grep 3306
    预期输出:tcp6 0 0 :::3306 ::😗 LISTEN

  2. 跨容器网络测试
    启动一个临时测试容器
    docker run --rm -it --network host mysql:8.0.39 mysql -h127.0.0.1 -uuser -ppassword -e "STATUS"
    预期输出:显示连接成功信息

五、验证数据持久化

  1. 删除容器后重新启动
    docker-compose down -v && docker-compose up -d

  2. 检查数据保留

USE advance;
SHOW TABLES;  # 应仍然显示之前创建的表格

六、高级验证(可选)

  1. 检查初始化脚本日志
    docker logs test-mysql | grep "Running scripts"
    预期输出:显示 advance.sql 文件执行记录

  2. 性能测试
    docker exec test-mysql mysqlslap -uuser -ppassword --concurrency=5 --iterations=10 --auto-generate-sql

连接数据库

  1. Python

    PyMySQL: 纯 Python 实现的驱动

    import pymysql
    conn = pymysql.connect(host='localhost', user='root', 	password='123456', database='test')
    
  2. SQLAlchemy (ORM):

    from sqlalchemy import create_engine
    engine = create_engine('mysql+pymysql://user:pass@host/db')
    
  3. 标准格式
    mysql+pymysql://<username>:<password>@<host>:<port>/<database>?charset=utf8mb4

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐