win10使用python自动化安装mysql8.0.11

'''
    流程概要
   下载mysql-8.0.11-winx64压缩包
   解压
   编辑配置文件my.ini
   管理员权限cmd安装(注意初始化时设置默认密码为空)
   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即可。
'''

使用说明: ===================================================================================================== 命令行自动安装脚本: mysql_install.bat的简单用法 确定一个完整的版本号,比如:5.6.14, 5.1.72, 5.5.34, 如何确定, 访问网址: http://download.softagency.net/MySQL/Downloads/MySQL-/ (主版本号为5.1, 5.6, 5.5之类) 找到win32.zip, 或者winx64.zip结尾的文件名,比如:mysql-5.5.34-win32.zip, 中间的串:5.5.34就是 完整的版本号. 选定是32位的, 还是64位的,32位用win32, 64位的用winx64, 默认为32位。 命令行用法: mysql_install.bat [arch] [ROOTDIR] [server_port] 参数: fullversion, 必须指定, 如5.6.14, 5.1.72, 4.1.22, 5.5.34, 6.0.11-alpha等等 arch, 可选,不指定时,为win32, 有效值可以是win32或者winx64 ROOTDIR, 可选,安装的最终根目录,默认值为d:, 不用带后边的"\".此目录必须事先存在或创建好 server_port, 可选,默认值为3306. 最终生成的服务名为: iihero- 如果你想卸载,也非常简单,先用sc delete iihero- 接着进到%ROOTDIR%\%MYSQL_HOME%, 直接删除整个目录就可以了. 非常方便。 也请尊重个人劳动。 http://blog.csdn.net/iihero/article/details/5596401 有相关的描述。 有什么问题,欢迎联系:iiihero AT hotmail.com http://blog.csdn.net/iihero http://blog.chinaunix.net/uid/40286.html http://blog.chinaunix.net/topic/hexiong/ ===================================================================================================== 示例: :: mysql_install.bat 4.1.22 :: mysql_install.bat 5.0.95 winx64 :: mysql_install.bat 5.6.14 winx64 :: mysql_install.bat 5.1.72 winx64 :: mysql_install.bat 5.5.34 winx64 :: mysql_install.bat 6.0.11-alpha win32
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值