database-mysql
  LO8hNSnQb2Xy 2023年11月13日 31 0

一.docker在线安装mysql

(一)windows安装docker

1.官网  官网镜像registry不能打开 国内阿里云镜像
  1. Docker Desktop Installer.exe(572M)安装自动配置环境变量 安装后有多个目录:
  2. C:\Program Files\Docker\Docker\resources\bin (自动配置环境变量)
  3. C:\Users\Administrator\AppData\Local\Docker\wsl\data\ext4.vhdx (软件虚拟存放位置 )
  4. C:\Users\Administrator\.docker
  5. 运行C:\Program Files\Docker\Docker\Docker Desktop.exe ( 启动 docker程序)
  6. Windows Docker 配置国内镜像源的两种方法 - 槑孒 - 博客园

(二)动力节点Docker入门到进阶教程,docker全家桶实战攻略

1.overview
  • Docker首发版本架构:两个核心组件LXC=linuxContainer和DockerDaemon
  • Docker0.9版本:Libcontainer工具替换依赖LXC DockerD大而全运行慢功能扩展难
  • Docker1.1:符合OpenContainerInstitute1.0版本规范 DockerD(forkRunc容器)
  • Docker大版本分三类:Moby 社区版Docker-CommunityEdition 企业版Docker-EnterpriseE
  • Docker小版本: Edge月版 Stable季版
  • C:\Windows\System32\drivers\etc 本机网络配置 如本机DNS
  • 官网免费下载MobaXterm=相当xshell一样SSH调用服务器
  • 按照docker官网指引 安装centos7虚拟机 并安装docker引擎 阿里云docker软件镜像源
  • 阿里云官网支付宝登录 搜索容器镜像服务器并开通_镜像工具_镜像加速器
  • docker version -f "{{json.}}" ; docker version -f "{{.Server.Version}}"
2.docker命令 PowerShell/cmd
  1. docker info ; docker -v ; docker --version ; docker version
  2. docker version -f {{.Server.Version}} ;docker version --format {{.Client.Version}}
  3. docker pull hello-world ; docker images
  4. docker run hello-world (该容器一次性运行就结束了) ; docker ps -a (显示该容器系统取名)
  5. docker run --name hello1 hello-world (给容器自定义称称) ; docker ps ; docker ps -a
  6. docker pull ubuntu ;docker images;docker run --name myubuntu ubuntu (一次run就end)
  7. docker rm myubuntu; docker run --name myubuntu ubuntu /bin/bash (也一次run就over)
  8. docker rm myubuntu; docker run -i -t --name myubuntu ubuntu  /bin/bash ; exit
  9. docker rm myubuntu;docker run --name myubuntu -it ubuntu /bin/sh(Interactive terminal)
  10. vi ; wget ; ifconfig ; ls (很多命令不能使用) ; 打开另一个cmd: docker ps (myubuntu运行);
  11. exit; docker ps (myubuntu关机容器 docker stop myubuntu) ; docker ps -a;
  12. docker rm myubuntu; docker run --name myubuntu -it (有些docfile文件默认执行“bash”);
3.PowerShell/cmd
  1. docker pull tomcat:8.5.49 (8.5.32 8.5.50 不要使用运行不正常 可以pull该镜像测试)
  2. docker run --name mytom -it tomcat:8.5.49 /bin/bash ;(bash方式运行 另一cmd发现运行)
  3. http://localhost:8081/ (访问=宿主机浏览器无法访问 容器虽bash运行 但还没有对外提供服务)
  4. exit (该容器关机运行=docker stop mytom); docker rm mytom(删除容器)
  5. docker run --name mytom -it tomcat:8.5.49; http://localhost:8081/(访问=仍不能访问)
  6. ctrlC(关机容器); 删容器; dokcer run --name mytom -p 8081:8080 -it mytomcat:8.5.49; 可访问
  7. 关容器; docker run -p 8081:8080 --name mytom  -d -it tomcat:8.5.49 ; 可访问
  8. 关删docker run -P --name mytom -d -it tomcat:8.5.49(P系统自动分配映射端口docker ps); 可访
  9. 关删docker run -p 8081:8080 -d tomcat:8.5.49 可访 (-it删伪终端dockerfile默认catalina.sh)
  10. 关删docker run -p8081:8080 --name mytom tomcat:8.5.49 ; (linux=ctrl+p+q win=?) ; 可访
  11. 关删后台-d运行mytom容器8081; docker exec -it /bin/bash;exit; docker exec -it mytom ip a (pwd)
