前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >MySQL源码编译自动化脚本(自取)

MySQL源码编译自动化脚本(自取)

原创
作者头像
青丝束马尾
发布2024-11-26 00:59:38
发布2024-11-26 00:59:38
831
举报
文章被收录于专栏:LinuxLinux
代码语言:bash
复制
#!/bin/bash

# 清理之前的安装
rm -rf /usr/local/mysql
rm -rf /var/lib/mysql/*

# 创建 MySQL 用户和目录
if ! id -u mysql &>/dev/null; then
    useradd -M -s /sbin/nologin -r mysql
fi

mkdir -p /usr/local/mysql/data
mkdir -p /var/lib/mysql
touch /var/lib/mysql/mysql.sock
touch /var/lib/mysql/mysql_err.log
touch /var/lib/mysql/mysql.pid
touch /var/lib/mysql/mysql.log
chown -R mysql:mysql /usr/local/mysql
chown -R mysql:mysql /var/lib/mysql

# 解压 MySQL 源码包
cd /opt/softapp
tar -zxvf mysql-boost-5.7.43.tar.gz -C /opt/softapp/
mkdir /opt/softapp/mysql-5.7.43/build
cd /opt/softapp/mysql-5.7.43/build

# 检查 cmake 是否成功
if ! cmake .. \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DSYSCONFDIR=/etc \
-DMYSQL_DATADIR=/var/lib/mysql \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DWITH_MYISAM_STORAGE_ENGINE=1 \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_BOOST=/opt/softapp/mysql-5.7.43/boost/boost_1_59_0; then
    echo "cmake failed, cleaning up and stopping..."
    rm -rf /opt/softapp/mysql-5.7.43
    cd /opt/softapp
    exit 1
fi

# 检查 make 是否成功
if ! make -j$(nproc); then
    echo "make failed, cleaning up and stopping..."
    rm -rf /opt/softapp/mysql-5.7.43
    cd /opt/softapp
    exit 1
fi

# 检查 make install 是否成功
if ! sudo make install; then
    echo "make install failed, cleaning up and stopping..."
    rm -rf /opt/softapp/mysql-5.7.43
    cd /opt/softapp
    exit 1
fi

# 提示安装完成
echo "make install completed!"

# 备份并创建 MySQL 配置文件
mv /etc/my.cnf /etc/my.cnf.bak
cat <<EOF > /etc/my.cnf
[mysql]
default-character-set=utf8

[client]
socket=/var/lib/mysql/mysql.sock

[mysqld]
port=3306
user=mysql
general_log = 1
general_log_file= /var/lib/mysql/mysql.log
socket=/var/lib/mysql/mysql.sock
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
bind-address = 0.0.0.0
default_storage_engine = InnoDB
character-set-server=utf8
collation-server=utf8_general_ci
lower_case_table_names=1
autocommit=1
symbolic-links=0
skip-networking = 0
log-error=/var/lib/mysql/mysql_err.log
pid-file=/var/lib/mysql/mysql.pid
explicit_defaults_for_timestamp=1
EOF

# 初始化数据目录
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

# 启动 MySQL 服务
nohup /usr/local/mysql/bin/mysqld_safe --user=mysql &

# 等待 MySQL 服务启动
sleep 10
echo "启动成功!"

# 设置 root 用户密码
/usr/local/mysql/bin/mysql -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Qwer@1234'; FLUSH PRIVILEGES;"

# 授予 root 用户远程访问权限
/usr/local/mysql/bin/mysql -u root -pQwer@1234 -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Qwer@1234' WITH GRANT OPTION; FLUSH PRIVILEGES;"

# 停止MySQL
/usr/local/mysql/bin/mysqladmin -u root -pQwer@1234 shutdown

# 创建 systemd 服务文件
cat <<EOF > /etc/systemd/system/mysqld.service
[Unit]
Description=MySQL Server
After=network.target

[Service]
Type=simple
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf --user=mysql
ExecStop=/usr/local/mysql/bin/mysqladmin shutdown -u root -pQwer@1234
Restart=on-failure
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

# 设置服务文件权限并启用服务
chmod +x /etc/systemd/system/mysqld.service
systemctl daemon-reload
systemctl enable mysqld.service
systemctl start mysqld

echo "MySQL installation and configuration completed."

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档