#!/bin/bash
tar xf mysql-8.0.17-linux-glibc2.12-x86_64.tar -C /alidata1/server
# 1
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
# 2.
MYSQL_CNF_FILE=/etc/my.cnf
touch $MYSQL_CNF_FILE
echo "[client]" >> $MYSQL_CNF_FILE
echo "port=3306" >> $MYSQL_CNF_FILE
echo "socket=/tmp/mysql.sock" >> $MYSQL_CNF_FILE
echo "[mysqld]" >> $MYSQL_CNF_FILE
echo "port=3306" >> $MYSQL_CNF_FILE
echo "user=mysql" >> $MYSQL_CNF_FILE
echo "socket=/tmp/mysql.sock" >> $MYSQL_CNF_FILE
echo "basedir=/alidata1/server/mysql-8.0.17-linux-glibc2.12-x86_64" >> $MYSQL_CNF_FILE
echo "datadir=/alidata1/server/mysql-8.0.17-linux-glibc2.12-x86_64/data" >> $MYSQL_CNF_FILE
echo "log-error=/var/tmp/mysql.error.log" >> $MYSQL_CNF_FILE
# 2
cd /alidata1/server/mysql-8.0.17-linux-glibc2.12-x86_64
mkdir mysql-files
chown -R mysql:mysql mysql-files
chmod -R 750 mysql-files
bin/mysqld --initialize --user=mysql
bin/mysql_ssl_rsa_setup
cp support-files/mysql.server /etc/init.d/mysql.server
# 4.
/etc/init.d/mysql.server start
# 5
ETC_RC_LOCAL_FILE=/etc/rc.d/rc.local
MYSQL_HOME=/alidata1/server/mysql-8.0.17-linux-glibc2.12-x86_64
echo -e "#mysql - by haifeng" >> $ETC_RC_LOCAL_FILE
echo -e "MYSQL_HOME=${MYSQL_HOME}" >> $ETC_RC_LOCAL_FILE
echo -e 'export PATH=$PATH:$MYSQL_HOME/bin\n\n' >> $ETC_RC_LOCAL_FILE
source /etc/rc.d/rc.local
遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
安装脚本很实用,尤其是对MySQL初始化有帮助。不过建议定期备份配置文件。
脚本加入了用户和组的创建,这是最佳安全实践。然而,建议在运行前检查系统环境以避免权限问题。
mysqld初始化时指定用户是不错的选择,但注意可能需要配置sudo权限以避免执行出错。
添加到了rc.local确保开机启动这是个好主意。但考虑使用systemd来管理服务,这样会更现代化且便于管理。
使用路径直接硬编码可能导致迁移麻烦,建议使用环境变量存储路径信息,便于维护和管理。
将日志存放在
/var/tmp
是有些不妥的。建议将日志文件妥善保存到合适的日志目录,如/var/log/mysql/
。应该在脚本开头增加环境检查部分,比如检测操作系统版本和已有的mysql安装。
对于初学者来说,脚本示例很友好,可以帮助快速搭建MySQL环境。不过也建议结合官方文档来理解每个配置项的具体作用。
在
cp
的过程中使用相对路径可能更安全,减少文件覆盖的风险。尤其是在复制mysql.server的时候。关于SSL的设置,如支持HTTP连接或外网访问,可以增加一些注释,帮助使用者了解作用并根据需求启用。