mysql-01 install

一.docker在线安装mysql

(一)windows安装docker

  • 安装启用
  1. Docker Desktop Installer.exe(572M) 安装后自动配置env 安装后有多目录
    C:\Program Files\Docker\Docker\resources\bin 自动配置环境变量
    C:\Users\Administrator\AppData\Local\Docker\wsl\data\ext4.vhdx 容器存放
    C:\Users\Administrator.docker
  2. 运行C:\Program Files\Docker\Docker\Docker Desktop.exe ( 启动程序)
  3. docker镜像registry可能不能注册与打开 使用国内镜像源
    国内镜像源的两种方法
    官网
    runoob
  • 启动Docker Desktop.exe 任意处CMD运行
    docker images
    docker ps -a
    docker rm/rmi 容器名称/静像名称(全部删除)
    docker pull mysql (mysql:latest)
    docker images ; docker ps -a;

    docker run -d -p 3307:3306 --name mysql-3307 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest ;
    docker exec -it mysql-3307 env LANG=C.UTF-8 /bin/bash ; mysql -uroot -p123456

(二)安装后python测试

pymysql-01

import pymysql #若报错需装 pip install cryptography #mysqlClient
conn = pymysql.connect(host="localhost",
                       port=3307,
                       charset="utf8",
                       user="root",
                       password="123456"
                     )
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
# docker exec -it mysql-3307 env LANG=C.UTF-8 /bin/bash (解决中文不能输入问题)
# use studentDB; show tables; select * from users;

pymysql-02

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()

二.windows免装解压缩版

李兴华
https://www.mysql.com
https://dev.mysql.com/downloads/ 安装版mysql-installer-community-8.0.35.0.msi 约300M
https://dev.mysql.com/downloads/mysql/ 解压缩 MySQLCommunityServer8.2.0Innovation

  • 配置文件 my.ini
# 约250M 解压缩建议放在该目录c:\mysql8  设置环境PATH添加 C:\mysql8\bin
# 数据存储位置 C:\mysql8\mysql-dc(dataCenter) \创建两个目录data logs
# 创建mysql配置文件: c:\myql8\my.ini文件如下

## 配置文件
[mysqld]
#1.设置3306端口
port=3306
#2.设置mysql的安装目录
basedir=C:\mysql8
#3.设置mysql数据库的数据的存放目录
datadir=C:\mysql8\mysql-dc\data
#4.mysqlsock存储目录
socket=C:\mysql8\mysql-dc\data\mysql.sock
#5.允许最大连接数
max_connections=10000

#6.允许连接失败次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10
#7.服务端使用的字符集默认为UTF8
character-set-server=UTF8MB4
#8.创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
#9.默认使用"mysql_native_password"插件认证
default_authentication_plugin=mysql_native_password

[mysql]
#1.设置mysql客户端默认字符集
default-character-set=UTF8MB4
#2.mysqlsock存储目录
socket=C:\mysql8\mysql-dc\data\mysql.sock 

[client]
port=3306
default-character-set=utf8

[mysqld_safe]
log-error=C:\mysql8\mysql-dc\logs\mysql.log
pid-file=C:\mysql8\mysql-dc\logs\mysql.pid
#mysqlsock存储目录
socket=C:\mysql8\mysql-dc\data\mysql.sock
  • 数据库初使化 修改M码
    C:\mysql8\mysql-dc\data (下方每次操作 检查该目录变化)
## WindowsCMD 管理员身份运行:mysql(因未初使化报错); 
# 初使化命令 where cmd; mysqld --initialize --console
# 若执错 vcruntime140_1.dll丢失 安装360安全卫士安装vc++相关软件
# 初完毕  A temporary password is generated for root@localhost: 76uSiAn.2giz
# C:\WINDOWS\system32>mysqld install (Service successfully installed.)

# 启动服务 net start / stop mysql (此电脑-管理-启动 mysql 服务)
# 登录服务 mysql -uroot -p76uSiAn.2giz
# 改M  123456  或  mysqladmin
# alter user 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';  
# exit  或 quit  (已改M码 "123456")

## 设置远程(登录)服务
# mysql -uroot -p123456
# show databases; -- 自带4个内置数据库不能被删除修改
# select * from mysql.user ;(与当前操作库无关)
# select user.Host from mysql.user; (mysql库的表 user)
# select user.Host from mysql.user where user.User='root';

## use mysql
select * from user;  select user,host from user;
describe user;
# update  user set Host='%' where User='root' ;  1用户root或所有用户远登?
select user,host,authentication_string from user; 
flush privileges;  #配置立即生效
show engines;   -- innodb=default-storage-engine
#拥有事务功能的最为传统的数据引擎(大部分环境下都要用此引擎)
sys cls -- 清屏命令(可以使用cmd命令)
sys dir / ipconfig ; (但docker 安装mysql不支持?)

