Skip to content

Instantly share code, notes, and snippets.

@sheikhwaqas
Last active September 6, 2023 15:59
Show Gist options
  • Save sheikhwaqas/9088872 to your computer and use it in GitHub Desktop.
Save sheikhwaqas/9088872 to your computer and use it in GitHub Desktop.
Install MySQL Server on Ubuntu (Non-Interactive Installation)
# Download and Install the Latest Updates for the OS
apt-get update && apt-get upgrade -y
# Set the Server Timezone to CST
echo "America/Chicago" > /etc/timezone
dpkg-reconfigure -f noninteractive tzdata
# Enable Ubuntu Firewall and allow SSH & MySQL Ports
ufw enable
ufw allow 22
ufw allow 3306
# Install essential packages
apt-get -y install zsh htop
# Install MySQL Server in a Non-Interactive mode. Default root password will be "root"
echo "mysql-server-5.6 mysql-server/root_password password root" | sudo debconf-set-selections
echo "mysql-server-5.6 mysql-server/root_password_again password root" | sudo debconf-set-selections
apt-get -y install mysql-server-5.6
# Run the MySQL Secure Installation wizard
mysql_secure_installation
sed -i 's/127\.0\.0\.1/0\.0\.0\.0/g' /etc/mysql/my.cnf
mysql -uroot -p -e 'USE mysql; UPDATE `user` SET `Host`="%" WHERE `User`="root" AND `Host`="localhost"; DELETE FROM `user` WHERE `Host` != "%" AND `User`="root"; FLUSH PRIVILEGES;'
service mysql restart
@29aparna
Copy link

@saklyayoub Could you provide the complete docker file for with the mentioned configuration.

@saklyayoub
Copy link

saklyayoub commented Aug 29, 2018

@Kira9204
Copy link

Kira9204 commented Jan 4, 2019

I couldn't get it to work unless i added "usermod -d"
My dockerfile (remember to add \):
`
RUN echo "Installing MYSQL..."
RUN { \
echo "mysql-server mysql-server/root_password password root" ; \
echo "mysql-server mysql-server/root_password_again password root" ; \
} | debconf-set-selections \
&& apt-get update && apt-get install -y mysql-server \
&& sed -i 's/127.0.0.1/0.0.0.0/g' /etc/mysql/mysql.conf.d/mysqld.cnf \
&& chown -R mysql:mysql /var/lib/mysql \
&& usermod -d /var/lib/mysql mysql \
&& /etc/init.d/mysql restart

COPY ./docker_files/mysql_restart.sh /root/mysql_restart.sh
RUN /root/mysql_restart.sh \
&& mysql --user=root --password=root --execute="CREATE USER 'admin'@'%' IDENTIFIED BY 'admin';" \
&& mysql --user=root --password=root --execute="CREATE DATABASE testdb CHARACTER SET utf8 COLLATE utf8_bin;" \
&& mysql --user=root --password=root --execute="GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,ALTER,INDEX on testdb.* TO 'admin'@'%' IDENTIFIED BY 'admin';" \
&& mysql --user=root --password=root --execute="flush privileges;"
`

@fcarrero
Copy link

hey, any example for installing mysql8 Non-Interactive Installation over ubuntu 18.8. ??

@grzegorznowak
Copy link

hey, any example for installing mysql8 Non-Interactive Installation over ubuntu 18.8. ??

Yeah we've been looking for that as well @fcarrero and fortunately there's a sample that almost works out of the box, that I found literally yesterday evening and have folded it out a bit more since then:

https://geert.vanderkelen.org/2018/mysql8-unattended-dpkg/

For our molecule automation we've assembled Ubuntu Bionic working-confirmed version of that into:

https://github.com/spottmedia/shareable-ansible-toolkit/tree/master

And for completeness the crucial bit that did make it go over the line on Ubuntu was proper GPG key registration that the original wasn't coming through with (probably due to software-abrasive passage of time), see:

https://github.com/spottmedia/shareable-ansible-toolkit/blob/master/roles/dev-mysql8/tasks/main.yml

the rest is smart usage of debconf that Geert figured out there.

@sheikhwaqas
Copy link
Author

hey, any example for installing mysql8 Non-Interactive Installation over ubuntu 18.8. ??

Hey @fcarrero, I haven't tested MySQL 8 with Ubuntu 18.8 yet. But as soon as I do, there will definitely be either a new gist coming or will update this to take care of both installations :).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment