-
-
Save sheikhwaqas/9088872 to your computer and use it in GitHub Desktop.
# 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 |
mysql_secure_installation
asks for root pass.
@mcampbell: Thanks
@joprice: if you notice on line 17 & 18, we're setting the default mysql root password to "root" so when mysql_secure_installation asks for root password you can simply type in root and hit return. That will proceed further.
If you have to type "root" and enter then it's not "non-interactive" anymore... Nice snippet anyway though.
Great! Also works with MariaDB 5.5 on Ubuntu (lines 16 and 17). Thanks a lot!
Where do I get mysql_secure_installation script?
Found it. It is in /usr/bin/mysql_secure_installation. It is already in the path.
Will the password be 'root'
or blank
if I do not use debconf-set-selections
?
@itsazzad it will asking you for a password when installing mysql_secure_installation
Apparently mysq_secure_installation commands can be rolled into your own script to avoid entering anything. I combined this script with the reference below and it works cleanly for me.
how to put a variable to give root password? I tried using $password
, $(password)
, $(echo $password)
, ($password)
, "'"$password"'"
but no any luck :/
In Ubuntu 16.04 particularly with MySQL 5.7 it was getting hard to set a root password directly by editing the password field.
I had to change the root password later in my LAMP + Wordpress auto install script
You can check the MySQL unattended installation for Ubuntu 16 if you are facing problems under my repo
echo -e "root\nn\nY\nY\nY\nY\n" | mysql_secure_installation
I think this will solve the non-interactive part of the script.
You can do it like this:
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y percona-xtradb-cluster-server-5.7
It seems you need to set to root password in 5.7 (that didn't seem needed in 5.6).
You can find some info on how to script that here:
https://dba.stackexchange.com/questions/127537/setting-root-password-in-fresh-mysql-5-7-installation
you can use:
mysqld --initialize-insecure --user=mysql
then login using
mysql -u root --skip-password
and set password by running these two queries
GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY 'changeme' WITH GRANT OPTION;
FLUSH PRIVILEGES;
RUN echo "mysql-server-5.7 mysql-server/root_password password root" | debconf-set-selections
RUN echo "mysql-server-5.7 mysql-server/root_password_again password root" | debconf-set-selections
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y mysql-server-5.7
Worked for me on Dockerfile
@saklyayoub Could you provide the complete docker file for with the mentioned configuration.
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;"
`
hey, any example for installing mysql8 Non-Interactive Installation over ubuntu 18.8. ??
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.
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 :).
This is brilliant. Seriously. Saved me tons of time.