4.ExitedUp cp
  1. 停删ubuntu容器 docker run --name myubun -it ubuntu:latest /bin/bash; exit
  2. docker run --name myubun2 -d ubuntu ; docker ps -a (1容器停止Exited 2容器up运行)
  3. docker top myubun2 ; docker top myubun
  4. F:\Program Files (x86)\dockerdic> docker cp a1.txt myubun2:/root
  5. F:\Program Files (x86)\dockerdic> docker cp myubun2:/root/a1.txt a2.txt
  6. docker rm -f $(docker ps -q) #这是linux全部删除容器命令 windows如何批删?
5.Centos commit export import
  1. 配置国内镜像源docker pull centos:7 ; docker run --name mycentos7 -it centos:7 /bin/bash
  2. ifconfig(不能运行);yum -y install net-tools; ifconfig; exit
  3. docker commit --help;
  4. docker commit -a"zs <zs@qq.com>" -m"AddedNet-tools" mycentos7 mycentos7_c_image:net-tools
  5. docker run --name mycentos7-2 -it mycentos7_c_image:net-tools /bin/bash ; ifconfig(能用) ;exit
  6. docker inspect mycentos_c_image:net-tools
  7. F:\Program Files (x86)\dockerdic> docker export -o mycentos7.tar mycentos7
  8. docker import mycentos7.tar mycentos7_image_import:net-tools; 再运行该镜像容器; ifconfig;exit
  9. docker sysmem prune (移除停止容器无名称镜像cache); docker stop/start/restart/pause/unpause 容器
5.docker装centos7和centos7再装docker(docker官网centos)
  1. docker pull centos:7 ;
  2. docker run --privileged=true -d -it --name mycentos_docker -it centos:7 /bin/bash (-it不能省略)
  3. docker attach mycentos_docker ; yum install -y yum-utils ;
  4. yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.rep
  5. 复制出现问题 退出重登 分段复制 或者 cmd 宽度变长来输入
  6. yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
  7. 练习安装但并不能运行 docker images?
6.gcc gcc++
  1. 停删所有容器docker system prune ; docker stop/rm 容器; docker rmi 不需要镜像
  2. docker run -d -it --name mycentos centos:7 /bin/bash ; docker attach mycentos(容器同一进程再进)
  3. yum install -y net-tools gcc gcc-c++ glibc-static vim ; pwd ; mkdir cProject ;
  4. 随意输入中文则清除 证明mycentos7系统可输入中文; echo 中国 ;echo $LANG ; LANG="en_US.UTF-8"
  5. centos vim显示中文乱码怎么办; pwd; mkdir /root/cproject
  6. cd /root/cproject ; vim hello.c (i=insert esc:qw保存退出)
  7. #include<stdio.h>(换行)int main(){printf("中国helloWorld\n");return 0;}
  8. gcc --static -o hello hello.c ; ll ; ./hello (如果出现中文乱码如下可解决)
  9.  iconv -f gbk -t utf8 hello.c -o hello.c ;
  10. gcc --static -o hello hello.c ; ./hello
  11. F:\Program Files (x86)\dockerdic> echo FROM scratch >Dockerfile
  12. echo ADD hello />>Dockerfile &echo CMD "/hello" >>Dockerfile

(二)镜像容器

1.创建1个镜像及容器
  1. docker search mysql ; docker inspect mysql
  2. docker pull mysql:latest (安装最新版本mysql镜像 目前是8.10版本)
  3. docker images ; docker inspect mysql ; docker inspect mysql:latest
  4. docker images mysql:latest ; docker manifest inspect mysql
  5. docker history --help ; docker history -q mysql:latest
  6. docker run -p 3307:3306 --name mysql810 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
  7. docker ps (正在运行状态) ; docker ps -a (所有状态包括死亡)
  8. docker exec -it mysql810 bash (进入容器) mysql -uroot -p123456; exit; exit
  9. docker stop mysql810
  10. docker rmi -f image mysql810
  11. docker images
2.删除所有容器及镜像
  1. docker ps (查看所有容器container 正在运行状态 process state)
  2. docker container ps (命令同上-简化命令)
  3. docker pull mysql:latest (安装最新版 mysql)
  4. docker rm mysql810 (不存在报错 Error response from daemon:No such container:mysql810)
  5. docker stop mysql810 (先停止后移除容器); docker start mysql810
  6. docker rm mysql810 (删除容器名称)
  7. docker ps -a (包括所有已停止运行的容器) ; docker rm 其它镜像名称 ; docker ps -a (空为止)
  8. docker container rm mysql810 (命令同上)
  9. docker rmi --help
  10. docker rmi -f image mysql810
  11. docker images
