流程概要

  1. 下载mysql-8.0.11-winx64压缩包
  2. 解压
  3. 编辑配置文件my.ini
  4. 管理员权限cmd安装(注意初始化时设置默认密码为空)
  5. pymysql连接,执行sql操作。

代码实现

依赖:

import os
import zipfile
import pymysql
import ctypes, sys

解压:

zip_src = './mysql-8.0.11-winx64.zip'
dst_dir = os.getcwd() def unzip_file():
print('-----------解压中---------')
# zip_src: 是zip文件的全路径 mysql-8.0.11-winx64.zip
# dst_dir:是要解压到的目的文件夹的绝对路径
if not os.path.exists(dst_dir):
os.makedirs(dst_dir) # 创建路径
r = zipfile.is_zipfile(zip_src)
if r:
fz = zipfile.ZipFile(zip_src, 'r')
for file in fz.namelist():
fz.extract(file, dst_dir)
print(file)
print('-----------解压完成---------')
else:
print('unzip_error:This is not zip')

配置文件

def my_ini():
ini = f'''[mysqld]
# 设置3306端口
port=3306 # 设置mysql的安装目录
basedir={dst_dir}\mysql-8.0.11-winx64
# 设置 mysql数据库的数据的存放目录
datadir={dst_dir}\mysql-8.0.11-winx64\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。这是为了防止有人从该主机试图攻击数据库系统
max_connect_errors=10000
# 服务端使用的字符集默认为UTF8
character-set-server=utf8
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
wait_timeout=31536000
interactive_timeout=31536000
#sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8
'''
with open(str(dst_dir) + '\mysql-8.0.11-winx64\my.ini', 'w', encoding='ANSI') as file:
file.write(ini)

注意保存为ANSI格式文件而不是UTF-8

获取管理员权限安装mysql

def is_admin():
# 管理员权限运行命令行
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False def install_db():
if is_admin():
# Code of your program here
os.chdir(f'{dst_dir}\mysql-8.0.11-winx64\\bin') # 切换bin目录
os.system('mysqld --initialize-insecure') # 初始化数据库 并设置默认密码为空
os.system('mysqld install') # 安装
os.system('net start mysql') # 启动
else:
# Re-run the program with admin rights
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)

这里mysqld --initialize-insecure将默认密码设置为空可以省很多麻烦,很有必要

连接mysql执行操作

def connect_mysql():
# 数据库连接 修改密码
try:
db = pymysql.connect(host='localhost',
user='root',
password="",
database='mysql') # 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL
cursor.execute("ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '1';") # 修改密码
cursor.execute("flush privileges;") # 刷新权限
cursor.execute("CREATE DATABASE mydb;") # 创建数据库
# 关闭数据库连接
db.close()
print('修改密码、创建数据库(mydb)成功')
except:
print('修改密码、创建数据库失败')

主函数执行

def main():
unzip_file()
my_ini()
install_db()
connect_mysql()
input('输入任意字符后退出:') if __name__ == '__main__':
main()

ps:

因为使用时需要将py文件打包成exe可执行文件,于是加上input结束时手动退出

打包方法:

  • 进入py文件所在目录cmd,执行pyinstaller -F xxx.py
  • 将zip包复制到打包生成的dist目录下,与exe文件放在一起,右键管理员权限运行exe即可。
菜鸟摸索中,请大牛不吝指正(抱拳)

win10使用python自动化安装mysql8.0.11的更多相关文章

  1. Linux(CentOS-8)安装MySQL8.0.11

    CentOS安装MySQL8.0.11 总的思路就是:安装MySQL,编写配置文件,配置环境变量,成功开启服务,登陆并修改ROOT密码 开启远程访问的思路就是:授权用户所有IP都可以访问,系统的数据库 ...

  2. win10 压缩包安装mysql8.0.11报错:Access denied for user 'root'@'localhost'

    按这篇:https://blog.csdn.net/Myuhua/article/details/84792121#commentsedit 这里精简下,还有update语句中authenticati ...

  3. 【转载】安装mysql8.0.11以及修改root密码、连接navicat for mysql。

    1.1. 下载: 官网下载zip包,我下载的是64位的: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载zip的包: 下载后解压:(解压在哪个盘都可以的) ...

  4. 安装mysql8.0.11以及修改root密码、连接navicat for mysql。

    最近在学习node.js,少不得要跟数据库打交道,于是打算安装一个数据库软件,在mongedb和mysql之间选择了mysql.作为一个数据库新人不敢评论孰好孰坏,最后选择mysql纯属因为公司在用m ...

  5. windows10安装mysql8.0.11(免安装版)

    1.MySQL8.0.11下载网址:https://dev.mysql.com/downloads/mysql/ 2.配置环境变量:我的电脑->属性->高级系统设置->环境变量-&g ...

  6. 安装mysql8.0.11及修改root密码、连接navicat for mysql的思路详解

    1.1. 下载: 官网下载zip包,我下载的是64位的: 下载地址:https://dev.mysql.com/downloads/mysql/ 下载zip的包: 下载后解压:(解压在哪个盘都可以的) ...

  7. Linux安装Mysql8.0.11

    0.  安装环境 1.  下载安装包 方式一:百度网盘下载 链接:https://pan.baidu.com/s/11t_JXUp-SXRaioNDvdltNg 提取码:uzyj 方式二:在线下载 1 ...

  8. [linux]centos7.4上安装MySQL-8.0.11【完美安装】

    版本声明 centos7.4 MySQL-8.0.11 1.我用的阿里云的虚拟主机,刚从windows换到linux,需要装下常用工具 #安装下sz rz常用到上传下载的命令 yum install ...

  9. Mac下安装mysql8.0.11

    1.下载MySQL Community 版本:8.0.11,本次例子是以dmg安装的方式,下载的文件名为:mysql-8.0.11-macos10.13-x86_64.dmg 下载地址:https:/ ...

  10. Ubuntu18.04 安装mysql8.0.11

    1.下载deb包 2.运行命令 sudo dpkg -i mysql-apt-config_0.8.10-1_all.deb sudo apt update 3.安装mysql8 sudo apt i ...

随机推荐

  1. 嵌入式-C语言基础:二维数组

    二维数组的每个元素都是一个一维数组,例如int arr[2][3]={{1,2,3},{4,5,6}}; 下面通过几个例子来对二维数组进行深入了解:二维数组可以看作是一个父数组,他的每个元素都是一个一 ...

  2. 关于软件物料清单(SBOM),你所需要了解的一切

    在此前的多篇文章中,我们已经详细地介绍了软件物料清单(SBOM)对于保障软件供应链安全的重要性以及一些注意事项.在本文中,我们将会更深入地介绍SBOM,包括最低要求元素.格式.使用场景以及如何对其进行 ...

  3. <三>使用类模板实现STL Vector

    使用类模板实现STL Vector,点击查看代码 #include <iostream> using namespace std; template<typename T> c ...

  4. NOI2011真题:兔兔与蛋蛋游戏

    NOI2011真题:兔兔与蛋蛋游戏 题目描述 这些天,兔兔和蛋蛋喜欢上了一种新的棋类游戏. 这个游戏是在一个 n行 m 列的棋盘上进行的.游戏开始之前,棋盘上有一个格子是空的,其它的格子中都放置了一枚 ...

  5. SPFA和链式前向星

    链式前向星 一种存储图的数据结构 建立一个结构体和一个数组加一个变量,这里的to代表边\((u,v)\)中的\(v\)结点,而\(edge\)数组的索引\(idx\)代表\(u\),其中\(w\)代表 ...

  6. IOS AND Android 配置Fiddler环境

    下载:http://rj.baidu.com/soft/detail/10963.html?ald 运行Fiddler点击Tools: 选择设置选项:   1.     选择HTTPS新选项卡. 2. ...

  7. 【每日一题】【归并排序/堆排序&虚拟头结点】148. 排序链表-211220/220217【出栈时不断容易产生环状链表!】

    给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 . 进阶: 你可以在 O(n log n) 时间复杂度和常数级空间复杂度下,对链表进行排序吗? 方法1:归并排序+使用辅助函数 ...

  8. 【每日一题】【二分mid&贪心】2022年2月8日-NC163 最长上升子序列(一)

    1.描述给定一个长度为 n 的数组 arr,求它的最长严格上升子序列的长度.所谓子序列,指一个数组删掉一些数(也可以不删)之后,形成的新数组.例如 [1,5,3,7,3] 数组,其子序列有:[1,3, ...

  9. 【JVM调优】Day01:Garbage的概念、垃圾回收的算法(标记清除、拷贝、标记压缩)、各种垃圾回收器(Serial、Parallel、CMS并发)及存在的问题

    〇.前言 简历写上:熟悉GC常用算法,熟悉常见垃圾回收器.具有实际JVM调优实战经验 瞬间涨3k 一.什么是garbage Java中垃圾回收器自动进行垃圾回收,不用自己回收 new 对象在内存中,c ...

  10. 进击的K8S:Kubernetes基础概念

    Kubernetes简介 Kubernetes简称K8S(因为k和s中间有8个字母),是一个开源的容器集群管理平台,基于Go语言编写. 使用K8S,将简化分布式系统上的容器应用部署,使得开发人员可以专 ...