Installing MySQL from the CLI
Install MySQL on Linux with the following commands, you will need to be root
export DB_PWD=secret
export installDir=/opt
export dataDir=$installDir/mysql/data
export binDir=$installDir/mysql/bin
declare BIT_APP='bitnami-mysql-8.0.15-0-linux-x64-installer.run'
cd /tmp
wget https://downloads.bitnami.com/files/stacks/mysql/8.0.15-0/$BIT_APP
chmod +x $BIT_APP # makes file executable
$BIT_APP --mode text # install from command line
Now review the installation
# MySQL version with the command
$installDir/mysql/bin/mysqladmin --version
$installDir/mysql/bin/mysqld --version
cat $installDir/mysql/my.cnf # The MySQL configuration file
cat $installDir/mysql/bitnami/my.cnf # Some configuration overrides
# The MySQL .pid file allows other programs to find out the PID of a running script.
cat $installDir/mysql/data/mysqld.pid
# MySQL clients can connect to the server in the local machine using an Linux socket file
cat $installDir/mysql/tmp/mysql.sock
# You can connect to the MySQL database from the same computer where it is installed with the mysql client tool.
cd $binDir
./mysql -u root -p$DB_PWD
# To back up all the databases, create a dump file using the mysqldump tool.
mysqldump -A -u root -p$DB_PWD > backup.sql
# Once you have the backup file, you can restore it with a command like the one below:
mysql -u root -p$DB_PWD < backup.sql
# The main log file is created at
tail -n 100 $installDir/mysql/data/mysqld.log
# Start the MySQL database with the following command:
mysqld --skip-grant-tables --user=mysql --pid-file=$dataDir/mysqld.pid
--skip-external-locking --port=3306 --sock=$installDir/bitnami/mysql/tmp/mysql.sock
# Open a new console and try to log in the database:
mysql -u root -p
# In this case, the error was related to the mysql.user table. Run these commands:
mysql> use mysql;
mysql> repair table user;
mysql> check table user;
mysql> exit;
### How To Secure Your Server?
# Once you have created a new database and user for your application, connect to your MySQL server and follow these recommendations:
# Remove anonymous users:
mysql> DELETE FROM mysql.user WHERE User='';
# Remove the test database and access to it:
mysql> DROP DATABASE test;
mysql> DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';
# Disallow root login remotely:
mysql> DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1');
# Do not forget to reload the privileges tables to apply the changes:
mysql> FLUSH PRIVILEGES;
# Change your root user password.
# If you do not need remote access, uncomment the line
#bind-address=127.0.0.1
in the MySQL configuration file to only listen for connections on the local machine. Restart the server once done.
Written on April 1, 2019