3.重建同镜像不同容器
  1. docker pull mysql:latest ; docker images
  2. docker run -p 3308:3308 --name mysql810-3308 -e MYSQL_ROOT_PASSWORD=1234 -d mysql:latest
  3. docker ps ; docker ps -a ;
  4. docker exec -it mysql810-3308 bash (Interactive terminal进入容器)
  5. mysql -uroot -p1234 ; select @@hostname, @@port (port仍为3306?)
  6. 运行pymysql01 ( port改为3308测试是否可登录 不成功? )
  7. docker ps -a ; docker rm 所有镜像名称; docker ps -a (空为止)
  8. docker run -p 3307:3306 --name mysql810-3307 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
  9. docker run -p 3308:3306 --name mysql810-3308 -e MYSQL_ROOT_PASSWORD=1234 -d mysql:latest
  10. docker ps -a ; docker ps;
  11. 运行pymysql01-client (测试两个在线mysql服务器成功 3307 123456 / 3308 1234)
4.新建新镜像
  1. docker pull mysql:5.6 ; docker images
  2. docker run -p 3309:3306 --name mysql56 -e MYSQL_ROOT_PASSWORD=12 -d mysql:5.6
  3. docker ps ; docker ps -a ; docker exec -it mysql56 bash ; env ; env | grep MYSQL ;
  4. ls ; mysql -uroot -p12 ; show databases ; exit ; exit
  5. docker logs mysql56
  6. docker scout quickview mysql:5.6 ; docker scout quickview
  7. docker search mysql
5.备份容器及数据1失败
  1. 停删所有容器和镜像 docker images rmi  bf7179cff503 (可删镜像名称或者ID)
  2. docker search mysql:latest ; docker search mysql:5.6 ; docker search mysql:5.7
  3. docker pull mysql:latest
  4. docker run -d -p 3307:3308 --name mysql-latest-3307 mysql:latest (设置有错)
  5. docker start mysql-latest-3307 ; docker ps(不能正常启动) ; docker ps -a
  6. docker stop mysql-latest-3307 ; docker rm mysql-latest-3307
  7. docker run -d -p 3307:3308 --name mysql-latest-3307 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
  8. docker exec -it mysql-latest-3307 env LANG=C.UTF-8 mysql -uroot -p123456 (bash)
  9. 上述解决中文不能输入。下面的sql语句 (创studentDB库生成students表) 并退出 exit ;
  10. docker stop mysql-latest-3307 (运行状态的容器不能备份? 如备份运行容器其数据将丢失)
  11. docker commit mysql-latest-3307 mysql-latest-3307-image (容器生成镜像)
  12. docker run -d -p 3308:3306 --name mysql-latest-3307-image-container -e MYSQL_ROOT_PASSWORD=12 mysql-latest-3307-image
  13. docker exec -it mysql-latest-3307-image-container bash (发现 该镜像并没有生成studentDB库?)
  14. docker start mysql-latest-3307 ; 再执行容器(exec)
5.备份容器及数据2失败
  1. docker commit -p mysql-latest-3307 mysql-latest-3307-image2
  2. docker run -d -p 3309:3306 --name mysql-latest-3307-image2-container -e MYSQL_ROOT_PASSWORD=123 mysql-latest-3307-image2
  3. docker stop mysql-latest-3307
  4. docker exec -it mysql-latest-3307-image-container bash(停止mysql-latest-3307运行 仍然没有生成studentDB?)
5.备份容器及数据3
  1. 停删所有容器及镜像 ; docker pull mysql:latest; 运行该镜像容器mysql-latest-3307; 生成studentDB和students表

6.文件生成导出导入镜像
  1. 删除所有容器及镜像; 新建文件 F:\Program Files (x86)\dockerdic\Dockerfile
  2. Dockerfile有2行文字: FROM mysql:latest (换行) ENV MYSQL_ROOT_PASSWORD=123456
  3. docker images ; docker ps -a ;
  4. docker build -t mysql-latest . ( 进入F:\Program Files (x86)\dockerdic目录cmd .代表当前目录 )
  5. docker images ; docker ps -a ;
  6. docker run -d -p 3307:3306 --name mysql810-3307 mysql-latest (-d mysql-image)
  7. docker images ; docker ps -a ;
  8. docker exec -it mysql810-3307 bash; mysql -uroot -p123456 ; exit ; exit
  9. docker exec -it mysql810-3307 mysql -p123456 ; exit ; exit
  10. docker exec -it mysql810-3307 mysql -p ; 123456 (无显示输入) ;
  11. 生成如下面的 sql语句 如建立studentDB库 创建students表 生成多条记录; exit ; exit
  12. docker exec -it mysql810-3307 env LANG=C.UTF-8 /bin/bash (解决docker mysql 中文不能输入问题?)
  13. docker commit mysql810-3307 mysql810-image ; docker images ;
  14. docker run -d -p 3308:3306 --name mysql810-3308 mysql810-image
  15. docker exec -it mysql810-3308 ; mysql -uroot -p123456 (发现没有该库 studentDB 表明不保存数据)
  16. F:\Program Files (x86)\dockerdic> docker save -o mysql8.tar mysql-latest ( 镜像导出到外部文件 )
  17. F:\Program Files (x86)\dockerdic> docker load -i mysql8.tar (也许会计算md5值?)
  18. 停删所有容器和镜像后 docker load -i mysql8.tar ;docker images

(三)pymysql01

import pymysql #若报错需装 pip install cryptography #mysqlClient
conn = pymysql.connect(host="localhost",
                       port=3308,
                       charset="utf8",
                       user="root",
                       password="12"
                     )
if hasattr(conn, "cursor"):
    cursor = getattr(conn, "cursor")()  # cursor=conn.cursor()
    print("【0】显示当前所有数据库:", cursor.execute("show databases;"),cursor.fetchall())
    print("【0】删除数据库studentDB:",cursor.execute(" drop database if exists studentDB; "))
    print("【2】显示所有数据库:", cursor.execute("show databases;"),cursor.fetchall())
    print("【3】重新创库:",cursor.execute(" create database if not exists studentDB character set utf8;"))
    print("【4】使用当前数据库:",cursor.execute("use studentDB;"))
    print("【5】新增后的所有数据库:", cursor.execute("show databases;"))
    for i,db in enumerate(cursor.fetchall()):
        print("\t",i+1,db)
    print("【6】游标已取完无数据:",cursor.fetchall())
    cursor.close()
conn.close()
# Python311\Lib\site-packages\pymysql

(四)mysql-connector-python

import mysql.connector  # pycharm 上述安装不是mysql模块 #mysqlClient
# pycharm 右键提示安装模块为 mysql-connector-python

conn = mysql.connector.connect(host="localhost",port=3307,user="root",
    password="123456",database="studentDB") ## 连接数据库
cursor = conn.cursor()# 创建游标
# 创建表格
sql="CREATE TABLE IF NOT EXISTS users (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255), age INT)"
cursor.execute(sql)
# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 25)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 30)")
conn.commit() #如果未提交 则数据库不能持久化生成数据 属于数据库的 瞬时态?
# 查询数据
cursor.execute("SELECT id, name, age FROM users;")
for row in cursor.fetchall():
    print(f"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}")
# 关闭游标和连接
cursor.close()
conn.close()
# 模块安装位置 ..\Python311\Lib\site-packages\mysql_connector_python-8.1.0.dist-info

(三)pymysql02

import pymysql #若报错 需要安装 pip install cryptography
dbConfig={
    "host":"localhost","port":3307,"charset":"utf8",
    "user":"root","password":"123456","database":"studentDB"
}
conn = pymysql.connect(**dbConfig)
print(conn)
cursor=conn.cursor()
cursor.execute("show databases;")
print(cursor.fetchall())
cursor.execute("SELECT id, name, age FROM users")
for row in cursor.fetchall():
    print(f"ID: {row[0]}, Name: {row[1]}, Age: {row[2]}")
# 关闭游标和连接
cursor.close()
conn.close()

(五)sql语句

CREATE DATABASE studentDB;

USE studentDB; CREATE TABLE students (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(20));

INSERT INTO students(name) VALUES ('张三'), ('李四'), ('WangWu'); -- 中文无法输入

SELECT * FROM students;

二.mysql解压缩包运行

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  xaeiTka4h8LY   2024年05月31日   37   0   0 MySQL索引
  xaeiTka4h8LY   2024年05月31日   50   0   0 MySQLSQL
  xaeiTka4h8LY   2024年05月31日   31   0   0 字段MySQL
  xaeiTka4h8LY   2024年05月31日   43   0   0 MySQL数据库
  xaeiTka4h8LY   2024年05月31日   33   0   0 Dockerredis
  xaeiTka4h8LY   2024年05月17日   50   0   0 MySQLgithub
  xaeiTka4h8LY   2024年05月17日   38   0   0 MySQL数据库
LO8hNSnQb2Xy
作者其他文章 更多

2023-11-13

2023-11-02