提示信息

Mysql 安装脚本

峰子 已关注

  1. #!/bin/bash
  2. tar xf mysql-8.0.17-linux-glibc2.12-x86_64.tar -C /alidata1/server
  3. # 1
  4. groupadd mysql
  5. useradd -r -g mysql -s /bin/false mysql
  6. # 2.
  7. MYSQL_CNF_FILE=/etc/my.cnf
  8. touch $MYSQL_CNF_FILE
  9. echo "[client]" >> $MYSQL_CNF_FILE
  10. echo "port=3306" >> $MYSQL_CNF_FILE
  11. echo "socket=/tmp/mysql.sock" >> $MYSQL_CNF_FILE
  12. echo "[mysqld]" >> $MYSQL_CNF_FILE
  13. echo "port=3306" >> $MYSQL_CNF_FILE
  14. echo "user=mysql" >> $MYSQL_CNF_FILE
  15. echo "socket=/tmp/mysql.sock" >> $MYSQL_CNF_FILE
  16. echo "basedir=/alidata1/server/mysql-8.0.17-linux-glibc2.12-x86_64" >> $MYSQL_CNF_FILE
  17. echo "datadir=/alidata1/server/mysql-8.0.17-linux-glibc2.12-x86_64/data" >> $MYSQL_CNF_FILE
  18. echo "log-error=/var/tmp/mysql.error.log" >> $MYSQL_CNF_FILE
  19. # 2
  20. cd /alidata1/server/mysql-8.0.17-linux-glibc2.12-x86_64
  21. mkdir mysql-files
  22. chown -R mysql:mysql mysql-files
  23. chmod -R 750 mysql-files
  24. bin/mysqld --initialize --user=mysql
  25. bin/mysql_ssl_rsa_setup
  26. cp support-files/mysql.server /etc/init.d/mysql.server
  27. # 4.
  28. /etc/init.d/mysql.server start
  29. # 5
  30. ETC_RC_LOCAL_FILE=/etc/rc.d/rc.local
  31. MYSQL_HOME=/alidata1/server/mysql-8.0.17-linux-glibc2.12-x86_64
  32. echo -e "#mysql - by haifeng" >> $ETC_RC_LOCAL_FILE
  33. echo -e "MYSQL_HOME=${MYSQL_HOME}" >> $ETC_RC_LOCAL_FILE
  34. echo -e 'export PATH=$PATH:$MYSQL_HOME/bin\n\n' >> $ETC_RC_LOCAL_FILE
  35. source /etc/rc.d/rc.local
    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
峰子 关注 已关注

最近一次登录:2019-10-10 14:28:58   

暂时还没有签名,请关注我或评论我的文章

惟愿
10月19日

安装脚本很实用,尤其是对MySQL初始化有帮助。不过建议定期备份配置文件。

痴心易碎: @惟愿

对于你的评论,确实,定期备份配置文件是一个非常重要的建议。可以通过简单的脚本自动化备份过程。例如,可以使用以下cron任务每周备份MySQL配置文件:

0 2 * * 0 cp /etc/my.cnf /backup/my.cnf.bak-$(date +\%F)

此外,确保常规监控数据库的健康状态也是不可或缺的。可以参考 MySQL 官方备份文档 来了解更多备份的策略与实践。

11月08日 回复 举报
爱你
10月28日

脚本加入了用户和组的创建,这是最佳安全实践。然而,建议在运行前检查系统环境以避免权限问题。

我最无赖: @爱你

感谢你的评论,确实在安装 MySQL 时创建用户和组是一个重要的安全措施。不过,检查系统环境也非常关键,可以通过以下脚本示例来确保权限正确设置:

if [[ $EUID -ne 0 ]]; then
   echo "请以 root 用户身份运行此脚本." 
   exit 1
fi

这样可以检查运行脚本的用户权限。另外,建议参考 MySQL 安全最佳实践,以便深入了解安全配置措施。保持数据安全是非常重要的!

11月12日 回复 举报
梦醒时分
11月03日

mysqld初始化时指定用户是不错的选择,但注意可能需要配置sudo权限以避免执行出错。

韦小翔: @梦醒时分

对于考虑在mysqld初始化时指定用户的建议,确实是一个很好的实践。除了配置sudo权限外,还可以使用--user选项在命令行中指定用户,例如:

mysqld --initialize --user=mysql

此外,确保MySQL目录的权限正确也是很重要的,可以通过以下命令设置:

chown -R mysql:mysql /var/lib/mysql

关于配置权限的更多信息,可以参考MySQL官方文档。这样可以确保在初始化过程中不会出现权限相关的错误。

6天前 回复 举报
人生如梦
11月12日

添加到了rc.local确保开机启动这是个好主意。但考虑使用systemd来管理服务,这样会更现代化且便于管理。

半情歌: @人生如梦

对于使用systemd来管理服务的建议,确实是一个更现代的解决方案。通过systemd,可以更好地管理服务的启动、停止、重启等操作,同时也能享受更强的依赖管理和日志记录功能。以下是一个简单的systemd服务单元文件示例:

[Unit]
Description=MySQL Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/bin/mysqld_safe
User=mysql
Group=mysql
Restart=on-failure

[Install]
WantedBy=multi-user.target

将该文件保存为/etc/systemd/system/mysql.service,然后执行以下命令启用服务:

sudo systemctl enable mysql
sudo systemctl start mysql

可以参考Systemd Documentation以了解更多关于systemd的用法和最佳实践。

7天前 回复 举报
荒凉
11月20日

使用路径直接硬编码可能导致迁移麻烦,建议使用环境变量存储路径信息,便于维护和管理。

小洋: @荒凉

非常认同你的观点,硬编码路径确实会给迁移带来不便。使用环境变量是一个很好的做法,可以显著提高脚本的灵活性和可维护性。以下是一个简单的示例:

export MYSQL_DATA_DIR=/var/lib/mysql

在脚本中使用:

mysqld --datadir=$MYSQL_DATA_DIR

此外,可以参考 Linux Documentation, 了解更多关于环境变量的管理和使用,希望对你有所帮助!

11月09日 回复 举报
傻蛋
11月23日

将日志存放在/var/tmp是有些不妥的。建议将日志文件妥善保存到合适的日志目录,如/var/log/mysql/

看你: @傻蛋

对于这个建议,我完全同意。将日志存放在适当的目录有助于更好地管理和维护。把 MySQL 日志文件放在 /var/log/mysql/ 目录下,不仅遵循了Linux文件系统的标准,也更便于后续的日志分析。可以通过以下方法在安装脚本中设置日志目录:

sudo mkdir -p /var/log/mysql
sudo chown mysql:mysql /var/log/mysql

同时,可以在 MySQL 配置文件 my.cnf 中指定日志文件的位置:

[mysqld]
general_log_file=/var/log/mysql/mysql.log

这将确保所有相关日志集中管理,方便排查问题。更多最佳实践可以参考 MySQL Official Documentation

11月10日 回复 举报
一场空
12月03日

应该在脚本开头增加环境检查部分,比如检测操作系统版本和已有的mysql安装。

泛白: @一场空

非常认同你的建议!在安装脚本开始时进行环境检测可以有效减少错误和冲突。例如,可以检测操作系统版本和已安装的MySQL版本。以下是一个简单的环境检查示例:

# 检查操作系统版本
if [[ $(uname) != "Linux" ]]; then
  echo "此脚本仅支持Linux系统!"
  exit 1
fi

# 检查已安装的MySQL版本
if command -v mysql &> /dev/null; then
  echo "MySQL已安装,版本:$(mysql --version)"
  exit 1
fi

这种方法不仅提升了脚本的健壮性,还能为用户提供更好的体验。可以参考 MySQL的官方文档 获取更多详细信息和最佳实践。

11月11日 回复 举报
捕捉阳光
12月05日

对于初学者来说,脚本示例很友好,可以帮助快速搭建MySQL环境。不过也建议结合官方文档来理解每个配置项的具体作用。

逆爱: @捕捉阳光

非常赞同你的看法!结合官方文档对于初学者理解MySQL的配置项至关重要。每个参数都有其独特的作用,可以通过以下命令查看MySQL的默认配置:

mysqld --help --verbose

可以帮助你更好地理解和优化安装过程。此外,建议访问MySQL官方文档以获取更详细的信息和最佳实践,这对提升自己的MySQL技能非常有帮助!

7天前 回复 举报
一叶知秋
12月10日

cp的过程中使用相对路径可能更安全,减少文件覆盖的风险。尤其是在复制mysql.server的时候。

随遇而安: @一叶知秋

确实,在使用 cp 命令时,推荐使用相对路径来增强安全性,尤其是在进行重要文件的复制时。例如,可以采用以下方式:

cp ./mysql.server /etc/init.d/

这样可以确保在当前目录下操作,减少误覆盖其他文件的风险。此外,可以通过使用 -i 选项在覆盖文件时进行提示,以确保不会误删:

cp -i ./mysql.server /etc/init.d/

了解更多关于文件操作的安全性,可以参考 Linux cp 命令使用详解。这样做能够有效避免潜在的风险,感谢你的建议!

3天前 回复 举报
不了情
12月14日

关于SSL的设置,如支持HTTP连接或外网访问,可以增加一些注释,帮助使用者了解作用并根据需求启用。

拾心: @不了情

用户的评论非常有建设性,关于SSL设置的注释确实能帮助使用者更好地理解配置的必要性。对于需要外网访问的场景,启用SSL连接不仅提升了数据传输的安全性,也防止了潜在的中间人攻击。

以下是启用SSL连接的简单示例:

[mysqld]
require_secure_transport = ON

同时,建议用户查阅 MySQL官方文档 来获取更多关于SSL配置的详细信息和最佳实践。在配置SSL时,请仔细查看证书的生成与管理,这将对确保数据库访问的安全性至关重要。

11月12日 回复 举报
×
免费图表工具,画流程图、架构图