#卸载 quit / exit ;  net stop mysql ; mysql remove

三.docker+php+nginx

runoob 代码如下:

  • docker + nginx
# docker pull nginx:latest
# docker run --name nginx-8080 -p 8080:80 -d nginx [URL测试] 
# [http://localhost:8080/  http://localhost:8080/50x.html或者index.html ]
# docker exec -it nginx-8080  /bin/bash
cat /usr/share/nginx/html/index.html  (找到默认网址)
cat /usr/share/nginx/html/50x.html  ;  
ls /etc/nginx/conf.d ;  cat !$/default.conf ;   ls /var/log/nginx
docker stop nginx-8080 ; docker rm nginx-8080 (删除测试nginx容器) ; exit

docker run -d --name nginx-8080 -p 8080:80 nginx:latest
F:\Program Files\docker\etc\nginx>  docker container cp nginx-8080:/etc/nginx  . (点)
#上述目录执行CMD上述命令 生成nginx\nginx\conf.d的目录及其他文件    
F:\Program Files\docker\etc\nginx\ html 和 logs (需要自行创建2个目录)
F:\Program Files\docker\etc\nginx>docker container cp nginx-8080:/usr/share/nginx/html  .

停止删除容器重新运行
docker run -d -p 8080:80 --name nginx-8080 -v "F:\Program Files\docker\etc\nginx\html":/usr/share/nginx/html   nginx:latest 
# F:\Program Files\docker\etc\nginx\html\test.htlm
# 测试成功  127.0.0.1 (localhost/本机IP地址) :8080

docker run -d -p 8080:80 --name nginx-8080 -v "F:\Program Files\docker\etc\nginx\html":/usr/share/nginx/html:ro   nginx:latest  
#再测试成功 readOnly

docker run -d -p 8080:80 --name nginx-8080    -v   "F:\Program Files\docker\etc\nginx\logs":/var/log/nginx   nginx:latest 
 (测试成功 若日志加上 :ro 测试却失败 )

docker run -d -p 8080:80 --name nginx-8080    -v  "F:\Program Files\docker\etc\nginx\conf":/etc/nginx     nginx:latest (成功 :ro再试成功)
  • docker + php + nginx
docker pull php:5.6-fpm
docker run --name  myphp-fpm -v  "F:\Program Files\docker\etc\nginx\html":/www  -d php:5.6-fpm
docker exec -it myphp-fpm  /bin/bash  ;  cd \ ; ls ;  ls www (有这个目录)
cat /etc/hosts;  exit

【配置文件测试成功】  
runoob-test-php.conf 文件名称改为 default.conf(原文件改为default.conf0)

docker run -d -p 8080:80 --name nginx-8080 -v "F:\Program Files\docker\etc\nginx\html":/usr/share/nginx/html:ro  -v   "F:\Program Files\docker\etc\nginx\logs":/var/log/nginx    -v  "F:\Program Files\docker\etc\nginx\conf":/etc/nginx   --link myphp-fpm:php  nginx:latest  
  • docker + php + nginx + mysql
    【注意】主机访问nginx 容器 nginx访问容器php php容器访问 mysql容器
    docker inspect --format='{{.NetworkSettings.IPAddress}}' mysql-3307
    (测试所有容器的IP)
    docker run -d -p 3307:3306 --name mysql-3307 -e MYSQL_ROOT_PASSWORD=123456 mysql:latest
    docker exec -it mysql-3307 env LANG=C.UTF-8 /bin/bash ; mysql -uroot -p123456

【容器之间如何访问 建立容器公共网络 暂时不成功】
docker搭建PHPMySQLRedis
docker rm -f mysql-3307 (删所有容器重建)

// 进入容器  php代码可以使用 mysqli_connect函数
//<?php echo phpinfo();?>  //测试localhost:8080/index.php
docker exec -it  myphp-fpm   /bin/bash
// 切换目录
cd /usr/local/bin 
// 安装pdo_mysql扩展
./docker-php-ext-install pdo_mysql  
//  安装mysqli扩展
./docker-php-ext-install mysqli
// 退出容器
exit
// 重启容器
docker restart myphp-fpm   (php-container-name)

e.学习课程

runoob-mysql
runoob-sql

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,193评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,306评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,130评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,110评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,118评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,085评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,007评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,844评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,283评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,508评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,395评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,985评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,630评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,797评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,653评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,553评论 2 352

推荐阅读更多精彩内容