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安装和配置完成") 

在这里插入图片描述

### CentOS 7.9 上 CloudStack 4.15 的安装与部署指南 #### 准备工作 在开始安装之前,需要准备以下环境和工具: - 至少两台物理服务器(一台作为管理节点,另一台作为计算节点)。 - 所有服务器的操作系统均为 CentOS 7.9- 网络配置完成并能够正常访问互联网。 #### 安装管理服务器 管理服务器负责运行 CloudStack 的核心服务以及数据库。以下是具体步骤: 1. **更新操作系统** 更新系统的软件包以确保其处于最新状态。 ```bash sudo yum update -y ``` 2. **设置 YUM 源** 添加 CloudStack 和 MariaDB 的官方仓库。 ```bash sudo rpm --import https://downloads.apache.org/cloudstack/KEYS sudo curl -o /etc/yum.repos.d/cloudstack.repo http://cloudstack.apt-get.eu/centos/7/4.15/cloudstack.repo sudo vi /etc/yum.repos.d/MariaDB.repo ``` 在 `MariaDB.repo` 文件中添加如下内容[^1]: ``` [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.3/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 enabled=1 ``` 3. **安装 MySQL 数据库** 安装并初始化 MariaDB 数据库。 ```bash sudo yum install mariadb-server -y sudo systemctl start mariadb sudo mysql_secure_installation ``` 4. **创建 CloudStack 数据库** 登录到 MariaDB 并创建所需的数据库。 ```sql CREATE DATABASE cloud; GRANT ALL PRIVILEGES ON cloud.* TO &#39;cloud&#39;@&#39;localhost&#39; IDENTIFIED BY &#39;password&#39;; FLUSH PRIVILEGES; EXIT; ``` 5. **安装 Apache CloudStack** 使用 YUM 安装 CloudStack 及其依赖项。 ```bash sudo yum install cloudstack-management -y ``` 6. **启动管理服务** 启动 CloudStack 管理服务并将它设为开机自启。 ```bash sudo systemctl start cloudstack-management sudo systemctl enable cloudstack-management ``` #### 配置计算节点 计算节点用于运行虚拟机实例。以下是具体的配置过程: 1. **更新操作系统** 类似于管理节点,先更新计算节点的系统。 ```bash sudo yum update -y ``` 2. **安装 KVM 虚拟化支持** 安装必要的组件以启用 KVM 支持。 ```bash sudo yum groupinstall "Virtualization Host" -y sudo systemctl start libvirtd sudo systemctl enable libvirtd ``` 3. **安装 CloudStack Agent** 安装 CloudStack 计算代理程序。 ```bash sudo yum install cloudstack-agent -y ``` 4. **重启计算节点** 确保所有更改生效。 ```bash sudo reboot ``` #### 初始化云环境 完成以上步骤后,可以通过 Web UI 或命令行接口初始化整个云环境。 1. **登录管理界面** 默认情况下,Apache CloudStack 提供了一个基于浏览器的控制面板,默认地址为 `http://<management_server_ip>:8080/client`。 2. **配置区域和服务提供者** 创建一个新的数据中心,并定义相应的服务提供商(如存储、网络等)。可以参考高级网络配置文档进一步优化网络拓扑结构。 3. **添加主机** 将先前配置好的计算节点加入集群中。 4. **测试功能** 创建一个简单的虚拟机模板并验证是否能成功启动实例。 --- ```python # 示例 Python 脚本:自动化检测 CloudStack API 是否可用 import requests def check_cloudstack_api(api_url, api_key, secret_key): params = { &#39;command&#39;: &#39;listZones&#39;, &#39;apikey&#39;: api_key, &#39;response&#39;: &#39;json&#39; } response = requests.get(f"{api_url}", params=params).json() return response[&#39;count&#39;] > 0 if __name__ == "__main__": url = "http://your-cloudstack-api-url" key = "your-api-key" secret = "your-secret-key" if check_cloudstack_api(url, key, secret): print("CloudStack API is working correctly.") else: print("Failed to connect to the CloudStack API.") ``` --- ####
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

深度学习007

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

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

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

打赏作者

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

抵扣说明:

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

余额充值