VestaCP: Soporte para Mysql 8


Hace tiempo que no dedico tiempo en serio al proyecto de vesta, esta semana he estado algo aburrido y me he estado haciendo algunas cosas con mysql y me dio por mirar el tema de vestacp, ya que me acorde de algunas peticiones que tenia la gente sobre el soporte para mysql 8 ya que esta estable desde ni se cuando así que me decidi a meter mano y probar a instalar vestaCP directamente con soporte para mysql 8 en un debian 9

The term macrolide means "large moled" because the antibiotics have a long chain of sugar. Cialis 20 mg cost the company, https://shogazi-manufaktur.de/90775-ciprobay-500-mg-preis-97671/ founded in 2004, has made .2 billion since the beginning. I was going through the motions to not be seen by any doctors until i could no longer afford them.

When a drug is not approved by the fda (and therefore cannot be sold legally), they will not list any serious side effects that you might encounter with it. Cabgolin is for the treatment and prevention of a wide range of ailments, including chronic pain, osteoarthritis, rheumatoid arthritis, gout, arthritis in Repelón the hands, gingivitis, asthma, ulcerative colitis, eczema, chronic fatigue syndrome, and multiple sclerosis. We provide this website to provide you access to your doctor for you to get the best care for your condition.

Tal como hice con el soporte para mysql 5.7 he probado a mejorar la compatibilidad con mysql 8 que hasta ahora era inexistente

El tema es que ya sabía que no funcionaba pero necesitaba mi conejillo de indias y este fue un debian 9, decidí no actualizar ya que probe en un ubuntu 18 y fue bastante mal por algún tema de apparmor así que lo deje y monte un servidor con debian 9, antes de instalar vesta añadí los repos de mysql 8 de la siguiente manera:

wget https://dev.mysql.com/get/mysql-apt-config_0.8.10-1_all.deb

dpkg -i mysql-apt-config_0.8.10-1_all.deb

Sí, así de sencillo, luego instalamos vestacp con normalidad, parece que todo va bien en primera instanacia, aunque las bases de datos que creamos no funcionan y para eso debemos parchearlo

Primero añadimos soporte para el sistema antiguo de contraseñas ya que no funcionará de momento con las contraseñas cifradas en SHA-256

Mysql 8 Support

Es necesario modificar el my.cnf añadiendo la siguiente linea después de [Mysqld]

default_authentication_plugin=mysql_native_password

Reiniciamos mysql y parcheamos vestacp con el siguiente código:

https://github.com/serghey-rodin/vesta/pull/1805/files
https://github.com/serghey-rodin/vesta/pull/1806/files

De momento no es oficial, ya que acabo de hacerlo y requiere revisión por parte de vestacp y testeos varios, los dos parches los he probado y en principio funcionan bien pero puede que tarden en ser aceptados o directamente pueden ser rechazados, eso no se sabe, aunque la vez pasada fueron aceptados y esta es una modificación al anterior código

En todo caso el parche importante para que la creación de bases de datos y usuarios funcione es el parche 1805, que añade compatibilidad a mysql 8 con el siguiente código:

Lo más sencillo es reemplazar toda la función add_mysql_database del func/db.sh por la siguiente función modificada, se cambiaron muchas lineas así que reemplazarla es más sencillo:

add_mysql_database() {
    mysql_connect $host

    query="CREATE DATABASE \`$database\` CHARACTER SET $charset"
    mysql_query "$query" > /dev/null

   if [ "$(echo $mysql_ver |cut -d '.' -f1)" -eq 8 ]; then
        query="CREATE USER IF NOT EXISTS '$dbuser'@'localhost' IDENTIFIED BY '$dbpass';"
        mysql_query "$query" > /dev/null
        query="CREATE USER IF NOT EXISTS '$dbuser'@'%' IDENTIFIED BY '$dbpass';"
        mysql_query "$query" > /dev/null
        query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`"
        query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost"
        mysql_query "$query" > /dev/null
    else
    query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`
        IDENTIFIED BY '$dbpass'"
    mysql_query "$query" > /dev/null

    query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost
        IDENTIFIED BY '$dbpass'"
    mysql_query "$query" > /dev/null
    fi  
     if [ "$(echo $mysql_ver |cut -d '.' -f2)" -ge 7 ] || [ "$(echo $mysql_ver |cut -d '.' -f1)" -eq 8 ]; then
        md5=$(mysql_query "SHOW CREATE USER \`$dbuser\`" 2>/dev/null)
        md5=$(echo "$md5" |grep password |cut -f8 -d \')
    else
        md5=$(mysql_query "SHOW GRANTS FOR \`$dbuser\`" 2>/dev/null)
        md5=$(echo "$md5" |grep PASSW|tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
    fi
}

Eso es todo, lo mismo habría que hacer con el otro parche si no no se podrán restaurar backups 😛


Utilizamos cookies propias y de terceros para mostrarle publicidad relacionada con sus preferencias según su navegación. Si continua navegando consideramos que acepta el uso de cookies.
Seguir Navegando
x