当前位置:   article > 正文

Linux系统自动化安装MYSQL

Linux系统自动化安装MYSQL
  1. #!/bin/bash
  2. function exist_data() {
  3. echo -e "*** 已安装MySQL或者Mariadb,请先卸载并删除数据目录以及配置文件! ***\n" && exit
  4. }
  5. if [ -e "/etc/mysql/mysql.cnf" ]; then
  6. exist_data
  7. elif [ -e "/etc/my.cnf" ]; then
  8. exist_data
  9. fi
  10. SYSTEM=$(grep -E 'VERSION_ID="7|VERSION_ID="8|VERSION_ID="9|NAME="Debian|NAME="Ubuntu"' /etc/os-release)
  11. version7=$(echo "$SYSTEM" | grep 'VERSION_ID="7')
  12. version8=$(echo "$SYSTEM" | grep 'VERSION_ID="8')
  13. version9=$(echo "$SYSTEM" | grep 'VERSION_ID="9')
  14. version_debian=$(echo "$SYSTEM" | grep 'NAME="Debian')
  15. version_ubuntu=$(echo "$SYSTEM" | grep 'NAME="Ubuntu"')
  16. function get_password() {
  17. while :; do
  18. read -p "请输入MySQL密码: " mysql_root_pwd
  19. mmzw=$(echo "$mysql_root_pwd" | awk '{print gensub(/[!-~]/,"","g",$0)}')
  20. if [[ ! -n "$mmzw" ]]; then
  21. break
  22. else
  23. echo "请不要输入中文密码!"
  24. fi
  25. done
  26. }
  27. function redhat_install_start() {
  28. echo -e "********* 安装 Mysql8 *********\n"
  29. sleep 2
  30. sudo yum -y install mysql-community-server
  31. systemctl enable mysqld
  32. systemctl start mysqld
  33. sleep 5
  34. echo -e "default-authentication-plugin=mysql_native_password" >>/etc/my.cnf
  35. echo -e "validate_password.length=1" >>/etc/my.cnf
  36. echo -e "validate_password.policy=0" >>/etc/my.cnf
  37. tmp_pwd=$(grep 'temporary password' /var/log/mysqld.log)
  38. systemctl restart mysqld
  39. mysql_root_old_pwd=$(echo ${tmp_pwd#*localhost:})
  40. mysql -uroot --connect-expired-password -p$mysql_root_old_pwd -e "ALTER USER 'root'@'localhost' identified by '$mysql_root_pwd' password expire never;flush privileges;"
  41. mysql -uroot -p$mysql_root_pwd -e "use mysql;update user set host = '%' where user = 'root' and host='localhost';flush privileges;ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '$mysql_root_pwd' password expire never;flush privileges;"
  42. firewall-cmd --zone=public --add-port=3306/tcp --permanent
  43. firewall-cmd --reload
  44. echo -e "\n********* 安装完成 *********\n"
  45. echo -e "数据库账号:root\n"
  46. echo -e "数据库密码:$mysql_root_pwd\n"
  47. }
  48. function debian_install_start() {
  49. echo -e "********* 安装 Mysql8 *********\n"
  50. sleep 1
  51. sudo apt install -y lsb-release ca-certificates apt-transport-https software-properties-common gnupg2
  52. sudo apt install dirmngr -y
  53. echo PURGE | sudo debconf-communicate mysql-community-server
  54. sudo echo "mysql-community-server mysql-community-server/root-pass password $mysql_root_pwd" | sudo debconf-set-selections
  55. sudo echo "mysql-community-server mysql-community-server/re-root-pass password $mysql_root_pwd" | sudo debconf-set-selections
  56. sudo echo "mysql-community-server mysql-server/default-auth-override select Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)" | sudo debconf-set-selections
  57. sudo gpg --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C
  58. sudo gpg --export --armor B7B3B788A8D3785C | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/mysql8.gpg
  59. sleep 10
  60. echo "deb http://repo.mysql.com/apt/debian/ $(lsb_release -sc) mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql80.list
  61. sudo apt update
  62. sudo apt install mysql-community-server -y
  63. mysql -uroot -p$mysql_root_pwd -e "update mysql.user set host = '%' where user = 'root';flush privileges;"
  64. systemctl restart mysql
  65. echo -e "\n********* 安装完成 *********\n"
  66. echo -e "数据库账号:root\n"
  67. echo -e "数据库密码:$mysql_root_pwd\n"
  68. }
  69. function ubuntu_install_start() {
  70. echo -e "********* 安装 Mysql8 *********\n"
  71. sleep 1
  72. echo PURGE | sudo debconf-communicate mysql-community-server
  73. sudo echo "mysql-community-server mysql-community-server/root-pass password $mysql_root_pwd" | sudo debconf-set-selections
  74. sudo echo "mysql-community-server mysql-community-server/re-root-pass password $mysql_root_pwd" | sudo debconf-set-selections
  75. sudo echo "mysql-community-server mysql-server/default-auth-override select Use Legacy Authentication Method (Retain MySQL 5.x Compatibility)" | sudo debconf-set-selections
  76. sudo gpg --keyserver keyserver.ubuntu.com --recv-keys B7B3B788A8D3785C
  77. sudo gpg --export --armor B7B3B788A8D3785C | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/mysql8.gpg
  78. sleep 10
  79. echo "deb http://repo.mysql.com/apt/ubuntu $(lsb_release -sc) mysql-8.0" | sudo tee /etc/apt/sources.list.d/mysql80.list
  80. sudo apt update
  81. sudo apt install mysql-community-server -y
  82. mysql -uroot -p$mysql_root_pwd -e "update mysql.user set host = '%' where user = 'root';flush privileges;"
  83. systemctl restart mysql
  84. sleep 5
  85. echo -e "\n********* 安装完成 *********\n"
  86. echo -e "数据库账号:root\n"
  87. echo -e "数据库密码:$mysql_root_pwd\n"
  88. }
  89. if [[ -n "$version7" ]]; then
  90. echo -e " *********此系统为Redhat 7系列操作系统发行版 *********\n"
  91. sudo yum -y install https://repo.mysql.com/mysql80-community-release-el7-7.noarch.rpm
  92. get_password
  93. redhat_install_start
  94. elif [[ -n "$version8" ]]; then
  95. echo -e "********* 此系统为Redhat 8系列操作系统发行版 *********\n"
  96. sudo dnf -y module disable mysql
  97. sudo dnf -y install yum
  98. sudo dnf -y install https://repo.mysql.com/mysql80-community-release-el8-4.noarch.rpm
  99. get_password
  100. redhat_install_start
  101. elif [[ -n "$version9" ]]; then
  102. echo -e "********* 此系统为Redhat 9系列操作系统发行版 *********\n"
  103. sudo dnf -y install yum
  104. sudo dnf -y install https://repo.mysql.com/mysql80-community-release-el9-1.noarch.rpm
  105. get_password
  106. redhat_install_start
  107. elif [[ -n "$version_debian" ]]; then
  108. echo -e " *********此系统为Debian系列操作系统发行版 *********\n"
  109. apt update
  110. apt install sudo gawk -y
  111. get_password
  112. debian_install_start
  113. elif [[ -n "$version_ubuntu" ]]; then
  114. echo -e " *********此系统为Ubuntu系列操作系统发行版 *********\n"
  115. apt update
  116. sudo apt install dirmngr gawk -y
  117. get_password
  118. ubuntu_install_start
  119. else
  120. echo -e "********* 未支持的系统 *********\n" && exit
  121. fi

适配系统:centos 7,centos 8,centos stream 8,centos stream 9,redhat 7,redhat 8,redhat 9,almalinux 8,almalinux 9,rockylinux 8,rockylinux 9,ubuntu 18.4,ubuntu 20.4,ubuntu 22.4,debian 10,debian 11,debian 12,oraclelinux 7,oraclelinux 8,oraclelinux 9

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号