003-Python-脚本学习-安装mysql数据库(CentOS7.9)

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Name: Python-脚本学习-安装mysql数据库(CentOS7.9).py
# Author: songp-it
# Date: 2024-03-21
# Description: 在CentOS 7.9上安装MySQL数据库

import subprocess
import sys
import os

def disable_selinux():
    """
    禁用SELinux
    """
    try:
        subprocess.run(["sed", "-i", "s/SELINUX=enforcing/SELINUX=disabled/g", "/etc/selinux/config"],check=True)
        print("SELinux已禁用")
    except subprocess.CalledProcessError as e:
        print(f"禁用SELinux失败: {e}",file=sys.stderr)
        sys.exit(1)

def disable_firewall():
    """
    禁用防火墙
    """
    try:
        subprocess.run(["systemctl", "stop", "firewalld"],check=True)
        subprocess.run(["systemctl", "disable", "firewalld"],check=True)
        print("防火墙已禁用")
    except subprocess.CalledProcessError as e:
        print(f"禁用防火墙失败: {e}",file=sys.stderr)
        sys.exit(1)

def install_mysql():
    """
    安装MySQL数据库
    """
    try:
        # 安装基础依赖
        subprocess.run(["yum", "install", "-y", "epel-release"],check=True)
        subprocess.run(["yum", "install", "-y", "wget", "gcc", "libxml2", "libxml2-devel", "net-snmp", "net-snmp-devel", "libevent", "libevent-devel", "curl", "curl-devel", "java-devel", "yum-utils"],check=True)
        
        # 下载并安装MySQL源
        subprocess.run(["wget", "https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm"],check=True)
        subprocess.run(["rpm", "-ivh", "mysql80-community-release-el7-3.noarch.rpm", "--nodeps", "--force"],check=True)
        
        # 清理yum缓存并重新生成
        subprocess.run(["yum", "clean", "all"],check=True)
        subprocess.run(["yum", "makecache"],check=True)
        
        # 安装MySQL服务器(跳过GPG检查)
        subprocess.run(["yum", "install", "-y", "mysql-community-server", "--nogpgcheck"],check=True)
        
        # 启动MySQL服务
        subprocess.run(["systemctl", "start", "mysqld"],check=True)
        subprocess.run(["systemctl", "enable", "mysqld"],check=True)    
        print("MySQL数据库安装完成")
    except subprocess.CalledProcessError as e:
        print(f"安装MySQL数据库失败: {e}",file=sys.stderr)
        sys.exit(1)

def configure_mysql():
    """
    配置MySQL数据库
    """
    try:
        # 获取临时密码
        temp_password_output = subprocess.check_output(["grep", "temporary password", "/var/log/mysqld.log"]).decode()
        # 使用更精确的格式匹配
        temp_password = temp_password_output.split("root@localhost:")[1].strip()
        print(f"MySQL数据库临时密码: {temp_password}")
        
        # 修改root密码
        subprocess.run(["mysql", "-uroot", f"-p{temp_password}", "--connect-expired-password", "-e", "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123456';"],check=True)
        print("MySQL数据库密码修改完成")
        
        # 配置远程访问
        subprocess.run(["mysql", "-uroot", "-pAdmin@123456", "-e", "use mysql;update user set Host='%' where User='root';flush privileges;"],check=True)
        print("MySQL远程访问配置完成")
    except subprocess.CalledProcessError as e:
        print(f"配置MySQL数据库失败: {e}",file=sys.stderr)
        sys.exit(1)

if __name__ == "__main__":
    if os.geteuid() != 0:
        print("请使用root用户运行此脚本",file=sys.stderr)
        sys.exit(1)
    
    print("开始禁用SELinux和firewalld")
    disable_selinux()
    disable_firewall()

    print("开始安装MySQL")
    install_mysql()
    configure_mysql()
    print("MySQL安装和配置完成") 

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深度学习0407

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值