migrate_phpmyadmin.sh 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. #!/bin/bash
  2. # info: Disconnect phpMyadmin from APT and solving issues with PHPMyadmin accidental updates from ATP
  3. #----------------------------------------------------------#
  4. # Variable&Function #
  5. #----------------------------------------------------------#
  6. # Includes
  7. source $HESTIA/func/main.sh
  8. # get current phpmyadmin version
  9. source $HESTIA/install/upgrade/upgrade.conf
  10. source $HESTIA/conf/hestia.conf
  11. #----------------------------------------------------------#
  12. # Verifications #
  13. #----------------------------------------------------------#
  14. echo "To remove phpMyAdmin you will need use the root password. Password can be found in /usr/local/hestia/conf/mysql.conf"
  15. read -p 'Would you like to continue? [y/n]'
  16. #----------------------------------------------------------#
  17. # Action #
  18. #----------------------------------------------------------#
  19. echo # (optional) move to a new line
  20. if [[ $REPLY =~ ^[Yy]$ ]]
  21. then
  22. # Remove PMA SSO first
  23. sso="no"
  24. if [ "$PHPMYADMIN_KEY" != "" ]; then
  25. sso="yes"
  26. $HESTIA/bin/v-delete-sys-pma-sso
  27. fi
  28. # Create an backup of current config
  29. echo "[ * ] Backing up old configuration files..."
  30. mkdir -p /root/hst_backup_man/phmyadmin
  31. cp -r /etc/phpmyadmin/* /root/hst_backup_man/phmyadmin
  32. mkdir -p /root/hst_backup_man/var_phmyadmin
  33. cp -r /var/lib/phpmyadmin/* /root/hst_backup_man/var_phmyadmin
  34. echo '[ * ] Marking phpmyadmin as held in apt...'
  35. apt-mark hold phpmyadmin
  36. echo '[ * ] Removing old folders...'
  37. # make sure everything is deleted
  38. rm -f -r /usr/share/phpmyadmin
  39. rm -f -r /etc/phpmyadmin
  40. rm -f -r /var/lib/phpmyadmin/
  41. echo '[ * ] Creating new folders...'
  42. # Create folders
  43. mkdir -p /usr/share/phpmyadmin
  44. mkdir -p /etc/phpmyadmin
  45. mkdir -p /etc/phpmyadmin/conf.d/
  46. mkdir /usr/share/phpmyadmin/tmp
  47. chmod 770 /usr/share/phpmyadmin/tmp/
  48. chown root:www-data /usr/share/phpmyadmin/tmp/
  49. mkdir -p /etc/phpmyadmin/conf.d/
  50. # Configuring Apache2 for PHPMYADMIN
  51. if [ "$WEB_SYSTEM" == "apache2" ]; then
  52. cp -f $HESTIA_INSTALL_DIR/pma/apache.conf /etc/phpmyadmin/
  53. rm /etc/apache2/conf.d/phpmyadmin.conf
  54. ln -s /etc/phpmyadmin/apache.conf /etc/apache2/conf.d/phpmyadmin.conf
  55. fi
  56. PASS=$(generate_password)
  57. echo "[ * ] Installing phpMyAdmin version v$pma_v..."
  58. # Download latest phpmyadmin release
  59. wget --quiet https://files.phpmyadmin.net/phpMyAdmin/$pma_v/phpMyAdmin-$pma_v-all-languages.tar.gz
  60. # Unpack files
  61. tar xzf phpMyAdmin-$pma_v-all-languages.tar.gz
  62. # Overwrite old files
  63. cp -rf phpMyAdmin-$pma_v-all-languages/* /usr/share/phpmyadmin
  64. # Create copy of config file
  65. cp -f $HESTIA_INSTALL_DIR/phpmyadmin/config.inc.php /etc/phpmyadmin/
  66. mkdir -p /var/lib/phpmyadmin/tmp
  67. chmod 770 -R /var/lib/phpmyadmin/tmp
  68. # Set config and log directory
  69. sed -i "s|define('CONFIG_DIR', ROOT_PATH);|define('CONFIG_DIR', '/etc/phpmyadmin/');|" /usr/share/phpmyadmin/libraries/vendor_config.php
  70. sed -i "s|define('TEMP_DIR', ROOT_PATH . 'tmp/');|define('TEMP_DIR', '/var/lib/phpmyadmin/tmp');|" /usr/share/phpmyadmin/libraries/vendor_config.php
  71. # Generate blowfish
  72. blowfish=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)
  73. sed -i "s|%blowfish_secret%|$blowfish|" /etc/phpmyadmin/config.inc.php
  74. # Clear Up
  75. rm -fr phpMyAdmin-$pma_v-all-languages
  76. rm -f phpMyAdmin-$pma_v-all-languages.tar.gz
  77. if [ -z "$DB_PMA_ALIAS" ]; then
  78. echo "DB_PMA_ALIAS='phpmyadmin'" >> $HESTIA/conf/hestia.conf
  79. fi
  80. $HESTIA/bin/v-change-sys-db-alias 'pma' "phpmyadmin"
  81. # Special thanks to Pavel Galkin (https://skurudo.ru)
  82. # https://github.com/skurudo/phpmyadmin-fixer
  83. echo "[ * ] Creating localhost configuration..."
  84. #ubuntu phpmyadmin path
  85. pmapath="/etc/phpmyadmin/conf.d/01-localhost.php"
  86. echo "<?php " >> $pmapath
  87. echo "\$cfg['Servers'][\$i]['host'] = 'localhost';" >> $pmapath
  88. echo "\$cfg['Servers'][\$i]['port'] = '3306';" >> $pmapath
  89. echo "\$cfg['Servers'][\$i]['favorite'] = 'pma__favorite';" >> $pmapath
  90. echo "\$cfg['Servers'][\$i]['usergroups'] = 'pma__usergroups';" >> $pmapath
  91. echo "\$cfg['Servers'][\$i]['central_columns'] = 'pma__central_columns';" >> $pmapath
  92. echo "\$cfg['Servers'][\$i]['designer_settings'] = 'pma__designer_settings';" >> $pmapath
  93. echo "\$cfg['Servers'][\$i]['export_templates'] = 'pma__export_templates';" >> $pmapath
  94. echo "\$cfg['Servers'][\$i]['savedsearches'] = 'pma__savedsearches';" >> $pmapath
  95. echo "\$cfg['Servers'][\$i]['navigationhiding'] = 'pma__navigationhiding';" >> $pmapath
  96. echo "\$cfg['Servers'][\$i]['users'] = 'pma__users';" >> $pmapath
  97. echo "\$cfg['Servers'][\$i]['usergroups'] = 'pma__usergroups';" >> $pmapath
  98. echo "\$cfg['Servers'][\$i]['pmadb'] = 'phpmyadmin';" >> $pmapath
  99. echo "\$cfg['Servers'][\$i]['controluser'] = 'pma';" >> $pmapath
  100. echo "\$cfg['Servers'][\$i]['controlpass'] = '$PASS';" >> $pmapath
  101. echo "\$cfg['Servers'][\$i]['bookmarktable'] = 'pma__bookmark';" >> $pmapath
  102. echo "\$cfg['Servers'][\$i]['relation'] = 'pma__relation';" >> $pmapath
  103. echo "\$cfg['Servers'][\$i]['userconfig'] = 'pma__userconfig';" >> $pmapath
  104. echo "\$cfg['Servers'][\$i]['table_info'] = 'pma__table_info';" >> $pmapath
  105. echo "\$cfg['Servers'][\$i]['column_info'] = 'pma__column_info';" >> $pmapath
  106. echo "\$cfg['Servers'][\$i]['history'] = 'pma__history';" >> $pmapath
  107. echo "\$cfg['Servers'][\$i]['recent'] = 'pma__recent';" >> $pmapath
  108. echo "\$cfg['Servers'][\$i]['table_uiprefs'] = 'pma__table_uiprefs';" >> $pmapath
  109. echo "\$cfg['Servers'][\$i]['tracking'] = 'pma__tracking';" >> $pmapath
  110. echo "\$cfg['Servers'][\$i]['table_coords'] = 'pma__table_coords';" >> $pmapath
  111. echo "\$cfg['Servers'][\$i]['pdf_pages'] = 'pma__pdf_pages';" >> $pmapath
  112. echo "\$cfg['Servers'][\$i]['designer_coords'] = 'pma__designer_coords';" >> $pmapath
  113. #SOME WORK with DATABASE (table / user)
  114. PMADB=phpmyadmin
  115. PMAUSER=pma
  116. echo '[ * ] Dropping database (could throw an error if successful)...'
  117. # removed tabs due to here doc errors
  118. #DROP USER and TABLE
  119. mysql -uroot <<MYSQL_PMA1
  120. DROP USER '$PMAUSER'@'localhost';
  121. DROP DATABASE $PMADB;
  122. FLUSH PRIVILEGES;
  123. MYSQL_PMA1
  124. echo '[ * ] Creating new user...'
  125. #CREATE PMA USER
  126. mysql -uroot <<MYSQL_PMA2
  127. CREATE USER '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';
  128. CREATE DATABASE $PMADB;
  129. MYSQL_PMA2
  130. echo '[ * ] Creating new database...'
  131. #GRANT PMA USE SOME RIGHTS
  132. mysql -uroot <<MYSQL_PMA3
  133. USE $PMADB;
  134. GRANT USAGE ON $PMADB.* TO '$PMAUSER'@'localhost' IDENTIFIED BY '$PASS';
  135. GRANT ALL PRIVILEGES ON $PMADB.* TO '$PMAUSER'@'localhost';
  136. FLUSH PRIVILEGES;
  137. MYSQL_PMA3
  138. #MYSQL DB and TABLES ADDITION
  139. mysql -uroot < $HESTIA_INSTALL_DIR/phpmyadmin/create_tables.sql
  140. if [ "$sso" == "yes" ]; then
  141. $HESTIA/bin/v-add-sys-pma-sso
  142. fi
  143. fi